diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 139d6c2..f79a123 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,6 +23,12 @@ jobs: with: fetch-depth: 0 + - name: Setup Dotenv + run: | + echo "${{ secrets.DOTENV_APP_WEB_DEV }}" > projects/app-web/.env.development.local + echo "${{ secrets.DOTENV_APP_WEB_E2E }}" > projects/app-web-e2e/.env + echo "${{ secrets.DOTENV_DB_POSTGRES }}" > projects/db-postgres/.env.production + - name: Setup Node uses: actions/setup-node@v3 with: @@ -61,6 +67,13 @@ jobs: - name: E2E Tests run: yarn nx affected -t e2e + - name: Upload Videos Of Failed E2E + uses: actions/upload-artifact@v4 + if: failure() + with: + name: playwright-results + path: projects/app-web-e2e/.test-results + - name: Record Affected Projects id: record-affected-projects if: ${{ github.ref_name == 'main' }} @@ -76,9 +89,7 @@ jobs: - name: Deploy Postgres Migrations if: ${{ github.ref_name == 'main' && contains(steps.record-affected-projects.outputs.affected-projects, 'db-postgres') }} - run: | - echo "${{secrets.DOTENV_DB_POSTGRES }}" > projects/db-postgres/.env.production - yarn postgres:migrations-run:prod + run: yarn postgres:migrations-run:prod - name: Deploy API Service if: ${{ github.ref_name == 'main' && contains(steps.record-affected-projects.outputs.affected-projects, 'service-api') }} diff --git a/.gitignore b/.gitignore index 2233c7d..c6809fe 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,6 @@ node_modules # misc /.sass-cache /connect.lock -/coverage /libpeerconnection.log npm-debug.log yarn-error.log @@ -36,9 +35,14 @@ testem.log /typings *.timestamp*.mjs +# Test Output +/coverage +**/.test-results + # System Files .DS_Store Thumbs.db +*Zone.Identifier # caches .cache @@ -47,3 +51,5 @@ Thumbs.db # secrets projects/db-postgres/.env.production projects/service-*/.env.production +projects/app-web-e2e/.env +**/.env*.local diff --git a/.husky/pre-commit b/.husky/pre-commit index ad9c69f..f99738b 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1 @@ -yarn dlx lint-staged --concurrent false --relative \ No newline at end of file +yarn dlx lint-staged --concurrent false --relative --allow-empty \ No newline at end of file diff --git a/.pnp.cjs b/.pnp.cjs index acdae90..0bed930 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -10,7 +10,7 @@ const RAW_RUNTIME_STATE = ],\ "dependencyTreeRoots": [\ {\ - "name": "@campaign/source",\ + "name": "@chrononomicon/source",\ "reference": "workspace:."\ },\ {\ @@ -21,7 +21,7 @@ const RAW_RUNTIME_STATE = "enableTopLevelFallback": true,\ "ignorePatternData": "(^(?:\\\\.yarn\\\\/sdks(?:\\\\/(?!\\\\.{1,2}(?:\\\\/|$))(?:(?:(?!(?:^|\\\\/)\\\\.{1,2}(?:\\\\/|$)).)*?)|$))$)",\ "fallbackExclusionList": [\ - ["@campaign/source", ["workspace:."]],\ + ["@chrononomicon/source", ["workspace:."]],\ ["app-web", ["workspace:projects/app-web"]]\ ],\ "fallbackPool": [\ @@ -31,97 +31,115 @@ const RAW_RUNTIME_STATE = [null, {\ "packageLocation": "./",\ "packageDependencies": [\ - ["@0no-co/graphqlsp", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.11.0"],\ + ["@0no-co/graphqlsp", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.11.0"],\ ["@commitlint/cli", "npm:19.2.1"],\ ["@dotenvx/dotenvx", "npm:0.35.1"],\ ["@eslint/js", "npm:9.0.0"],\ - ["@graphql-codegen/cli", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.0.2"],\ - ["@graphql-codegen/client-preset", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.2.5"],\ - ["@graphql-codegen/schema-ast", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.0.2"],\ - ["@graphql-tools/executor-http", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.0.9"],\ - ["@graphql-typed-document-node/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.2.0"],\ + ["@graphql-codegen/cli", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.0.2"],\ + ["@graphql-codegen/client-preset", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.2.5"],\ + ["@graphql-codegen/schema-ast", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.2"],\ + ["@graphql-tools/executor-http", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.0.9"],\ + ["@graphql-typed-document-node/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.2.0"],\ ["@hono/node-server", "npm:1.10.0"],\ - ["@nx/devkit", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ - ["@nx/esbuild", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["@mswjs/data", "npm:0.16.1"],\ + ["@nx/devkit", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ + ["@nx/esbuild", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["@nx/eslint", "virtual:41cfb0d93d8f1f80cb47f3ad08355c786f8049206e268f2d7164dc0f5fe99e7f8c9c0fed5b3dd539eb6429bc94158ac9084e8291ac1c7be0f1f25182ce597da3#npm:18.3.3"],\ ["@nx/js", "virtual:e56b832509978bc5e240ed4a65f2ed0eac855b9539d5a4c6ad2d287c44f0a75c152be27aaad194f462e83c9da129e838ae845e1c68b60d265bc3121e2e3a76c2#npm:18.3.3"],\ ["@nx/node", "npm:18.3.3"],\ - ["@nx/playwright", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["@nx/playwright", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["@nx/react", "npm:18.3.3"],\ - ["@nx/vite", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["@nx/vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["@nx/web", "npm:18.3.3"],\ ["@nx/workspace", "npm:18.3.3"],\ + ["@paralleldrive/cuid2", "npm:2.2.2"],\ ["@parcel/watcher", "npm:2.4.1"],\ ["@playwright/test", "npm:1.43.0"],\ - ["@pothos/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.41.1"],\ - ["@remix-run/dev", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@remix-run/node", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@remix-run/react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ + ["@pothos/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.41.1"],\ + ["@remix-run/dev", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/node", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ ["@remix-run/serve", "npm:2.9.1"],\ - ["@remix-run/testing", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@swc-node/register", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.9.0"],\ - ["@swc/cli", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.3.12"],\ - ["@swc/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.4.13"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/testing", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@swc-node/register", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.9.0"],\ + ["@swc/cli", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.3.12"],\ + ["@swc/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.4.13"],\ ["@swc/helpers", "npm:0.5.8"],\ ["@testcontainers/postgresql", "npm:10.9.0"],\ - ["@testing-library/jest-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.4.2"],\ - ["@testing-library/react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:14.3.0"],\ + ["@testing-library/dom", "npm:10.0.0"],\ + ["@testing-library/jest-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.4.2"],\ + ["@testing-library/react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:14.3.0"],\ + ["@testing-library/user-event", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:14.5.2"],\ ["@types/jsonwebtoken", "npm:9.0.6"],\ ["@types/node", "npm:20.12.7"],\ ["@types/react", "npm:18.2.75"],\ ["@types/react-dom", "npm:18.2.24"],\ ["@types/react-is", "npm:18.2.4"],\ - ["@types/styled-components", "npm:5.1.34"],\ - ["@typescript-eslint/eslint-plugin", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0"],\ - ["@typescript-eslint/parser", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0"],\ - ["@typescript-eslint/utils", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.7.1"],\ - ["@vitejs/plugin-react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.2.1"],\ - ["@vitest/coverage-v8", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"],\ - ["@vitest/ui", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"],\ + ["@typescript-eslint/eslint-plugin", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0"],\ + ["@typescript-eslint/parser", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0"],\ + ["@typescript-eslint/utils", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.7.1"],\ + ["@vanilla-extract/css", "npm:1.15.1"],\ + ["@vanilla-extract/sprinkles", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.6.1"],\ + ["@vanilla-extract/vite-plugin", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.9"],\ + ["@vitejs/plugin-react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.2.1"],\ + ["@vitest/coverage-v8", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"],\ + ["@vitest/expect", "npm:1.5.2"],\ + ["@vitest/ui", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"],\ ["auth0", "npm:4.3.1"],\ - ["cuid", "npm:3.0.0"],\ ["drizzle-kit", "npm:0.20.17"],\ - ["drizzle-orm", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.30.9"],\ + ["drizzle-orm", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.30.9"],\ ["envalid", "npm:8.0.0"],\ ["esbuild", "npm:0.20.2"],\ ["eslint", "npm:9.0.0"],\ - ["eslint-config-prettier", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:9.1.0"],\ - ["eslint-plugin-drizzle", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.2.3"],\ - ["eslint-plugin-jsx-a11y", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.8.0"],\ - ["eslint-plugin-playwright", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.6.0"],\ - ["eslint-plugin-react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.34.1"],\ - ["eslint-plugin-react-hooks", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.6.0"],\ - ["eslint-plugin-unicorn", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:52.0.0"],\ + ["eslint-config-prettier", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:9.1.0"],\ + ["eslint-plugin-drizzle", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.2.3"],\ + ["eslint-plugin-jsx-a11y", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.8.0"],\ + ["eslint-plugin-playwright", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.6.0"],\ + ["eslint-plugin-react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.34.1"],\ + ["eslint-plugin-react-hooks", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.6.0"],\ + ["eslint-plugin-unicorn", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:52.0.0"],\ + ["got", "npm:14.2.1"],\ ["graphql", "npm:16.8.1"],\ - ["graphql-request", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.1.0"],\ - ["graphql-yoga", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.3.0"],\ + ["graphql-request", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.1.0"],\ + ["graphql-scalars", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.23.0"],\ + ["graphql-transform-scalars", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.2.1"],\ + ["graphql-yoga", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.3.0"],\ ["happy-dom", "npm:14.7.1"],\ ["hono", "npm:4.2.4"],\ ["husky", "npm:9.0.11"],\ ["isbot", "npm:4.4.0"],\ - ["jest-extended", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.0.2"],\ + ["jest-extended", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.2"],\ ["jsonwebtoken", "npm:9.0.2"],\ ["jwks-rsa", "npm:3.1.0"],\ + ["jwt-decode", "npm:4.0.0"],\ ["lint-staged", "npm:15.2.2"],\ - ["mock-jwks", "npm:3.1.0"],\ - ["msw", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.2.14"],\ - ["nx", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["mock-jwks", "patch:mock-jwks@npm%3A3.1.0#~/.yarn/patches/mock-jwks-npm-3.1.0-131e3bbc29.patch::version=3.1.0&hash=3d08e1"],\ + ["msw", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.2.14"],\ + ["node-mocks-http", "npm:1.14.1"],\ + ["nx", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["playwright", "npm:1.43.0"],\ ["postgres", "npm:3.4.4"],\ ["prettier", "npm:3.2.5"],\ ["react", "npm:18.2.0"],\ - ["react-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.2.0"],\ + ["react-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.2.0"],\ ["react-is", "npm:18.2.0"],\ - ["react-router-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.22.3"],\ - ["remix-hono", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.0.16"],\ - ["styled-components", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.1.8"],\ + ["react-router-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.22.3"],\ + ["remix-auth", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.6.0"],\ + ["remix-auth-auth0", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.10.0"],\ + ["remix-auth-oauth2", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.11.2"],\ + ["remix-flat-routes", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.6.4"],\ + ["remix-hono", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.0.16"],\ ["tiny-invariant", "npm:1.3.3"],\ + ["tsconfig-paths", "npm:4.2.0"],\ ["tslib", "npm:2.6.2"],\ ["tsx", "npm:4.7.3"],\ + ["type-fest", "npm:4.17.0"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"],\ - ["typescript-eslint", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0"],\ - ["vite", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.2.10"],\ - ["vitest", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"]\ + ["typescript-eslint", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0"],\ + ["uuid", "npm:9.0.1"],\ + ["vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.2.10"],\ + ["vitest", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"]\ ],\ "linkType": "SOFT"\ }]\ @@ -134,10 +152,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:29e2dde33de365ed70ad5476300ee2f7dd262543ae374ad2c8fc1978064be0ceb632fb0b0904c45a0d669ff44a4e3645ba1c059b641ed272870e057ae31762c6#npm:1.0.7", {\ - "packageLocation": "./.yarn/__virtual__/@0no-co-graphql.web-virtual-c50b7cada6/0/cache/@0no-co-graphql.web-npm-1.0.7-62f6f910ff-4744a6c327.zip/node_modules/@0no-co/graphql.web/",\ + ["virtual:06011aca00a4d3cca0f8372c47a44270dab31a64f0a809bbdb0caa9b6ade788b35266e64332cb8a9bf8f186f4614ad2abcb3e0182f47341485955e33f1fe5a34#npm:1.0.7", {\ + "packageLocation": "./.yarn/__virtual__/@0no-co-graphql.web-virtual-ff67ea769f/0/cache/@0no-co-graphql.web-npm-1.0.7-62f6f910ff-4744a6c327.zip/node_modules/@0no-co/graphql.web/",\ "packageDependencies": [\ - ["@0no-co/graphql.web", "virtual:29e2dde33de365ed70ad5476300ee2f7dd262543ae374ad2c8fc1978064be0ceb632fb0b0904c45a0d669ff44a4e3645ba1c059b641ed272870e057ae31762c6#npm:1.0.7"],\ + ["@0no-co/graphql.web", "virtual:06011aca00a4d3cca0f8372c47a44270dab31a64f0a809bbdb0caa9b6ade788b35266e64332cb8a9bf8f186f4614ad2abcb3e0182f47341485955e33f1fe5a34#npm:1.0.7"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"]\ ],\ @@ -156,11 +174,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.11.0", {\ - "packageLocation": "./.yarn/__virtual__/@0no-co-graphqlsp-virtual-b640dd29b1/0/cache/@0no-co-graphqlsp-npm-1.11.0-da7a96e094-1e1975eeee.zip/node_modules/@0no-co/graphqlsp/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.11.0", {\ + "packageLocation": "./.yarn/__virtual__/@0no-co-graphqlsp-virtual-78f4303d1b/0/cache/@0no-co-graphqlsp-npm-1.11.0-da7a96e094-1e1975eeee.zip/node_modules/@0no-co/graphqlsp/",\ "packageDependencies": [\ - ["@0no-co/graphqlsp", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.11.0"],\ - ["@gql.tada/internal", "virtual:b640dd29b1512d909d8c3b1c968dd27d81e242199af186290d2fbd2464b946edb7d419a14cfee4c91f793206e278e9f143a178ada8f6f994643c01022488222d#npm:0.1.3"],\ + ["@0no-co/graphqlsp", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.11.0"],\ + ["@gql.tada/internal", "virtual:78f4303d1bf520f5a33067425fb4c12047ec8f287e1d7055cf9b3227b4e889e31d8668ebc34f59573277cf69c41ecfe2b44a9524e4c29d899a954e3a9e9f74a2#npm:0.1.3"],\ ["@types/typescript", null],\ ["graphql", "npm:16.8.1"],\ ["node-fetch", "virtual:5e637fd56a9dc88fac941d74d36ae62bb174e2a095814480a8c5aa84455b10d8b3b88a3aeb7396ee63088f87b724c0c5a23604be8cd13b3bb36bcecbdbb2e3f9#npm:2.7.0"],\ @@ -210,10 +228,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:315fe8e03945d19505b167996c868c8870a902fe305a47be5835487f39039d589c4770134b486f808ced9a250896d983b334b6b6c679bee786a8f7f0ccd83e02#npm:12.0.0", {\ - "packageLocation": "./.yarn/__virtual__/@ardatan-relay-compiler-virtual-da96a08462/0/cache/@ardatan-relay-compiler-npm-12.0.0-03a59496e5-7207d65dd3.zip/node_modules/@ardatan/relay-compiler/",\ + ["virtual:064d07955e4e03c3efa3c2ad988b0be66aa0b1ba9384587674ab7ebdd9f9ceae87ed72474c463b678c3732be0ba0902ec3d07625e73cfca16479f91c240068ea#npm:12.0.0", {\ + "packageLocation": "./.yarn/__virtual__/@ardatan-relay-compiler-virtual-e03de1ddc8/0/cache/@ardatan-relay-compiler-npm-12.0.0-03a59496e5-7207d65dd3.zip/node_modules/@ardatan/relay-compiler/",\ "packageDependencies": [\ - ["@ardatan/relay-compiler", "virtual:315fe8e03945d19505b167996c868c8870a902fe305a47be5835487f39039d589c4770134b486f808ced9a250896d983b334b6b6c679bee786a8f7f0ccd83e02#npm:12.0.0"],\ + ["@ardatan/relay-compiler", "virtual:064d07955e4e03c3efa3c2ad988b0be66aa0b1ba9384587674ab7ebdd9f9ceae87ed72474c463b678c3732be0ba0902ec3d07625e73cfca16479f91c240068ea#npm:12.0.0"],\ ["@babel/core", "npm:7.24.4"],\ ["@babel/generator", "npm:7.24.4"],\ ["@babel/parser", "npm:7.24.4"],\ @@ -221,7 +239,7 @@ const RAW_RUNTIME_STATE = ["@babel/traverse", "npm:7.24.1"],\ ["@babel/types", "npm:7.24.0"],\ ["@types/graphql", null],\ - ["babel-preset-fbjs", "virtual:da96a084620a2dfbbfaea461ea0d0da46cee06a73a577b0e285ccf2f692da2645f525296701066882505006e455e2fbd953d3db669614dc16a04da02307d03f9#npm:3.4.0"],\ + ["babel-preset-fbjs", "virtual:e03de1ddc8d9a511420ddbc4d277bff0cc48833158d8989551de041825e308d272e20b3398be69dfb169003eae112e4ddb802f49abb0af3e64af8a2bfd0cf105#npm:3.4.0"],\ ["chalk", "npm:4.1.2"],\ ["fb-watchman", "npm:2.0.2"],\ ["fbjs", "npm:3.0.5"],\ @@ -287,7 +305,29 @@ const RAW_RUNTIME_STATE = ["@babel/traverse", "npm:7.24.1"],\ ["@babel/types", "npm:7.24.0"],\ ["convert-source-map", "npm:2.0.0"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ + ["gensync", "npm:1.0.0-beta.2"],\ + ["json5", "npm:2.2.3"],\ + ["semver", "npm:6.3.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.24.5", {\ + "packageLocation": "./.yarn/cache/@babel-core-npm-7.24.5-b52405e538-e26ba810a7.zip/node_modules/@babel/core/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.24.5"],\ + ["@ampproject/remapping", "npm:2.3.0"],\ + ["@babel/code-frame", "npm:7.24.2"],\ + ["@babel/generator", "npm:7.24.5"],\ + ["@babel/helper-compilation-targets", "npm:7.23.6"],\ + ["@babel/helper-module-transforms", "virtual:b52405e538363aed5784f008dc6317f7250f5609227c41f9833e4fd172d244216afe65436375aed1a5caf5881275885df64fb97fccd50e9ed8db36ae40b681c8#npm:7.24.5"],\ + ["@babel/helpers", "npm:7.24.5"],\ + ["@babel/parser", "npm:7.24.5"],\ + ["@babel/template", "npm:7.24.0"],\ + ["@babel/traverse", "npm:7.24.5"],\ + ["@babel/types", "npm:7.24.5"],\ + ["convert-source-map", "npm:2.0.0"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["gensync", "npm:1.0.0-beta.2"],\ ["json5", "npm:2.2.3"],\ ["semver", "npm:6.3.1"]\ @@ -306,6 +346,17 @@ const RAW_RUNTIME_STATE = ["jsesc", "npm:2.5.2"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.24.5", {\ + "packageLocation": "./.yarn/cache/@babel-generator-npm-7.24.5-37b51e511b-0d64f88015.zip/node_modules/@babel/generator/",\ + "packageDependencies": [\ + ["@babel/generator", "npm:7.24.5"],\ + ["@babel/types", "npm:7.24.5"],\ + ["@jridgewell/gen-mapping", "npm:0.3.5"],\ + ["@jridgewell/trace-mapping", "npm:0.3.25"],\ + ["jsesc", "npm:2.5.2"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@babel/helper-annotate-as-pure", [\ @@ -414,7 +465,7 @@ const RAW_RUNTIME_STATE = ["@babel/helper-compilation-targets", "npm:7.23.6"],\ ["@babel/helper-plugin-utils", "npm:7.24.0"],\ ["@types/babel__core", null],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["lodash.debounce", "npm:4.0.8"],\ ["resolve", "patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d"]\ ],\ @@ -483,6 +534,13 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ + ["npm:7.24.5", {\ + "packageLocation": "./.yarn/cache/@babel-helper-module-transforms-npm-7.24.5-c2288b45c7-6e77d72f62.zip/node_modules/@babel/helper-module-transforms/",\ + "packageDependencies": [\ + ["@babel/helper-module-transforms", "npm:7.24.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ ["virtual:5e34d46aa74c70cb7efddf34af306cce3c5a77fafdbeb34016491b6c28ff1bafaca3f3ec18f3da9ee08c42afd1ceb5f551451330c94717f204e27e3872331d2f#npm:7.23.3", {\ "packageLocation": "./.yarn/__virtual__/@babel-helper-module-transforms-virtual-e7b48542e6/0/cache/@babel-helper-module-transforms-npm-7.23.3-69078a931c-211e1399d0.zip/node_modules/@babel/helper-module-transforms/",\ "packageDependencies": [\ @@ -500,6 +558,24 @@ const RAW_RUNTIME_STATE = "@types/babel__core"\ ],\ "linkType": "HARD"\ + }],\ + ["virtual:b52405e538363aed5784f008dc6317f7250f5609227c41f9833e4fd172d244216afe65436375aed1a5caf5881275885df64fb97fccd50e9ed8db36ae40b681c8#npm:7.24.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-module-transforms-virtual-9e5d5d8716/0/cache/@babel-helper-module-transforms-npm-7.24.5-c2288b45c7-6e77d72f62.zip/node_modules/@babel/helper-module-transforms/",\ + "packageDependencies": [\ + ["@babel/helper-module-transforms", "virtual:b52405e538363aed5784f008dc6317f7250f5609227c41f9833e4fd172d244216afe65436375aed1a5caf5881275885df64fb97fccd50e9ed8db36ae40b681c8#npm:7.24.5"],\ + ["@babel/core", "npm:7.24.5"],\ + ["@babel/helper-environment-visitor", "npm:7.22.20"],\ + ["@babel/helper-module-imports", "npm:7.24.3"],\ + ["@babel/helper-simple-access", "npm:7.24.5"],\ + ["@babel/helper-split-export-declaration", "npm:7.24.5"],\ + ["@babel/helper-validator-identifier", "npm:7.24.5"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@babel/helper-optimise-call-expression", [\ @@ -579,6 +655,14 @@ const RAW_RUNTIME_STATE = ["@babel/types", "npm:7.24.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.24.5", {\ + "packageLocation": "./.yarn/cache/@babel-helper-simple-access-npm-7.24.5-9de60df3e9-d96a0ab790.zip/node_modules/@babel/helper-simple-access/",\ + "packageDependencies": [\ + ["@babel/helper-simple-access", "npm:7.24.5"],\ + ["@babel/types", "npm:7.24.5"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@babel/helper-skip-transparent-expression-wrappers", [\ @@ -599,6 +683,14 @@ const RAW_RUNTIME_STATE = ["@babel/types", "npm:7.24.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.24.5", {\ + "packageLocation": "./.yarn/cache/@babel-helper-split-export-declaration-npm-7.24.5-3459ebfe18-d7a812d67d.zip/node_modules/@babel/helper-split-export-declaration/",\ + "packageDependencies": [\ + ["@babel/helper-split-export-declaration", "npm:7.24.5"],\ + ["@babel/types", "npm:7.24.5"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@babel/helper-string-parser", [\ @@ -617,6 +709,13 @@ const RAW_RUNTIME_STATE = ["@babel/helper-validator-identifier", "npm:7.22.20"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.24.5", {\ + "packageLocation": "./.yarn/cache/@babel-helper-validator-identifier-npm-7.24.5-d1938535fe-05f957229d.zip/node_modules/@babel/helper-validator-identifier/",\ + "packageDependencies": [\ + ["@babel/helper-validator-identifier", "npm:7.24.5"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@babel/helper-validator-option", [\ @@ -650,6 +749,16 @@ const RAW_RUNTIME_STATE = ["@babel/types", "npm:7.24.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.24.5", {\ + "packageLocation": "./.yarn/cache/@babel-helpers-npm-7.24.5-f70b14a27f-0630b0223c.zip/node_modules/@babel/helpers/",\ + "packageDependencies": [\ + ["@babel/helpers", "npm:7.24.5"],\ + ["@babel/template", "npm:7.24.0"],\ + ["@babel/traverse", "npm:7.24.5"],\ + ["@babel/types", "npm:7.24.5"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@babel/highlight", [\ @@ -673,6 +782,14 @@ const RAW_RUNTIME_STATE = ["@babel/types", "npm:7.24.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.24.5", {\ + "packageLocation": "./.yarn/cache/@babel-parser-npm-7.24.5-a19c3b8c3b-8333a6ad53.zip/node_modules/@babel/parser/",\ + "packageDependencies": [\ + ["@babel/parser", "npm:7.24.5"],\ + ["@babel/types", "npm:7.24.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@babel/plugin-bugfix-firefox-class-in-computed-class-key", [\ @@ -779,10 +896,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.18.6", {\ - "packageLocation": "./.yarn/__virtual__/@babel-plugin-proposal-class-properties-virtual-6bbfed7921/0/cache/@babel-plugin-proposal-class-properties-npm-7.18.6-5f5c2d730f-d5172ac6c9.zip/node_modules/@babel/plugin-proposal-class-properties/",\ + ["virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.18.6", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-proposal-class-properties-virtual-0b2b089d86/0/cache/@babel-plugin-proposal-class-properties-npm-7.18.6-5f5c2d730f-d5172ac6c9.zip/node_modules/@babel/plugin-proposal-class-properties/",\ "packageDependencies": [\ - ["@babel/plugin-proposal-class-properties", "virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.18.6"],\ + ["@babel/plugin-proposal-class-properties", "virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.18.6"],\ ["@babel/core", "npm:7.24.4"],\ ["@babel/helper-create-class-features-plugin", "virtual:3f24584046827d5645d857ac25ce50559f6cb927a4487c719f868788b4ce30ca507a3bb6838888bc67c0d8fe0393b4c3cfb5dbd051d340795afdd9f38aea866f#npm:7.24.4"],\ ["@babel/helper-plugin-utils", "npm:7.24.0"],\ @@ -828,10 +945,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.20.7", {\ - "packageLocation": "./.yarn/__virtual__/@babel-plugin-proposal-object-rest-spread-virtual-105a97023c/0/cache/@babel-plugin-proposal-object-rest-spread-npm-7.20.7-0bc581aa09-b9818749bb.zip/node_modules/@babel/plugin-proposal-object-rest-spread/",\ + ["virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.20.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-proposal-object-rest-spread-virtual-58e4e33c18/0/cache/@babel-plugin-proposal-object-rest-spread-npm-7.20.7-0bc581aa09-b9818749bb.zip/node_modules/@babel/plugin-proposal-object-rest-spread/",\ "packageDependencies": [\ - ["@babel/plugin-proposal-object-rest-spread", "virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.20.7"],\ + ["@babel/plugin-proposal-object-rest-spread", "virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.20.7"],\ ["@babel/compat-data", "npm:7.24.4"],\ ["@babel/core", "npm:7.24.4"],\ ["@babel/helper-compilation-targets", "npm:7.23.6"],\ @@ -1080,10 +1197,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.24.1", {\ - "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-flow-virtual-2074c97598/0/cache/@babel-plugin-syntax-flow-npm-7.24.1-8066093a51-618de04360.zip/node_modules/@babel/plugin-syntax-flow/",\ + ["virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.24.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-flow-virtual-1eaa8041ff/0/cache/@babel-plugin-syntax-flow-npm-7.24.1-8066093a51-618de04360.zip/node_modules/@babel/plugin-syntax-flow/",\ "packageDependencies": [\ - ["@babel/plugin-syntax-flow", "virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.24.1"],\ + ["@babel/plugin-syntax-flow", "virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.24.1"],\ ["@babel/core", "npm:7.24.4"],\ ["@babel/helper-plugin-utils", "npm:7.24.0"],\ ["@types/babel__core", null]\ @@ -1541,6 +1658,20 @@ const RAW_RUNTIME_STATE = "@types/babel__core"\ ],\ "linkType": "HARD"\ + }],\ + ["virtual:f9483072b2353c1fbd838417066556018bdd2c3c9dc66c6cefdbefdbe6c382cfbb0a4c3b83ce4906c7fcb73d4a8b3d536837e9cf85c7902cf57216360d194b8e#npm:7.24.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-typescript-virtual-7ecd3e6c99/0/cache/@babel-plugin-syntax-typescript-npm-7.24.1-d4119799eb-7a81e277dc.zip/node_modules/@babel/plugin-syntax-typescript/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-typescript", "virtual:f9483072b2353c1fbd838417066556018bdd2c3c9dc66c6cefdbefdbe6c382cfbb0a4c3b83ce4906c7fcb73d4a8b3d536837e9cf85c7902cf57216360d194b8e#npm:7.24.1"],\ + ["@babel/core", "npm:7.24.5"],\ + ["@babel/helper-plugin-utils", "npm:7.24.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@babel/plugin-syntax-unicode-sets-regex", [\ @@ -1940,13 +2071,13 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.24.1", {\ - "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-flow-strip-types-virtual-e4f2197a87/0/cache/@babel-plugin-transform-flow-strip-types-npm-7.24.1-04c6810cc1-e6aa9cbad0.zip/node_modules/@babel/plugin-transform-flow-strip-types/",\ + ["virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.24.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-flow-strip-types-virtual-4dd72e7b81/0/cache/@babel-plugin-transform-flow-strip-types-npm-7.24.1-04c6810cc1-e6aa9cbad0.zip/node_modules/@babel/plugin-transform-flow-strip-types/",\ "packageDependencies": [\ - ["@babel/plugin-transform-flow-strip-types", "virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.24.1"],\ + ["@babel/plugin-transform-flow-strip-types", "virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.24.1"],\ ["@babel/core", "npm:7.24.4"],\ ["@babel/helper-plugin-utils", "npm:7.24.0"],\ - ["@babel/plugin-syntax-flow", "virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.24.1"],\ + ["@babel/plugin-syntax-flow", "virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.24.1"],\ ["@types/babel__core", null]\ ],\ "packagePeers": [\ @@ -2592,10 +2723,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:78b795f6dff6124987e36494aa2aa9b2c55b6bb0e00f1545cff6f31a6047b7b042a161a9c656068317a9fde216ddced8a76757a0cdb73219385cac4a76b6436d#npm:7.24.1", {\ - "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-react-jsx-self-virtual-02ecc182ee/0/cache/@babel-plugin-transform-react-jsx-self-npm-7.24.1-f8f4855dc7-ea362ff94b.zip/node_modules/@babel/plugin-transform-react-jsx-self/",\ + ["virtual:47aa59d0c33af6d267e15415f9408141646eb727bab2c4fe74f459068e5381c61400ae9d2c144ce15fd36b1d1278c0d618d081a1905af253eb0c1a059bd2eac9#npm:7.24.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-react-jsx-self-virtual-b74bbbac9c/0/cache/@babel-plugin-transform-react-jsx-self-npm-7.24.1-f8f4855dc7-ea362ff94b.zip/node_modules/@babel/plugin-transform-react-jsx-self/",\ "packageDependencies": [\ - ["@babel/plugin-transform-react-jsx-self", "virtual:78b795f6dff6124987e36494aa2aa9b2c55b6bb0e00f1545cff6f31a6047b7b042a161a9c656068317a9fde216ddced8a76757a0cdb73219385cac4a76b6436d#npm:7.24.1"],\ + ["@babel/plugin-transform-react-jsx-self", "virtual:47aa59d0c33af6d267e15415f9408141646eb727bab2c4fe74f459068e5381c61400ae9d2c144ce15fd36b1d1278c0d618d081a1905af253eb0c1a059bd2eac9#npm:7.24.1"],\ ["@babel/core", "npm:7.24.4"],\ ["@babel/helper-plugin-utils", "npm:7.24.0"],\ ["@types/babel__core", "npm:7.20.5"]\ @@ -2615,10 +2746,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:78b795f6dff6124987e36494aa2aa9b2c55b6bb0e00f1545cff6f31a6047b7b042a161a9c656068317a9fde216ddced8a76757a0cdb73219385cac4a76b6436d#npm:7.24.1", {\ - "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-react-jsx-source-virtual-191d3a1a2b/0/cache/@babel-plugin-transform-react-jsx-source-npm-7.24.1-e820d18c2f-ea8e3263c0.zip/node_modules/@babel/plugin-transform-react-jsx-source/",\ + ["virtual:47aa59d0c33af6d267e15415f9408141646eb727bab2c4fe74f459068e5381c61400ae9d2c144ce15fd36b1d1278c0d618d081a1905af253eb0c1a059bd2eac9#npm:7.24.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-react-jsx-source-virtual-d0d70887d8/0/cache/@babel-plugin-transform-react-jsx-source-npm-7.24.1-e820d18c2f-ea8e3263c0.zip/node_modules/@babel/plugin-transform-react-jsx-source/",\ "packageDependencies": [\ - ["@babel/plugin-transform-react-jsx-source", "virtual:78b795f6dff6124987e36494aa2aa9b2c55b6bb0e00f1545cff6f31a6047b7b042a161a9c656068317a9fde216ddced8a76757a0cdb73219385cac4a76b6436d#npm:7.24.1"],\ + ["@babel/plugin-transform-react-jsx-source", "virtual:47aa59d0c33af6d267e15415f9408141646eb727bab2c4fe74f459068e5381c61400ae9d2c144ce15fd36b1d1278c0d618d081a1905af253eb0c1a059bd2eac9#npm:7.24.1"],\ ["@babel/core", "npm:7.24.4"],\ ["@babel/helper-plugin-utils", "npm:7.24.0"],\ ["@types/babel__core", "npm:7.20.5"]\ @@ -3193,7 +3324,24 @@ const RAW_RUNTIME_STATE = ["@babel/helper-split-export-declaration", "npm:7.22.6"],\ ["@babel/parser", "npm:7.24.4"],\ ["@babel/types", "npm:7.24.0"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ + ["globals", "npm:11.12.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.24.5", {\ + "packageLocation": "./.yarn/cache/@babel-traverse-npm-7.24.5-d9a5f00bfc-3f22534bc2.zip/node_modules/@babel/traverse/",\ + "packageDependencies": [\ + ["@babel/traverse", "npm:7.24.5"],\ + ["@babel/code-frame", "npm:7.24.2"],\ + ["@babel/generator", "npm:7.24.5"],\ + ["@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.24.5"],\ + ["@babel/parser", "npm:7.24.5"],\ + ["@babel/types", "npm:7.24.5"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["globals", "npm:11.12.0"]\ ],\ "linkType": "HARD"\ @@ -3209,6 +3357,16 @@ const RAW_RUNTIME_STATE = ["to-fast-properties", "npm:2.0.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.24.5", {\ + "packageLocation": "./.yarn/cache/@babel-types-npm-7.24.5-2710b35119-e1284eb046.zip/node_modules/@babel/types/",\ + "packageDependencies": [\ + ["@babel/types", "npm:7.24.5"],\ + ["@babel/helper-string-parser", "npm:7.24.1"],\ + ["@babel/helper-validator-identifier", "npm:7.24.5"],\ + ["to-fast-properties", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@balena/dockerignore", [\ @@ -3249,102 +3407,120 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["@campaign/source", [\ + ["@chrononomicon/source", [\ ["workspace:.", {\ "packageLocation": "./",\ "packageDependencies": [\ - ["@campaign/source", "workspace:."],\ - ["@0no-co/graphqlsp", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.11.0"],\ + ["@chrononomicon/source", "workspace:."],\ + ["@0no-co/graphqlsp", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.11.0"],\ ["@commitlint/cli", "npm:19.2.1"],\ ["@dotenvx/dotenvx", "npm:0.35.1"],\ ["@eslint/js", "npm:9.0.0"],\ - ["@graphql-codegen/cli", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.0.2"],\ - ["@graphql-codegen/client-preset", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.2.5"],\ - ["@graphql-codegen/schema-ast", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.0.2"],\ - ["@graphql-tools/executor-http", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.0.9"],\ - ["@graphql-typed-document-node/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.2.0"],\ + ["@graphql-codegen/cli", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.0.2"],\ + ["@graphql-codegen/client-preset", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.2.5"],\ + ["@graphql-codegen/schema-ast", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.2"],\ + ["@graphql-tools/executor-http", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.0.9"],\ + ["@graphql-typed-document-node/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.2.0"],\ ["@hono/node-server", "npm:1.10.0"],\ - ["@nx/devkit", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ - ["@nx/esbuild", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["@mswjs/data", "npm:0.16.1"],\ + ["@nx/devkit", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ + ["@nx/esbuild", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["@nx/eslint", "virtual:41cfb0d93d8f1f80cb47f3ad08355c786f8049206e268f2d7164dc0f5fe99e7f8c9c0fed5b3dd539eb6429bc94158ac9084e8291ac1c7be0f1f25182ce597da3#npm:18.3.3"],\ ["@nx/js", "virtual:e56b832509978bc5e240ed4a65f2ed0eac855b9539d5a4c6ad2d287c44f0a75c152be27aaad194f462e83c9da129e838ae845e1c68b60d265bc3121e2e3a76c2#npm:18.3.3"],\ ["@nx/node", "npm:18.3.3"],\ - ["@nx/playwright", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["@nx/playwright", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["@nx/react", "npm:18.3.3"],\ - ["@nx/vite", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["@nx/vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["@nx/web", "npm:18.3.3"],\ ["@nx/workspace", "npm:18.3.3"],\ + ["@paralleldrive/cuid2", "npm:2.2.2"],\ ["@parcel/watcher", "npm:2.4.1"],\ ["@playwright/test", "npm:1.43.0"],\ - ["@pothos/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.41.1"],\ - ["@remix-run/dev", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@remix-run/node", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@remix-run/react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ + ["@pothos/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.41.1"],\ + ["@remix-run/dev", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/node", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ ["@remix-run/serve", "npm:2.9.1"],\ - ["@remix-run/testing", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@swc-node/register", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.9.0"],\ - ["@swc/cli", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.3.12"],\ - ["@swc/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.4.13"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/testing", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@swc-node/register", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.9.0"],\ + ["@swc/cli", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.3.12"],\ + ["@swc/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.4.13"],\ ["@swc/helpers", "npm:0.5.8"],\ ["@testcontainers/postgresql", "npm:10.9.0"],\ - ["@testing-library/jest-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.4.2"],\ - ["@testing-library/react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:14.3.0"],\ + ["@testing-library/dom", "npm:10.0.0"],\ + ["@testing-library/jest-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.4.2"],\ + ["@testing-library/react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:14.3.0"],\ + ["@testing-library/user-event", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:14.5.2"],\ ["@types/jsonwebtoken", "npm:9.0.6"],\ ["@types/node", "npm:20.12.7"],\ ["@types/react", "npm:18.2.75"],\ ["@types/react-dom", "npm:18.2.24"],\ ["@types/react-is", "npm:18.2.4"],\ - ["@types/styled-components", "npm:5.1.34"],\ - ["@typescript-eslint/eslint-plugin", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0"],\ - ["@typescript-eslint/parser", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0"],\ - ["@typescript-eslint/utils", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.7.1"],\ - ["@vitejs/plugin-react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.2.1"],\ - ["@vitest/coverage-v8", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"],\ - ["@vitest/ui", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"],\ + ["@typescript-eslint/eslint-plugin", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0"],\ + ["@typescript-eslint/parser", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0"],\ + ["@typescript-eslint/utils", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.7.1"],\ + ["@vanilla-extract/css", "npm:1.15.1"],\ + ["@vanilla-extract/sprinkles", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.6.1"],\ + ["@vanilla-extract/vite-plugin", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.9"],\ + ["@vitejs/plugin-react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.2.1"],\ + ["@vitest/coverage-v8", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"],\ + ["@vitest/expect", "npm:1.5.2"],\ + ["@vitest/ui", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"],\ ["auth0", "npm:4.3.1"],\ - ["cuid", "npm:3.0.0"],\ ["drizzle-kit", "npm:0.20.17"],\ - ["drizzle-orm", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.30.9"],\ + ["drizzle-orm", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.30.9"],\ ["envalid", "npm:8.0.0"],\ ["esbuild", "npm:0.20.2"],\ ["eslint", "npm:9.0.0"],\ - ["eslint-config-prettier", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:9.1.0"],\ - ["eslint-plugin-drizzle", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.2.3"],\ - ["eslint-plugin-jsx-a11y", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.8.0"],\ - ["eslint-plugin-playwright", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.6.0"],\ - ["eslint-plugin-react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.34.1"],\ - ["eslint-plugin-react-hooks", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.6.0"],\ - ["eslint-plugin-unicorn", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:52.0.0"],\ + ["eslint-config-prettier", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:9.1.0"],\ + ["eslint-plugin-drizzle", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.2.3"],\ + ["eslint-plugin-jsx-a11y", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.8.0"],\ + ["eslint-plugin-playwright", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.6.0"],\ + ["eslint-plugin-react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.34.1"],\ + ["eslint-plugin-react-hooks", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.6.0"],\ + ["eslint-plugin-unicorn", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:52.0.0"],\ + ["got", "npm:14.2.1"],\ ["graphql", "npm:16.8.1"],\ - ["graphql-request", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.1.0"],\ - ["graphql-yoga", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.3.0"],\ + ["graphql-request", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.1.0"],\ + ["graphql-scalars", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.23.0"],\ + ["graphql-transform-scalars", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.2.1"],\ + ["graphql-yoga", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.3.0"],\ ["happy-dom", "npm:14.7.1"],\ ["hono", "npm:4.2.4"],\ ["husky", "npm:9.0.11"],\ ["isbot", "npm:4.4.0"],\ - ["jest-extended", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.0.2"],\ + ["jest-extended", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.2"],\ ["jsonwebtoken", "npm:9.0.2"],\ ["jwks-rsa", "npm:3.1.0"],\ + ["jwt-decode", "npm:4.0.0"],\ ["lint-staged", "npm:15.2.2"],\ - ["mock-jwks", "npm:3.1.0"],\ - ["msw", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.2.14"],\ - ["nx", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["mock-jwks", "patch:mock-jwks@npm%3A3.1.0#~/.yarn/patches/mock-jwks-npm-3.1.0-131e3bbc29.patch::version=3.1.0&hash=3d08e1"],\ + ["msw", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.2.14"],\ + ["node-mocks-http", "npm:1.14.1"],\ + ["nx", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["playwright", "npm:1.43.0"],\ ["postgres", "npm:3.4.4"],\ ["prettier", "npm:3.2.5"],\ ["react", "npm:18.2.0"],\ - ["react-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.2.0"],\ + ["react-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.2.0"],\ ["react-is", "npm:18.2.0"],\ - ["react-router-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.22.3"],\ - ["remix-hono", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.0.16"],\ - ["styled-components", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.1.8"],\ + ["react-router-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.22.3"],\ + ["remix-auth", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.6.0"],\ + ["remix-auth-auth0", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.10.0"],\ + ["remix-auth-oauth2", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.11.2"],\ + ["remix-flat-routes", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.6.4"],\ + ["remix-hono", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.0.16"],\ ["tiny-invariant", "npm:1.3.3"],\ + ["tsconfig-paths", "npm:4.2.0"],\ ["tslib", "npm:2.6.2"],\ ["tsx", "npm:4.7.3"],\ + ["type-fest", "npm:4.17.0"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"],\ - ["typescript-eslint", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0"],\ - ["vite", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.2.10"],\ - ["vitest", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"]\ + ["typescript-eslint", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0"],\ + ["uuid", "npm:9.0.1"],\ + ["vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.2.10"],\ + ["vitest", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"]\ ],\ "linkType": "SOFT"\ }]\ @@ -3616,34 +3792,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["@emotion/is-prop-valid", [\ - ["npm:1.2.1", {\ - "packageLocation": "./.yarn/cache/@emotion-is-prop-valid-npm-1.2.1-794afe6a94-7c2aabdf0c.zip/node_modules/@emotion/is-prop-valid/",\ - "packageDependencies": [\ - ["@emotion/is-prop-valid", "npm:1.2.1"],\ - ["@emotion/memoize", "npm:0.8.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@emotion/memoize", [\ - ["npm:0.8.1", {\ - "packageLocation": "./.yarn/cache/@emotion-memoize-npm-0.8.1-9b1e35ff15-dffed372fc.zip/node_modules/@emotion/memoize/",\ - "packageDependencies": [\ - ["@emotion/memoize", "npm:0.8.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@emotion/unitless", [\ - ["npm:0.8.0", {\ - "packageLocation": "./.yarn/cache/@emotion-unitless-npm-0.8.0-aa125284fa-1f2cfb7c0c.zip/node_modules/@emotion/unitless/",\ - "packageDependencies": [\ - ["@emotion/unitless", "npm:0.8.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@envelop/core", [\ ["npm:5.0.0", {\ "packageLocation": "./.yarn/cache/@envelop-core-npm-5.0.0-262546b302-abc0658517.zip/node_modules/@envelop/core/",\ @@ -4415,7 +4563,7 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["@eslint/eslintrc", "npm:2.1.4"],\ ["ajv", "npm:6.12.6"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["espree", "npm:9.6.1"],\ ["globals", "npm:13.24.0"],\ ["ignore", "npm:5.3.1"],\ @@ -4431,7 +4579,7 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["@eslint/eslintrc", "npm:3.0.2"],\ ["ajv", "npm:6.12.6"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["espree", "npm:10.0.1"],\ ["globals", "npm:14.0.0"],\ ["ignore", "npm:5.3.1"],\ @@ -4476,11 +4624,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:b640dd29b1512d909d8c3b1c968dd27d81e242199af186290d2fbd2464b946edb7d419a14cfee4c91f793206e278e9f143a178ada8f6f994643c01022488222d#npm:0.1.3", {\ - "packageLocation": "./.yarn/__virtual__/@gql.tada-internal-virtual-29e2dde33d/0/cache/@gql.tada-internal-npm-0.1.3-90baec007d-a319a7c8c0.zip/node_modules/@gql.tada/internal/",\ + ["virtual:78f4303d1bf520f5a33067425fb4c12047ec8f287e1d7055cf9b3227b4e889e31d8668ebc34f59573277cf69c41ecfe2b44a9524e4c29d899a954e3a9e9f74a2#npm:0.1.3", {\ + "packageLocation": "./.yarn/__virtual__/@gql.tada-internal-virtual-06011aca00/0/cache/@gql.tada-internal-npm-0.1.3-90baec007d-a319a7c8c0.zip/node_modules/@gql.tada/internal/",\ "packageDependencies": [\ - ["@gql.tada/internal", "virtual:b640dd29b1512d909d8c3b1c968dd27d81e242199af186290d2fbd2464b946edb7d419a14cfee4c91f793206e278e9f143a178ada8f6f994643c01022488222d#npm:0.1.3"],\ - ["@0no-co/graphql.web", "virtual:29e2dde33de365ed70ad5476300ee2f7dd262543ae374ad2c8fc1978064be0ceb632fb0b0904c45a0d669ff44a4e3645ba1c059b641ed272870e057ae31762c6#npm:1.0.7"],\ + ["@gql.tada/internal", "virtual:78f4303d1bf520f5a33067425fb4c12047ec8f287e1d7055cf9b3227b4e889e31d8668ebc34f59573277cf69c41ecfe2b44a9524e4c29d899a954e3a9e9f74a2#npm:0.1.3"],\ + ["@0no-co/graphql.web", "virtual:06011aca00a4d3cca0f8372c47a44270dab31a64f0a809bbdb0caa9b6ade788b35266e64332cb8a9bf8f186f4614ad2abcb3e0182f47341485955e33f1fe5a34#npm:1.0.7"],\ ["@types/graphql", null],\ ["@types/typescript", null],\ ["graphql", "npm:16.8.1"],\ @@ -4503,11 +4651,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.0.2", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-codegen-add-virtual-34bcc1ae45/0/cache/@graphql-codegen-add-npm-5.0.2-8203cb2a85-667bacb3c4.zip/node_modules/@graphql-codegen/add/",\ + ["virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.0.2", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-codegen-add-virtual-b46dee3dd7/0/cache/@graphql-codegen-add-npm-5.0.2-8203cb2a85-667bacb3c4.zip/node_modules/@graphql-codegen/add/",\ "packageDependencies": [\ - ["@graphql-codegen/add", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.0.2"],\ - ["@graphql-codegen/plugin-helpers", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ + ["@graphql-codegen/add", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.0.2"],\ + ["@graphql-codegen/plugin-helpers", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["tslib", "npm:2.6.2"]\ @@ -4527,26 +4675,26 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.0.2", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-codegen-cli-virtual-9543052764/0/cache/@graphql-codegen-cli-npm-5.0.2-2b55a036e6-6a54981bc0.zip/node_modules/@graphql-codegen/cli/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.0.2", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-codegen-cli-virtual-a4ab729469/0/cache/@graphql-codegen-cli-npm-5.0.2-2b55a036e6-6a54981bc0.zip/node_modules/@graphql-codegen/cli/",\ "packageDependencies": [\ - ["@graphql-codegen/cli", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.0.2"],\ + ["@graphql-codegen/cli", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.0.2"],\ ["@babel/generator", "npm:7.24.4"],\ ["@babel/template", "npm:7.24.0"],\ ["@babel/types", "npm:7.24.0"],\ - ["@graphql-codegen/client-preset", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.2.5"],\ - ["@graphql-codegen/core", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:4.0.2"],\ - ["@graphql-codegen/plugin-helpers", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ - ["@graphql-tools/apollo-engine-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1"],\ - ["@graphql-tools/code-file-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.1.1"],\ - ["@graphql-tools/git-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.5"],\ - ["@graphql-tools/github-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1"],\ - ["@graphql-tools/graphql-file-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1"],\ - ["@graphql-tools/json-file-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1"],\ - ["@graphql-tools/load", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.2"],\ - ["@graphql-tools/prisma-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.3"],\ - ["@graphql-tools/url-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.2"],\ - ["@graphql-tools/utils", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:10.1.3"],\ + ["@graphql-codegen/client-preset", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.2.5"],\ + ["@graphql-codegen/core", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:4.0.2"],\ + ["@graphql-codegen/plugin-helpers", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ + ["@graphql-tools/apollo-engine-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1"],\ + ["@graphql-tools/code-file-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.1.1"],\ + ["@graphql-tools/git-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.5"],\ + ["@graphql-tools/github-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1"],\ + ["@graphql-tools/graphql-file-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1"],\ + ["@graphql-tools/json-file-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1"],\ + ["@graphql-tools/load", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.2"],\ + ["@graphql-tools/prisma-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.3"],\ + ["@graphql-tools/url-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.2"],\ + ["@graphql-tools/utils", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:10.1.3"],\ ["@parcel/watcher", "npm:2.4.1"],\ ["@types/graphql", null],\ ["@types/parcel__watcher", null],\ @@ -4556,12 +4704,12 @@ const RAW_RUNTIME_STATE = ["debounce", "npm:1.2.1"],\ ["detect-indent", "npm:6.1.0"],\ ["graphql", "npm:16.8.1"],\ - ["graphql-config", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ + ["graphql-config", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ ["inquirer", "npm:8.2.6"],\ ["is-glob", "npm:4.0.3"],\ ["jiti", "npm:1.21.0"],\ ["json-to-pretty-yaml", "npm:1.2.2"],\ - ["listr2", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:4.0.5"],\ + ["listr2", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:4.0.5"],\ ["log-symbols", "npm:4.1.0"],\ ["micromatch", "npm:4.0.5"],\ ["shell-quote", "npm:1.8.1"],\ @@ -4588,22 +4736,22 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.2.5", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-codegen-client-preset-virtual-1bff588ca9/0/cache/@graphql-codegen-client-preset-npm-4.2.5-20533b483f-9b14edf422.zip/node_modules/@graphql-codegen/client-preset/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.2.5", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-codegen-client-preset-virtual-3ac00a7556/0/cache/@graphql-codegen-client-preset-npm-4.2.5-20533b483f-9b14edf422.zip/node_modules/@graphql-codegen/client-preset/",\ "packageDependencies": [\ - ["@graphql-codegen/client-preset", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.2.5"],\ + ["@graphql-codegen/client-preset", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.2.5"],\ ["@babel/helper-plugin-utils", "npm:7.24.0"],\ ["@babel/template", "npm:7.24.0"],\ - ["@graphql-codegen/add", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.0.2"],\ - ["@graphql-codegen/gql-tag-operations", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:4.0.6"],\ - ["@graphql-codegen/plugin-helpers", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ - ["@graphql-codegen/typed-document-node", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.0.6"],\ - ["@graphql-codegen/typescript", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:4.0.6"],\ - ["@graphql-codegen/typescript-operations", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:4.2.0"],\ - ["@graphql-codegen/visitor-plugin-common", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.1.0"],\ - ["@graphql-tools/documents", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:1.0.0"],\ - ["@graphql-tools/utils", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:10.1.3"],\ - ["@graphql-typed-document-node/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.2.0"],\ + ["@graphql-codegen/add", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.0.2"],\ + ["@graphql-codegen/gql-tag-operations", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:4.0.6"],\ + ["@graphql-codegen/plugin-helpers", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ + ["@graphql-codegen/typed-document-node", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.0.6"],\ + ["@graphql-codegen/typescript", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:4.0.6"],\ + ["@graphql-codegen/typescript-operations", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:4.2.0"],\ + ["@graphql-codegen/visitor-plugin-common", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.1.0"],\ + ["@graphql-tools/documents", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:1.0.0"],\ + ["@graphql-tools/utils", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:10.1.3"],\ + ["@graphql-typed-document-node/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.2.0"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["tslib", "npm:2.6.2"]\ @@ -4623,13 +4771,13 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:4.0.2", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-codegen-core-virtual-353b52792c/0/cache/@graphql-codegen-core-npm-4.0.2-3135edacf9-8387a91dd8.zip/node_modules/@graphql-codegen/core/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:4.0.2", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-codegen-core-virtual-06ad281b21/0/cache/@graphql-codegen-core-npm-4.0.2-3135edacf9-8387a91dd8.zip/node_modules/@graphql-codegen/core/",\ "packageDependencies": [\ - ["@graphql-codegen/core", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:4.0.2"],\ - ["@graphql-codegen/plugin-helpers", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ - ["@graphql-tools/schema", "virtual:353b52792c6de8bdee3e2eb92631676b3bdfa8767bb67f6f8b31c04327aca99792a38424470706f79855a72e65dabd8d2d369916801430551c88070849adbfb5#npm:10.0.3"],\ - ["@graphql-tools/utils", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:10.1.3"],\ + ["@graphql-codegen/core", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:4.0.2"],\ + ["@graphql-codegen/plugin-helpers", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ + ["@graphql-tools/schema", "virtual:06ad281b2139667642afa8bc815cb4c8cd0a52dcae9090d6c25bcbdbd742dba94f4aa7ef56910ca119c7fe5bf71173f5327c439af19b13550044c6fadb5dad0a#npm:10.0.3"],\ + ["@graphql-tools/utils", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:10.1.3"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["tslib", "npm:2.6.2"]\ @@ -4649,13 +4797,13 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:4.0.6", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-codegen-gql-tag-operations-virtual-ad3ef20686/0/cache/@graphql-codegen-gql-tag-operations-npm-4.0.6-6af952cb2a-e974f167c1.zip/node_modules/@graphql-codegen/gql-tag-operations/",\ + ["virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:4.0.6", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-codegen-gql-tag-operations-virtual-21a73c187e/0/cache/@graphql-codegen-gql-tag-operations-npm-4.0.6-6af952cb2a-e974f167c1.zip/node_modules/@graphql-codegen/gql-tag-operations/",\ "packageDependencies": [\ - ["@graphql-codegen/gql-tag-operations", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:4.0.6"],\ - ["@graphql-codegen/plugin-helpers", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ - ["@graphql-codegen/visitor-plugin-common", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.1.0"],\ - ["@graphql-tools/utils", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:10.1.3"],\ + ["@graphql-codegen/gql-tag-operations", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:4.0.6"],\ + ["@graphql-codegen/plugin-helpers", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ + ["@graphql-codegen/visitor-plugin-common", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.1.0"],\ + ["@graphql-tools/utils", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:10.1.3"],\ ["@types/graphql", null],\ ["auto-bind", "npm:4.0.0"],\ ["graphql", "npm:16.8.1"],\ @@ -4676,11 +4824,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-codegen-plugin-helpers-virtual-98b6d45696/0/cache/@graphql-codegen-plugin-helpers-npm-5.0.3-e3267cb0ad-1ea0d46ccd.zip/node_modules/@graphql-codegen/plugin-helpers/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-codegen-plugin-helpers-virtual-13e7cb6fb4/0/cache/@graphql-codegen-plugin-helpers-npm-5.0.3-e3267cb0ad-1ea0d46ccd.zip/node_modules/@graphql-codegen/plugin-helpers/",\ "packageDependencies": [\ - ["@graphql-codegen/plugin-helpers", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ - ["@graphql-tools/utils", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:10.1.3"],\ + ["@graphql-codegen/plugin-helpers", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ + ["@graphql-tools/utils", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:10.1.3"],\ ["@types/graphql", null],\ ["change-case-all", "npm:1.0.15"],\ ["common-tags", "npm:1.8.2"],\ @@ -4704,12 +4852,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.0.2", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-codegen-schema-ast-virtual-7fe8e8be16/0/cache/@graphql-codegen-schema-ast-npm-4.0.2-203fff5459-533b1bfa6c.zip/node_modules/@graphql-codegen/schema-ast/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.2", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-codegen-schema-ast-virtual-f345e1cf27/0/cache/@graphql-codegen-schema-ast-npm-4.0.2-203fff5459-533b1bfa6c.zip/node_modules/@graphql-codegen/schema-ast/",\ "packageDependencies": [\ - ["@graphql-codegen/schema-ast", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.0.2"],\ - ["@graphql-codegen/plugin-helpers", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ - ["@graphql-tools/utils", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:10.1.3"],\ + ["@graphql-codegen/schema-ast", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.2"],\ + ["@graphql-codegen/plugin-helpers", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ + ["@graphql-tools/utils", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:10.1.3"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["tslib", "npm:2.6.2"]\ @@ -4729,12 +4877,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.0.6", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-codegen-typed-document-node-virtual-d0587c2022/0/cache/@graphql-codegen-typed-document-node-npm-5.0.6-0251563a24-d4a0ab10df.zip/node_modules/@graphql-codegen/typed-document-node/",\ + ["virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.0.6", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-codegen-typed-document-node-virtual-8e5d78769f/0/cache/@graphql-codegen-typed-document-node-npm-5.0.6-0251563a24-d4a0ab10df.zip/node_modules/@graphql-codegen/typed-document-node/",\ "packageDependencies": [\ - ["@graphql-codegen/typed-document-node", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.0.6"],\ - ["@graphql-codegen/plugin-helpers", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ - ["@graphql-codegen/visitor-plugin-common", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.1.0"],\ + ["@graphql-codegen/typed-document-node", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.0.6"],\ + ["@graphql-codegen/plugin-helpers", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ + ["@graphql-codegen/visitor-plugin-common", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.1.0"],\ ["@types/graphql", null],\ ["auto-bind", "npm:4.0.0"],\ ["change-case-all", "npm:1.0.15"],\ @@ -4756,13 +4904,13 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:4.0.6", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-codegen-typescript-virtual-41e6162d57/0/cache/@graphql-codegen-typescript-npm-4.0.6-4305e1e8b2-68b6f1780d.zip/node_modules/@graphql-codegen/typescript/",\ + ["virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:4.0.6", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-codegen-typescript-virtual-74c46b0223/0/cache/@graphql-codegen-typescript-npm-4.0.6-4305e1e8b2-68b6f1780d.zip/node_modules/@graphql-codegen/typescript/",\ "packageDependencies": [\ - ["@graphql-codegen/typescript", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:4.0.6"],\ - ["@graphql-codegen/plugin-helpers", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ - ["@graphql-codegen/schema-ast", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.0.2"],\ - ["@graphql-codegen/visitor-plugin-common", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.1.0"],\ + ["@graphql-codegen/typescript", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:4.0.6"],\ + ["@graphql-codegen/plugin-helpers", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ + ["@graphql-codegen/schema-ast", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.2"],\ + ["@graphql-codegen/visitor-plugin-common", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.1.0"],\ ["@types/graphql", null],\ ["auto-bind", "npm:4.0.0"],\ ["graphql", "npm:16.8.1"],\ @@ -4783,13 +4931,13 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:4.2.0", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-codegen-typescript-operations-virtual-d90b7cb2e9/0/cache/@graphql-codegen-typescript-operations-npm-4.2.0-88a2ab6be4-40fdf8060a.zip/node_modules/@graphql-codegen/typescript-operations/",\ + ["virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:4.2.0", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-codegen-typescript-operations-virtual-ab56361c86/0/cache/@graphql-codegen-typescript-operations-npm-4.2.0-88a2ab6be4-40fdf8060a.zip/node_modules/@graphql-codegen/typescript-operations/",\ "packageDependencies": [\ - ["@graphql-codegen/typescript-operations", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:4.2.0"],\ - ["@graphql-codegen/plugin-helpers", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ - ["@graphql-codegen/typescript", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:4.0.6"],\ - ["@graphql-codegen/visitor-plugin-common", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.1.0"],\ + ["@graphql-codegen/typescript-operations", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:4.2.0"],\ + ["@graphql-codegen/plugin-helpers", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ + ["@graphql-codegen/typescript", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:4.0.6"],\ + ["@graphql-codegen/visitor-plugin-common", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.1.0"],\ ["@types/graphql", null],\ ["auto-bind", "npm:4.0.0"],\ ["graphql", "npm:16.8.1"],\ @@ -4810,20 +4958,20 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.1.0", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-codegen-visitor-plugin-common-virtual-345d504175/0/cache/@graphql-codegen-visitor-plugin-common-npm-5.1.0-951ba1b135-500b0da52c.zip/node_modules/@graphql-codegen/visitor-plugin-common/",\ + ["virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.1.0", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-codegen-visitor-plugin-common-virtual-5a439034ff/0/cache/@graphql-codegen-visitor-plugin-common-npm-5.1.0-951ba1b135-500b0da52c.zip/node_modules/@graphql-codegen/visitor-plugin-common/",\ "packageDependencies": [\ - ["@graphql-codegen/visitor-plugin-common", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:5.1.0"],\ - ["@graphql-codegen/plugin-helpers", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ - ["@graphql-tools/optimize", "virtual:345d5041753dabeafe363012501cdd4d8834292c317a10b3b83119fceb8d9d17f3c6a6a10c8aa9d11285fc9ffd57ccd02e679987d31c18ef60b0635792395f16#npm:2.0.0"],\ - ["@graphql-tools/relay-operation-optimizer", "virtual:345d5041753dabeafe363012501cdd4d8834292c317a10b3b83119fceb8d9d17f3c6a6a10c8aa9d11285fc9ffd57ccd02e679987d31c18ef60b0635792395f16#npm:7.0.1"],\ - ["@graphql-tools/utils", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:10.1.3"],\ + ["@graphql-codegen/visitor-plugin-common", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:5.1.0"],\ + ["@graphql-codegen/plugin-helpers", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ + ["@graphql-tools/optimize", "virtual:5a439034ff3fdd05543739b3ff835dc99aa92646fa0ef0b8c2bb29efafe815b7fceaad3450ca83afbd61c4387ea0fddfa43286eb510117baa3098d91ed30dbe5#npm:2.0.0"],\ + ["@graphql-tools/relay-operation-optimizer", "virtual:5a439034ff3fdd05543739b3ff835dc99aa92646fa0ef0b8c2bb29efafe815b7fceaad3450ca83afbd61c4387ea0fddfa43286eb510117baa3098d91ed30dbe5#npm:7.0.1"],\ + ["@graphql-tools/utils", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:10.1.3"],\ ["@types/graphql", null],\ ["auto-bind", "npm:4.0.0"],\ ["change-case-all", "npm:1.0.15"],\ ["dependency-graph", "npm:0.11.0"],\ ["graphql", "npm:16.8.1"],\ - ["graphql-tag", "virtual:345d5041753dabeafe363012501cdd4d8834292c317a10b3b83119fceb8d9d17f3c6a6a10c8aa9d11285fc9ffd57ccd02e679987d31c18ef60b0635792395f16#npm:2.12.6"],\ + ["graphql-tag", "virtual:5a439034ff3fdd05543739b3ff835dc99aa92646fa0ef0b8c2bb29efafe815b7fceaad3450ca83afbd61c4387ea0fddfa43286eb510117baa3098d91ed30dbe5#npm:2.12.6"],\ ["parse-filepath", "npm:1.0.2"],\ ["tslib", "npm:2.6.2"]\ ],\ @@ -4842,12 +4990,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-apollo-engine-loader-virtual-373aa141de/0/cache/@graphql-tools-apollo-engine-loader-npm-8.0.1-e976011c0d-4ef280a824.zip/node_modules/@graphql-tools/apollo-engine-loader/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-apollo-engine-loader-virtual-694a25b621/0/cache/@graphql-tools-apollo-engine-loader-npm-8.0.1-e976011c0d-4ef280a824.zip/node_modules/@graphql-tools/apollo-engine-loader/",\ "packageDependencies": [\ - ["@graphql-tools/apollo-engine-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1"],\ + ["@graphql-tools/apollo-engine-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1"],\ ["@ardatan/sync-fetch", "npm:0.0.1"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["@whatwg-node/fetch", "npm:0.9.17"],\ ["graphql", "npm:16.8.1"],\ @@ -4868,11 +5016,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:ed9371b72d00fa0fd309d02d1a55daa35ff52b6d9b13cd890e1e5e835ee8806d442b17353f135354f5dccd37a0483287142af94323441a95e2c5d1c68fa280fe#npm:9.0.4", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-batch-execute-virtual-f4bcbb2132/0/cache/@graphql-tools-batch-execute-npm-9.0.4-3fb3972a45-a15d96573d.zip/node_modules/@graphql-tools/batch-execute/",\ + ["virtual:14a1b93cef30ed3379820de8b0d02decdffbb6ffdf51bde6a30809bd9042ddfa09c0276bbc265c59576fa2a0670462d4e06ef6136879e6921e24734b5b6dcf6f#npm:9.0.4", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-batch-execute-virtual-ec05a66bf5/0/cache/@graphql-tools-batch-execute-npm-9.0.4-3fb3972a45-a15d96573d.zip/node_modules/@graphql-tools/batch-execute/",\ "packageDependencies": [\ - ["@graphql-tools/batch-execute", "virtual:ed9371b72d00fa0fd309d02d1a55daa35ff52b6d9b13cd890e1e5e835ee8806d442b17353f135354f5dccd37a0483287142af94323441a95e2c5d1c68fa280fe#npm:9.0.4"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/batch-execute", "virtual:14a1b93cef30ed3379820de8b0d02decdffbb6ffdf51bde6a30809bd9042ddfa09c0276bbc265c59576fa2a0670462d4e06ef6136879e6921e24734b5b6dcf6f#npm:9.0.4"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["dataloader", "npm:2.2.2"],\ ["graphql", "npm:16.8.1"],\ @@ -4894,12 +5042,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.1.1", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-code-file-loader-virtual-3302742266/0/cache/@graphql-tools-code-file-loader-npm-8.1.1-d98c15ed41-7ab2665f2b.zip/node_modules/@graphql-tools/code-file-loader/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.1.1", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-code-file-loader-virtual-c44aa1ba02/0/cache/@graphql-tools-code-file-loader-npm-8.1.1-d98c15ed41-7ab2665f2b.zip/node_modules/@graphql-tools/code-file-loader/",\ "packageDependencies": [\ - ["@graphql-tools/code-file-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.1.1"],\ - ["@graphql-tools/graphql-tag-pluck", "virtual:3302742266117cbad81c11e28448019528470690ffbd0f535015247d443ca0f27ebda8275c6ea98b615a96ebbb70173acfe311573a2fadfca444af54b41c8cc7#npm:8.3.0"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/code-file-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.1.1"],\ + ["@graphql-tools/graphql-tag-pluck", "virtual:c44aa1ba02016f1215a4c0ec8f90af8849e81e98ea4c01df6b5cd46da26daf72807bf8cd14dc4d19951df34e1a28b4933762f89f355b875d53447ca4a3ca5691#npm:8.3.0"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["globby", "npm:11.1.0"],\ ["graphql", "npm:16.8.1"],\ @@ -4921,14 +5069,14 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:10.0.4", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-delegate-virtual-ed9371b72d/0/cache/@graphql-tools-delegate-npm-10.0.4-d5fc5d79e2-60013686e2.zip/node_modules/@graphql-tools/delegate/",\ + ["virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:10.0.4", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-delegate-virtual-14a1b93cef/0/cache/@graphql-tools-delegate-npm-10.0.4-d5fc5d79e2-60013686e2.zip/node_modules/@graphql-tools/delegate/",\ "packageDependencies": [\ - ["@graphql-tools/delegate", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:10.0.4"],\ - ["@graphql-tools/batch-execute", "virtual:ed9371b72d00fa0fd309d02d1a55daa35ff52b6d9b13cd890e1e5e835ee8806d442b17353f135354f5dccd37a0483287142af94323441a95e2c5d1c68fa280fe#npm:9.0.4"],\ - ["@graphql-tools/executor", "virtual:ed9371b72d00fa0fd309d02d1a55daa35ff52b6d9b13cd890e1e5e835ee8806d442b17353f135354f5dccd37a0483287142af94323441a95e2c5d1c68fa280fe#npm:1.2.6"],\ - ["@graphql-tools/schema", "virtual:353b52792c6de8bdee3e2eb92631676b3bdfa8767bb67f6f8b31c04327aca99792a38424470706f79855a72e65dabd8d2d369916801430551c88070849adbfb5#npm:10.0.3"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/delegate", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:10.0.4"],\ + ["@graphql-tools/batch-execute", "virtual:14a1b93cef30ed3379820de8b0d02decdffbb6ffdf51bde6a30809bd9042ddfa09c0276bbc265c59576fa2a0670462d4e06ef6136879e6921e24734b5b6dcf6f#npm:9.0.4"],\ + ["@graphql-tools/executor", "virtual:14a1b93cef30ed3379820de8b0d02decdffbb6ffdf51bde6a30809bd9042ddfa09c0276bbc265c59576fa2a0670462d4e06ef6136879e6921e24734b5b6dcf6f#npm:1.2.6"],\ + ["@graphql-tools/schema", "virtual:06ad281b2139667642afa8bc815cb4c8cd0a52dcae9090d6c25bcbdbd742dba94f4aa7ef56910ca119c7fe5bf71173f5327c439af19b13550044c6fadb5dad0a#npm:10.0.3"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["dataloader", "npm:2.2.2"],\ ["graphql", "npm:16.8.1"],\ @@ -4949,10 +5097,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:1.0.0", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-documents-virtual-32b253fb23/0/cache/@graphql-tools-documents-npm-1.0.0-f5b88c8c88-06b2cc9f8d.zip/node_modules/@graphql-tools/documents/",\ + ["virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:1.0.0", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-documents-virtual-bdb7ae383b/0/cache/@graphql-tools-documents-npm-1.0.0-f5b88c8c88-06b2cc9f8d.zip/node_modules/@graphql-tools/documents/",\ "packageDependencies": [\ - ["@graphql-tools/documents", "virtual:1bff588ca9f44612186c000cc49d86782cbd121111c8b7b96e355eaf602caf5b1f8d144fe86e92b11f8a25262c5ec8a840cec9a5e20afb057f7b5a19a032a466#npm:1.0.0"],\ + ["@graphql-tools/documents", "virtual:3ac00a75563c199410c6702d56b26bed0851194c2e5d25bd40b7c2722bda39f3e56175fd558b71bb0c06566f40b6620c0d0f20908edf22ea1107a05dbc4c5554#npm:1.0.0"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["lodash.sortby", "npm:4.7.0"],\ @@ -4973,12 +5121,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:ed9371b72d00fa0fd309d02d1a55daa35ff52b6d9b13cd890e1e5e835ee8806d442b17353f135354f5dccd37a0483287142af94323441a95e2c5d1c68fa280fe#npm:1.2.6", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-executor-virtual-0519958ee0/0/cache/@graphql-tools-executor-npm-1.2.6-ccc63eb7ee-d6ef5257eb.zip/node_modules/@graphql-tools/executor/",\ + ["virtual:14a1b93cef30ed3379820de8b0d02decdffbb6ffdf51bde6a30809bd9042ddfa09c0276bbc265c59576fa2a0670462d4e06ef6136879e6921e24734b5b6dcf6f#npm:1.2.6", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-executor-virtual-f07749e768/0/cache/@graphql-tools-executor-npm-1.2.6-ccc63eb7ee-d6ef5257eb.zip/node_modules/@graphql-tools/executor/",\ "packageDependencies": [\ - ["@graphql-tools/executor", "virtual:ed9371b72d00fa0fd309d02d1a55daa35ff52b6d9b13cd890e1e5e835ee8806d442b17353f135354f5dccd37a0483287142af94323441a95e2c5d1c68fa280fe#npm:1.2.6"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ - ["@graphql-typed-document-node/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.2.0"],\ + ["@graphql-tools/executor", "virtual:14a1b93cef30ed3379820de8b0d02decdffbb6ffdf51bde6a30809bd9042ddfa09c0276bbc265c59576fa2a0670462d4e06ef6136879e6921e24734b5b6dcf6f#npm:1.2.6"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ + ["@graphql-typed-document-node/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.2.0"],\ ["@repeaterjs/repeater", "npm:3.0.5"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ @@ -5000,18 +5148,18 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:1.1.2", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-executor-graphql-ws-virtual-d5ca7ad1cf/0/cache/@graphql-tools-executor-graphql-ws-npm-1.1.2-d9128d4963-ba7546bf7a.zip/node_modules/@graphql-tools/executor-graphql-ws/",\ + ["virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:1.1.2", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-executor-graphql-ws-virtual-6d71121c43/0/cache/@graphql-tools-executor-graphql-ws-npm-1.1.2-d9128d4963-ba7546bf7a.zip/node_modules/@graphql-tools/executor-graphql-ws/",\ "packageDependencies": [\ - ["@graphql-tools/executor-graphql-ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:1.1.2"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/executor-graphql-ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:1.1.2"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["@types/ws", "npm:8.5.10"],\ ["graphql", "npm:16.8.1"],\ - ["graphql-ws", "virtual:d5ca7ad1cfec7e787a2430e58e88a97b042284f807641b9e6e8fbe4a1ce879e128bbddbf53dbf6950729c75f14b9a555068173fc556f3b2ccdf494acbda1d51c#npm:5.16.0"],\ - ["isomorphic-ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:5.0.0"],\ + ["graphql-ws", "virtual:6d71121c431e7136adf2437767da8860b737fe6d3873f7d27599d76f3e7697388ec450da218eb64c5f22eaa28e19772b531af2b210cb4d3605ee11ec38104607#npm:5.16.0"],\ + ["isomorphic-ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:5.0.0"],\ ["tslib", "npm:2.6.2"],\ - ["ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:8.16.0"]\ + ["ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:8.16.0"]\ ],\ "packagePeers": [\ "@types/graphql",\ @@ -5028,17 +5176,17 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.0.9", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-executor-http-virtual-ee3c2d7864/0/cache/@graphql-tools-executor-http-npm-1.0.9-355a7891af-d1e5bea39c.zip/node_modules/@graphql-tools/executor-http/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.0.9", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-executor-http-virtual-96452096eb/0/cache/@graphql-tools-executor-http-npm-1.0.9-355a7891af-d1e5bea39c.zip/node_modules/@graphql-tools/executor-http/",\ "packageDependencies": [\ - ["@graphql-tools/executor-http", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.0.9"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/executor-http", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.0.9"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@repeaterjs/repeater", "npm:3.0.5"],\ ["@types/graphql", null],\ ["@whatwg-node/fetch", "npm:0.9.17"],\ ["extract-files", "npm:11.0.0"],\ ["graphql", "npm:16.8.1"],\ - ["meros", "virtual:ee3c2d786472a4f6c837d11e793d676f537cf06484c88ec66a674c8ae838d493a916850aec8cc6c2c6dc4036687ee69ff8c55fddeb8244db36410afc0376d7ba#npm:1.3.0"],\ + ["meros", "virtual:96452096eb61a8f681e4ad831e9e1c27ed6d8db3691b794748f05a9765280db4fd85203b61ed8a7a1b4b80849260aa90e96676a85d544e8bdcb0235b1833b405#npm:1.3.0"],\ ["tslib", "npm:2.6.2"],\ ["value-or-promise", "npm:1.0.12"]\ ],\ @@ -5057,17 +5205,17 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:1.0.6", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-executor-legacy-ws-virtual-7c27760e26/0/cache/@graphql-tools-executor-legacy-ws-npm-1.0.6-f80c33271d-288091b4eb.zip/node_modules/@graphql-tools/executor-legacy-ws/",\ + ["virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:1.0.6", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-executor-legacy-ws-virtual-d342a464ac/0/cache/@graphql-tools-executor-legacy-ws-npm-1.0.6-f80c33271d-288091b4eb.zip/node_modules/@graphql-tools/executor-legacy-ws/",\ "packageDependencies": [\ - ["@graphql-tools/executor-legacy-ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:1.0.6"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/executor-legacy-ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:1.0.6"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["@types/ws", "npm:8.5.10"],\ ["graphql", "npm:16.8.1"],\ - ["isomorphic-ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:5.0.0"],\ + ["isomorphic-ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:5.0.0"],\ ["tslib", "npm:2.6.2"],\ - ["ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:8.16.0"]\ + ["ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:8.16.0"]\ ],\ "packagePeers": [\ "@types/graphql",\ @@ -5084,12 +5232,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.5", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-git-loader-virtual-e1afc5b5cc/0/cache/@graphql-tools-git-loader-npm-8.0.5-d5b783d151-cef8226956.zip/node_modules/@graphql-tools/git-loader/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.5", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-git-loader-virtual-52cf02ef47/0/cache/@graphql-tools-git-loader-npm-8.0.5-d5b783d151-cef8226956.zip/node_modules/@graphql-tools/git-loader/",\ "packageDependencies": [\ - ["@graphql-tools/git-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.5"],\ - ["@graphql-tools/graphql-tag-pluck", "virtual:3302742266117cbad81c11e28448019528470690ffbd0f535015247d443ca0f27ebda8275c6ea98b615a96ebbb70173acfe311573a2fadfca444af54b41c8cc7#npm:8.3.0"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/git-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.5"],\ + ["@graphql-tools/graphql-tag-pluck", "virtual:c44aa1ba02016f1215a4c0ec8f90af8849e81e98ea4c01df6b5cd46da26daf72807bf8cd14dc4d19951df34e1a28b4933762f89f355b875d53447ca4a3ca5691#npm:8.3.0"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["is-glob", "npm:4.0.3"],\ @@ -5112,14 +5260,14 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-github-loader-virtual-72cacf58de/0/cache/@graphql-tools-github-loader-npm-8.0.1-0c2f41018b-83787b69d6.zip/node_modules/@graphql-tools/github-loader/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-github-loader-virtual-c3bff99eab/0/cache/@graphql-tools-github-loader-npm-8.0.1-0c2f41018b-83787b69d6.zip/node_modules/@graphql-tools/github-loader/",\ "packageDependencies": [\ - ["@graphql-tools/github-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1"],\ + ["@graphql-tools/github-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1"],\ ["@ardatan/sync-fetch", "npm:0.0.1"],\ - ["@graphql-tools/executor-http", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.0.9"],\ - ["@graphql-tools/graphql-tag-pluck", "virtual:3302742266117cbad81c11e28448019528470690ffbd0f535015247d443ca0f27ebda8275c6ea98b615a96ebbb70173acfe311573a2fadfca444af54b41c8cc7#npm:8.3.0"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/executor-http", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.0.9"],\ + ["@graphql-tools/graphql-tag-pluck", "virtual:c44aa1ba02016f1215a4c0ec8f90af8849e81e98ea4c01df6b5cd46da26daf72807bf8cd14dc4d19951df34e1a28b4933762f89f355b875d53447ca4a3ca5691#npm:8.3.0"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["@whatwg-node/fetch", "npm:0.9.17"],\ ["graphql", "npm:16.8.1"],\ @@ -5141,12 +5289,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-graphql-file-loader-virtual-56aa0a02fd/0/cache/@graphql-tools-graphql-file-loader-npm-8.0.1-b6d30cc823-d27a9dc532.zip/node_modules/@graphql-tools/graphql-file-loader/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-graphql-file-loader-virtual-ea84ef0faf/0/cache/@graphql-tools-graphql-file-loader-npm-8.0.1-b6d30cc823-d27a9dc532.zip/node_modules/@graphql-tools/graphql-file-loader/",\ "packageDependencies": [\ - ["@graphql-tools/graphql-file-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1"],\ - ["@graphql-tools/import", "virtual:56aa0a02fdd7609e0aa45239b79aa283546734fd0dfa72a13f6e035f685eb2a6a87fe284da9db23ca687f412e8569e6d61c0ecc85fe585cecc80f1d11e1ee6d9#npm:7.0.1"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/graphql-file-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1"],\ + ["@graphql-tools/import", "virtual:ea84ef0faf98b9299e2cdb2c1239b36113aa6c2bb52487493ed763c60c82fec78f5171632e25d698aa3beeac837622620711582aecb1fbec8152d2db9589d247#npm:7.0.1"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["globby", "npm:11.1.0"],\ ["graphql", "npm:16.8.1"],\ @@ -5168,16 +5316,16 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:3302742266117cbad81c11e28448019528470690ffbd0f535015247d443ca0f27ebda8275c6ea98b615a96ebbb70173acfe311573a2fadfca444af54b41c8cc7#npm:8.3.0", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-graphql-tag-pluck-virtual-011571a2c1/0/cache/@graphql-tools-graphql-tag-pluck-npm-8.3.0-f2c1abcfe5-c5ca7470d6.zip/node_modules/@graphql-tools/graphql-tag-pluck/",\ + ["virtual:c44aa1ba02016f1215a4c0ec8f90af8849e81e98ea4c01df6b5cd46da26daf72807bf8cd14dc4d19951df34e1a28b4933762f89f355b875d53447ca4a3ca5691#npm:8.3.0", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-graphql-tag-pluck-virtual-2c51972449/0/cache/@graphql-tools-graphql-tag-pluck-npm-8.3.0-f2c1abcfe5-c5ca7470d6.zip/node_modules/@graphql-tools/graphql-tag-pluck/",\ "packageDependencies": [\ - ["@graphql-tools/graphql-tag-pluck", "virtual:3302742266117cbad81c11e28448019528470690ffbd0f535015247d443ca0f27ebda8275c6ea98b615a96ebbb70173acfe311573a2fadfca444af54b41c8cc7#npm:8.3.0"],\ + ["@graphql-tools/graphql-tag-pluck", "virtual:c44aa1ba02016f1215a4c0ec8f90af8849e81e98ea4c01df6b5cd46da26daf72807bf8cd14dc4d19951df34e1a28b4933762f89f355b875d53447ca4a3ca5691#npm:8.3.0"],\ ["@babel/core", "npm:7.24.4"],\ ["@babel/parser", "npm:7.24.4"],\ ["@babel/plugin-syntax-import-assertions", "virtual:68b28d6ebc8fbeabd43f33d965c85bf2927889c951271938e39b860da77c9727afe7affb1172d33a57100a70e5c44523cbfa359d929c75503e1e9b9cb2787e5c#npm:7.24.1"],\ ["@babel/traverse", "npm:7.24.1"],\ ["@babel/types", "npm:7.24.0"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["tslib", "npm:2.6.2"]\ @@ -5197,11 +5345,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:56aa0a02fdd7609e0aa45239b79aa283546734fd0dfa72a13f6e035f685eb2a6a87fe284da9db23ca687f412e8569e6d61c0ecc85fe585cecc80f1d11e1ee6d9#npm:7.0.1", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-import-virtual-2c8deec780/0/cache/@graphql-tools-import-npm-7.0.1-9f60498c03-20d693874c.zip/node_modules/@graphql-tools/import/",\ + ["virtual:ea84ef0faf98b9299e2cdb2c1239b36113aa6c2bb52487493ed763c60c82fec78f5171632e25d698aa3beeac837622620711582aecb1fbec8152d2db9589d247#npm:7.0.1", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-import-virtual-cc9e210d73/0/cache/@graphql-tools-import-npm-7.0.1-9f60498c03-20d693874c.zip/node_modules/@graphql-tools/import/",\ "packageDependencies": [\ - ["@graphql-tools/import", "virtual:56aa0a02fdd7609e0aa45239b79aa283546734fd0dfa72a13f6e035f685eb2a6a87fe284da9db23ca687f412e8569e6d61c0ecc85fe585cecc80f1d11e1ee6d9#npm:7.0.1"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/import", "virtual:ea84ef0faf98b9299e2cdb2c1239b36113aa6c2bb52487493ed763c60c82fec78f5171632e25d698aa3beeac837622620711582aecb1fbec8152d2db9589d247#npm:7.0.1"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["resolve-from", "npm:5.0.0"],\ @@ -5222,11 +5370,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-json-file-loader-virtual-452376fc53/0/cache/@graphql-tools-json-file-loader-npm-8.0.1-9c0768d795-690c7d58dd.zip/node_modules/@graphql-tools/json-file-loader/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-json-file-loader-virtual-91434e0a61/0/cache/@graphql-tools-json-file-loader-npm-8.0.1-9c0768d795-690c7d58dd.zip/node_modules/@graphql-tools/json-file-loader/",\ "packageDependencies": [\ - ["@graphql-tools/json-file-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/json-file-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["globby", "npm:11.1.0"],\ ["graphql", "npm:16.8.1"],\ @@ -5248,12 +5396,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.2", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-load-virtual-4b8b5a7ef6/0/cache/@graphql-tools-load-npm-8.0.2-0d1e8c157c-845535c3d4.zip/node_modules/@graphql-tools/load/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.2", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-load-virtual-fc1bfab16e/0/cache/@graphql-tools-load-npm-8.0.2-0d1e8c157c-845535c3d4.zip/node_modules/@graphql-tools/load/",\ "packageDependencies": [\ - ["@graphql-tools/load", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.2"],\ - ["@graphql-tools/schema", "virtual:353b52792c6de8bdee3e2eb92631676b3bdfa8767bb67f6f8b31c04327aca99792a38424470706f79855a72e65dabd8d2d369916801430551c88070849adbfb5#npm:10.0.3"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/load", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.2"],\ + ["@graphql-tools/schema", "virtual:06ad281b2139667642afa8bc815cb4c8cd0a52dcae9090d6c25bcbdbd742dba94f4aa7ef56910ca119c7fe5bf71173f5327c439af19b13550044c6fadb5dad0a#npm:10.0.3"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["p-limit", "npm:3.1.0"],\ @@ -5274,11 +5422,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:9.0.3", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-merge-virtual-0e28613996/0/cache/@graphql-tools-merge-npm-9.0.3-6ecd052f85-ce2a676348.zip/node_modules/@graphql-tools/merge/",\ + ["virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:9.0.3", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-merge-virtual-69ee023b9d/0/cache/@graphql-tools-merge-npm-9.0.3-6ecd052f85-ce2a676348.zip/node_modules/@graphql-tools/merge/",\ "packageDependencies": [\ - ["@graphql-tools/merge", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:9.0.3"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/merge", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:9.0.3"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["tslib", "npm:2.6.2"]\ @@ -5298,10 +5446,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:345d5041753dabeafe363012501cdd4d8834292c317a10b3b83119fceb8d9d17f3c6a6a10c8aa9d11285fc9ffd57ccd02e679987d31c18ef60b0635792395f16#npm:2.0.0", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-optimize-virtual-a54dff9e22/0/cache/@graphql-tools-optimize-npm-2.0.0-710bf461f3-db4ac0a2b0.zip/node_modules/@graphql-tools/optimize/",\ + ["virtual:5a439034ff3fdd05543739b3ff835dc99aa92646fa0ef0b8c2bb29efafe815b7fceaad3450ca83afbd61c4387ea0fddfa43286eb510117baa3098d91ed30dbe5#npm:2.0.0", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-optimize-virtual-adb71aa012/0/cache/@graphql-tools-optimize-npm-2.0.0-710bf461f3-db4ac0a2b0.zip/node_modules/@graphql-tools/optimize/",\ "packageDependencies": [\ - ["@graphql-tools/optimize", "virtual:345d5041753dabeafe363012501cdd4d8834292c317a10b3b83119fceb8d9d17f3c6a6a10c8aa9d11285fc9ffd57ccd02e679987d31c18ef60b0635792395f16#npm:2.0.0"],\ + ["@graphql-tools/optimize", "virtual:5a439034ff3fdd05543739b3ff835dc99aa92646fa0ef0b8c2bb29efafe815b7fceaad3450ca83afbd61c4387ea0fddfa43286eb510117baa3098d91ed30dbe5#npm:2.0.0"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["tslib", "npm:2.6.2"]\ @@ -5321,21 +5469,21 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.3", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-prisma-loader-virtual-9475cacb5d/0/cache/@graphql-tools-prisma-loader-npm-8.0.3-90f38b262b-603274a138.zip/node_modules/@graphql-tools/prisma-loader/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.3", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-prisma-loader-virtual-041949c6c2/0/cache/@graphql-tools-prisma-loader-npm-8.0.3-90f38b262b-603274a138.zip/node_modules/@graphql-tools/prisma-loader/",\ "packageDependencies": [\ - ["@graphql-tools/prisma-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.3"],\ - ["@graphql-tools/url-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.2"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/prisma-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.3"],\ + ["@graphql-tools/url-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.2"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["@types/js-yaml", "npm:4.0.9"],\ ["@types/json-stable-stringify", "npm:1.0.36"],\ ["@whatwg-node/fetch", "npm:0.9.17"],\ ["chalk", "npm:4.1.2"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["dotenv", "npm:16.4.5"],\ ["graphql", "npm:16.8.1"],\ - ["graphql-request", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.1.0"],\ + ["graphql-request", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.1.0"],\ ["http-proxy-agent", "npm:7.0.2"],\ ["https-proxy-agent", "npm:7.0.4"],\ ["jose", "npm:5.2.4"],\ @@ -5361,12 +5509,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:345d5041753dabeafe363012501cdd4d8834292c317a10b3b83119fceb8d9d17f3c6a6a10c8aa9d11285fc9ffd57ccd02e679987d31c18ef60b0635792395f16#npm:7.0.1", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-relay-operation-optimizer-virtual-315fe8e039/0/cache/@graphql-tools-relay-operation-optimizer-npm-7.0.1-637e63a4de-4bb08c764b.zip/node_modules/@graphql-tools/relay-operation-optimizer/",\ + ["virtual:5a439034ff3fdd05543739b3ff835dc99aa92646fa0ef0b8c2bb29efafe815b7fceaad3450ca83afbd61c4387ea0fddfa43286eb510117baa3098d91ed30dbe5#npm:7.0.1", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-relay-operation-optimizer-virtual-064d07955e/0/cache/@graphql-tools-relay-operation-optimizer-npm-7.0.1-637e63a4de-4bb08c764b.zip/node_modules/@graphql-tools/relay-operation-optimizer/",\ "packageDependencies": [\ - ["@graphql-tools/relay-operation-optimizer", "virtual:345d5041753dabeafe363012501cdd4d8834292c317a10b3b83119fceb8d9d17f3c6a6a10c8aa9d11285fc9ffd57ccd02e679987d31c18ef60b0635792395f16#npm:7.0.1"],\ - ["@ardatan/relay-compiler", "virtual:315fe8e03945d19505b167996c868c8870a902fe305a47be5835487f39039d589c4770134b486f808ced9a250896d983b334b6b6c679bee786a8f7f0ccd83e02#npm:12.0.0"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/relay-operation-optimizer", "virtual:5a439034ff3fdd05543739b3ff835dc99aa92646fa0ef0b8c2bb29efafe815b7fceaad3450ca83afbd61c4387ea0fddfa43286eb510117baa3098d91ed30dbe5#npm:7.0.1"],\ + ["@ardatan/relay-compiler", "virtual:064d07955e4e03c3efa3c2ad988b0be66aa0b1ba9384587674ab7ebdd9f9ceae87ed72474c463b678c3732be0ba0902ec3d07625e73cfca16479f91c240068ea#npm:12.0.0"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["tslib", "npm:2.6.2"]\ @@ -5386,12 +5534,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:353b52792c6de8bdee3e2eb92631676b3bdfa8767bb67f6f8b31c04327aca99792a38424470706f79855a72e65dabd8d2d369916801430551c88070849adbfb5#npm:10.0.3", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-schema-virtual-9689208013/0/cache/@graphql-tools-schema-npm-10.0.3-dd8d6e4a1a-420bfa29d0.zip/node_modules/@graphql-tools/schema/",\ + ["virtual:06ad281b2139667642afa8bc815cb4c8cd0a52dcae9090d6c25bcbdbd742dba94f4aa7ef56910ca119c7fe5bf71173f5327c439af19b13550044c6fadb5dad0a#npm:10.0.3", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-schema-virtual-188dd83070/0/cache/@graphql-tools-schema-npm-10.0.3-dd8d6e4a1a-420bfa29d0.zip/node_modules/@graphql-tools/schema/",\ "packageDependencies": [\ - ["@graphql-tools/schema", "virtual:353b52792c6de8bdee3e2eb92631676b3bdfa8767bb67f6f8b31c04327aca99792a38424470706f79855a72e65dabd8d2d369916801430551c88070849adbfb5#npm:10.0.3"],\ - ["@graphql-tools/merge", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:9.0.3"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/schema", "virtual:06ad281b2139667642afa8bc815cb4c8cd0a52dcae9090d6c25bcbdbd742dba94f4aa7ef56910ca119c7fe5bf71173f5327c439af19b13550044c6fadb5dad0a#npm:10.0.3"],\ + ["@graphql-tools/merge", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:9.0.3"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["tslib", "npm:2.6.2"],\ @@ -5412,25 +5560,25 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.2", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-url-loader-virtual-21bb54dcba/0/cache/@graphql-tools-url-loader-npm-8.0.2-8210244171-7ae1084bb2.zip/node_modules/@graphql-tools/url-loader/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.2", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-url-loader-virtual-724e3947f2/0/cache/@graphql-tools-url-loader-npm-8.0.2-8210244171-7ae1084bb2.zip/node_modules/@graphql-tools/url-loader/",\ "packageDependencies": [\ - ["@graphql-tools/url-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.2"],\ + ["@graphql-tools/url-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.2"],\ ["@ardatan/sync-fetch", "npm:0.0.1"],\ - ["@graphql-tools/delegate", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:10.0.4"],\ - ["@graphql-tools/executor-graphql-ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:1.1.2"],\ - ["@graphql-tools/executor-http", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.0.9"],\ - ["@graphql-tools/executor-legacy-ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:1.0.6"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ - ["@graphql-tools/wrap", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:10.0.5"],\ + ["@graphql-tools/delegate", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:10.0.4"],\ + ["@graphql-tools/executor-graphql-ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:1.1.2"],\ + ["@graphql-tools/executor-http", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.0.9"],\ + ["@graphql-tools/executor-legacy-ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:1.0.6"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ + ["@graphql-tools/wrap", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:10.0.5"],\ ["@types/graphql", null],\ ["@types/ws", "npm:8.5.10"],\ ["@whatwg-node/fetch", "npm:0.9.17"],\ ["graphql", "npm:16.8.1"],\ - ["isomorphic-ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:5.0.0"],\ + ["isomorphic-ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:5.0.0"],\ ["tslib", "npm:2.6.2"],\ ["value-or-promise", "npm:1.0.12"],\ - ["ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:8.16.0"]\ + ["ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:8.16.0"]\ ],\ "packagePeers": [\ "@types/graphql",\ @@ -5454,11 +5602,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:10.1.3", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-utils-virtual-1dea0d73f3/0/cache/@graphql-tools-utils-npm-10.1.3-bbb5343fd8-657e0758b3.zip/node_modules/@graphql-tools/utils/",\ + ["virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-utils-virtual-0f59afb70b/0/cache/@graphql-tools-utils-npm-10.1.2-2606110440-ae78ef4f6c.zip/node_modules/@graphql-tools/utils/",\ "packageDependencies": [\ - ["@graphql-tools/utils", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:10.1.3"],\ - ["@graphql-typed-document-node/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.2.0"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ + ["@graphql-typed-document-node/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.2.0"],\ ["@types/graphql", null],\ ["cross-inspect", "npm:1.0.0"],\ ["dset", "npm:3.1.3"],\ @@ -5471,11 +5619,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-utils-virtual-3b4065cea6/0/cache/@graphql-tools-utils-npm-10.1.2-2606110440-ae78ef4f6c.zip/node_modules/@graphql-tools/utils/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:10.1.3", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-utils-virtual-92e7aa23c2/0/cache/@graphql-tools-utils-npm-10.1.3-bbb5343fd8-657e0758b3.zip/node_modules/@graphql-tools/utils/",\ "packageDependencies": [\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ - ["@graphql-typed-document-node/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.2.0"],\ + ["@graphql-tools/utils", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:10.1.3"],\ + ["@graphql-typed-document-node/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.2.0"],\ ["@types/graphql", null],\ ["cross-inspect", "npm:1.0.0"],\ ["dset", "npm:3.1.3"],\ @@ -5497,13 +5645,13 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:10.0.5", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-tools-wrap-virtual-4a9909f9eb/0/cache/@graphql-tools-wrap-npm-10.0.5-3ddae5a409-3987542491.zip/node_modules/@graphql-tools/wrap/",\ + ["virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:10.0.5", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-tools-wrap-virtual-3b6e1a397a/0/cache/@graphql-tools-wrap-npm-10.0.5-3ddae5a409-3987542491.zip/node_modules/@graphql-tools/wrap/",\ "packageDependencies": [\ - ["@graphql-tools/wrap", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:10.0.5"],\ - ["@graphql-tools/delegate", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:10.0.4"],\ - ["@graphql-tools/schema", "virtual:353b52792c6de8bdee3e2eb92631676b3bdfa8767bb67f6f8b31c04327aca99792a38424470706f79855a72e65dabd8d2d369916801430551c88070849adbfb5#npm:10.0.3"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/wrap", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:10.0.5"],\ + ["@graphql-tools/delegate", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:10.0.4"],\ + ["@graphql-tools/schema", "virtual:06ad281b2139667642afa8bc815cb4c8cd0a52dcae9090d6c25bcbdbd742dba94f4aa7ef56910ca119c7fe5bf71173f5327c439af19b13550044c6fadb5dad0a#npm:10.0.3"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["tslib", "npm:2.6.2"],\ @@ -5524,10 +5672,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.2.0", {\ - "packageLocation": "./.yarn/__virtual__/@graphql-typed-document-node-core-virtual-3bf4623d05/0/cache/@graphql-typed-document-node-core-npm-3.2.0-505adb1e90-94e9d75c1f.zip/node_modules/@graphql-typed-document-node/core/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.2.0", {\ + "packageLocation": "./.yarn/__virtual__/@graphql-typed-document-node-core-virtual-e6a8d5ed4a/0/cache/@graphql-typed-document-node-core-npm-3.2.0-505adb1e90-94e9d75c1f.zip/node_modules/@graphql-typed-document-node/core/",\ "packageDependencies": [\ - ["@graphql-typed-document-node/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.2.0"],\ + ["@graphql-typed-document-node/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.2.0"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"]\ ],\ @@ -5620,7 +5768,7 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["@humanwhocodes/config-array", "npm:0.11.14"],\ ["@humanwhocodes/object-schema", "npm:2.0.3"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["minimatch", "npm:3.1.2"]\ ],\ "linkType": "HARD"\ @@ -5630,7 +5778,7 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["@humanwhocodes/config-array", "npm:0.12.3"],\ ["@humanwhocodes/object-schema", "npm:2.0.3"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["minimatch", "npm:3.1.2"]\ ],\ "linkType": "HARD"\ @@ -6114,15 +6262,6 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@mswjs/cookies", [\ - ["npm:0.2.2", {\ - "packageLocation": "./.yarn/cache/@mswjs-cookies-npm-0.2.2-fdd3f4ab67-f950062538.zip/node_modules/@mswjs/cookies/",\ - "packageDependencies": [\ - ["@mswjs/cookies", "npm:0.2.2"],\ - ["@types/set-cookie-parser", "npm:2.4.7"],\ - ["set-cookie-parser", "npm:2.6.0"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:1.1.0", {\ "packageLocation": "./.yarn/cache/@mswjs-cookies-npm-1.1.0-a9e9053518-c8442b77f4.zip/node_modules/@mswjs/cookies/",\ "packageDependencies": [\ @@ -6131,22 +6270,30 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["@mswjs/interceptors", [\ - ["npm:0.17.10", {\ - "packageLocation": "./.yarn/cache/@mswjs-interceptors-npm-0.17.10-c1199a9424-0343a93711.zip/node_modules/@mswjs/interceptors/",\ + ["@mswjs/data", [\ + ["npm:0.16.1", {\ + "packageLocation": "./.yarn/cache/@mswjs-data-npm-0.16.1-e80ee691e1-9518f5e918.zip/node_modules/@mswjs/data/",\ "packageDependencies": [\ - ["@mswjs/interceptors", "npm:0.17.10"],\ - ["@open-draft/until", "npm:1.0.3"],\ - ["@types/debug", "npm:4.1.12"],\ - ["@xmldom/xmldom", "npm:0.8.10"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ - ["headers-polyfill", "npm:3.2.5"],\ + ["@mswjs/data", "npm:0.16.1"],\ + ["@types/lodash", "npm:4.17.0"],\ + ["@types/md5", "npm:2.3.5"],\ + ["@types/pluralize", "npm:0.0.29"],\ + ["@types/uuid", "npm:8.3.4"],\ + ["date-fns", "npm:2.30.0"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ + ["graphql", "npm:16.8.1"],\ + ["lodash", "npm:4.17.21"],\ + ["md5", "npm:2.3.0"],\ + ["msw", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:2.2.14"],\ ["outvariant", "npm:1.4.2"],\ - ["strict-event-emitter", "npm:0.2.8"],\ - ["web-encoding", "npm:1.1.5"]\ + ["pluralize", "npm:8.0.0"],\ + ["strict-event-emitter", "npm:0.5.1"],\ + ["uuid", "npm:8.3.2"]\ ],\ "linkType": "HARD"\ - }],\ + }]\ + ]],\ + ["@mswjs/interceptors", [\ ["npm:0.26.15", {\ "packageLocation": "./.yarn/cache/@mswjs-interceptors-npm-0.26.15-0819076884-378c4b14ad.zip/node_modules/@mswjs/interceptors/",\ "packageDependencies": [\ @@ -6161,6 +6308,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@noble/hashes", [\ + ["npm:1.4.0", {\ + "packageLocation": "./.yarn/cache/@noble-hashes-npm-1.4.0-9389282fd6-8c3f005ee7.zip/node_modules/@noble/hashes/",\ + "packageDependencies": [\ + ["@noble/hashes", "npm:1.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@nodelib/fs.scandir", [\ ["npm:2.1.5", {\ "packageLocation": "./.yarn/cache/@nodelib-fs.scandir-npm-2.1.5-89c67370dd-732c3b6d1b.zip/node_modules/@nodelib/fs.scandir/",\ @@ -6368,16 +6524,16 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3", {\ - "packageLocation": "./.yarn/__virtual__/@nx-devkit-virtual-500e7be4e8/0/cache/@nx-devkit-npm-18.3.3-071c5b486f-eb611a9613.zip/node_modules/@nx/devkit/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3", {\ + "packageLocation": "./.yarn/__virtual__/@nx-devkit-virtual-b1c848b053/0/cache/@nx-devkit-npm-18.3.3-071c5b486f-eb611a9613.zip/node_modules/@nx/devkit/",\ "packageDependencies": [\ - ["@nx/devkit", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["@nx/devkit", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["@nrwl/devkit", "npm:18.3.3"],\ ["@types/nx", null],\ ["ejs", "npm:3.1.9"],\ ["enquirer", "npm:2.3.6"],\ ["ignore", "npm:5.3.1"],\ - ["nx", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["nx", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["semver", "npm:7.6.0"],\ ["tmp", "npm:0.2.3"],\ ["tslib", "npm:2.6.2"],\ @@ -6440,10 +6596,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3", {\ - "packageLocation": "./.yarn/__virtual__/@nx-esbuild-virtual-450411c9fe/0/cache/@nx-esbuild-npm-18.3.3-8765fa82b2-a3e55efc99.zip/node_modules/@nx/esbuild/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3", {\ + "packageLocation": "./.yarn/__virtual__/@nx-esbuild-virtual-78765c605f/0/cache/@nx-esbuild-npm-18.3.3-8765fa82b2-a3e55efc99.zip/node_modules/@nx/esbuild/",\ "packageDependencies": [\ - ["@nx/esbuild", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["@nx/esbuild", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["@nrwl/esbuild", "npm:18.3.3"],\ ["@nx/devkit", "virtual:e56b832509978bc5e240ed4a65f2ed0eac855b9539d5a4c6ad2d287c44f0a75c152be27aaad194f462e83c9da129e838ae845e1c68b60d265bc3121e2e3a76c2#npm:18.3.3"],\ ["@nx/js", "virtual:e56b832509978bc5e240ed4a65f2ed0eac855b9539d5a4c6ad2d287c44f0a75c152be27aaad194f462e83c9da129e838ae845e1c68b60d265bc3121e2e3a76c2#npm:18.3.3"],\ @@ -6710,10 +6866,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3", {\ - "packageLocation": "./.yarn/__virtual__/@nx-playwright-virtual-134f81ff83/0/cache/@nx-playwright-npm-18.3.3-aaf7e8d48c-52cbc5ee9e.zip/node_modules/@nx/playwright/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3", {\ + "packageLocation": "./.yarn/__virtual__/@nx-playwright-virtual-c238f5c52c/0/cache/@nx-playwright-npm-18.3.3-aaf7e8d48c-52cbc5ee9e.zip/node_modules/@nx/playwright/",\ "packageDependencies": [\ - ["@nx/playwright", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["@nx/playwright", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["@nx/devkit", "virtual:e56b832509978bc5e240ed4a65f2ed0eac855b9539d5a4c6ad2d287c44f0a75c152be27aaad194f462e83c9da129e838ae845e1c68b60d265bc3121e2e3a76c2#npm:18.3.3"],\ ["@nx/eslint", "virtual:41cfb0d93d8f1f80cb47f3ad08355c786f8049206e268f2d7164dc0f5fe99e7f8c9c0fed5b3dd539eb6429bc94158ac9084e8291ac1c7be0f1f25182ce597da3#npm:18.3.3"],\ ["@nx/js", "virtual:e56b832509978bc5e240ed4a65f2ed0eac855b9539d5a4c6ad2d287c44f0a75c152be27aaad194f462e83c9da129e838ae845e1c68b60d265bc3121e2e3a76c2#npm:18.3.3"],\ @@ -6782,10 +6938,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3", {\ - "packageLocation": "./.yarn/__virtual__/@nx-vite-virtual-3c2582dc02/0/cache/@nx-vite-npm-18.3.3-fa75cdd0c0-903218566d.zip/node_modules/@nx/vite/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3", {\ + "packageLocation": "./.yarn/__virtual__/@nx-vite-virtual-f047d072db/0/cache/@nx-vite-npm-18.3.3-fa75cdd0c0-903218566d.zip/node_modules/@nx/vite/",\ "packageDependencies": [\ - ["@nx/vite", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["@nx/vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["@nrwl/vite", "npm:18.3.3"],\ ["@nx/devkit", "virtual:e56b832509978bc5e240ed4a65f2ed0eac855b9539d5a4c6ad2d287c44f0a75c152be27aaad194f462e83c9da129e838ae845e1c68b60d265bc3121e2e3a76c2#npm:18.3.3"],\ ["@nx/js", "virtual:e56b832509978bc5e240ed4a65f2ed0eac855b9539d5a4c6ad2d287c44f0a75c152be27aaad194f462e83c9da129e838ae845e1c68b60d265bc3121e2e3a76c2#npm:18.3.3"],\ @@ -6795,8 +6951,8 @@ const RAW_RUNTIME_STATE = ["@types/vitest", null],\ ["enquirer", "npm:2.3.6"],\ ["tsconfig-paths", "npm:4.2.0"],\ - ["vite", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.2.10"],\ - ["vitest", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"]\ + ["vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.2.10"],\ + ["vitest", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"]\ ],\ "packagePeers": [\ "@types/vite",\ @@ -6819,8 +6975,8 @@ const RAW_RUNTIME_STATE = ["@types/vitest", null],\ ["enquirer", "npm:2.3.6"],\ ["tsconfig-paths", "npm:4.2.0"],\ - ["vite", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.2.10"],\ - ["vitest", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:1.5.1"]\ + ["vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.2.10"],\ + ["vitest", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:1.5.2"]\ ],\ "packagePeers": [\ "@types/vite",\ @@ -6884,13 +7040,6 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@open-draft/until", [\ - ["npm:1.0.3", {\ - "packageLocation": "./.yarn/cache/@open-draft-until-npm-1.0.3-c0d6a46a29-f88bcd774b.zip/node_modules/@open-draft/until/",\ - "packageDependencies": [\ - ["@open-draft/until", "npm:1.0.3"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:2.1.0", {\ "packageLocation": "./.yarn/cache/@open-draft-until-npm-2.1.0-e27da33c52-61d3f99718.zip/node_modules/@open-draft/until/",\ "packageDependencies": [\ @@ -6899,6 +7048,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@paralleldrive/cuid2", [\ + ["npm:2.2.2", {\ + "packageLocation": "./.yarn/cache/@paralleldrive-cuid2-npm-2.2.2-e6061749b2-af5826df93.zip/node_modules/@paralleldrive/cuid2/",\ + "packageDependencies": [\ + ["@paralleldrive/cuid2", "npm:2.2.2"],\ + ["@noble/hashes", "npm:1.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@parcel/watcher", [\ ["npm:2.4.1", {\ "packageLocation": "./.yarn/cache/@parcel-watcher-npm-2.4.1-2b3c6bb4aa-33b7112094.zip/node_modules/@parcel/watcher/",\ @@ -7128,10 +7287,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.41.1", {\ - "packageLocation": "./.yarn/__virtual__/@pothos-core-virtual-a4d9fd96e6/0/cache/@pothos-core-npm-3.41.1-e97ffd4c44-9bf0e64108.zip/node_modules/@pothos/core/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.41.1", {\ + "packageLocation": "./.yarn/__virtual__/@pothos-core-virtual-adec409460/0/cache/@pothos-core-npm-3.41.1-e97ffd4c44-9bf0e64108.zip/node_modules/@pothos/core/",\ "packageDependencies": [\ - ["@pothos/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.41.1"],\ + ["@pothos/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.41.1"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"]\ ],\ @@ -7150,10 +7309,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1", {\ - "packageLocation": "./.yarn/__virtual__/@remix-run-dev-virtual-671118d6e1/0/cache/@remix-run-dev-npm-2.9.1-ee87cc6138-b532cd4920.zip/node_modules/@remix-run/dev/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1", {\ + "packageLocation": "./.yarn/__virtual__/@remix-run-dev-virtual-9f82bce8f5/0/cache/@remix-run-dev-npm-2.9.1-ee87cc6138-b532cd4920.zip/node_modules/@remix-run/dev/",\ "packageDependencies": [\ - ["@remix-run/dev", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ + ["@remix-run/dev", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ ["@babel/core", "npm:7.24.4"],\ ["@babel/generator", "npm:7.24.4"],\ ["@babel/parser", "npm:7.24.4"],\ @@ -7164,11 +7323,11 @@ const RAW_RUNTIME_STATE = ["@babel/types", "npm:7.24.0"],\ ["@mdx-js/mdx", "npm:2.3.0"],\ ["@npmcli/package-json", "npm:4.0.1"],\ - ["@remix-run/node", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@remix-run/react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ + ["@remix-run/node", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ ["@remix-run/router", "npm:1.16.0"],\ ["@remix-run/serve", "npm:2.9.1"],\ - ["@remix-run/server-runtime", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:2.9.1"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ ["@types/mdx", "npm:2.0.13"],\ ["@types/remix-run__react", null],\ ["@types/remix-run__serve", null],\ @@ -7184,7 +7343,7 @@ const RAW_RUNTIME_STATE = ["dotenv", "npm:16.4.5"],\ ["es-module-lexer", "npm:1.5.0"],\ ["esbuild", "npm:0.17.6"],\ - ["esbuild-plugins-node-modules-polyfill", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:1.6.3"],\ + ["esbuild-plugins-node-modules-polyfill", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:1.6.3"],\ ["execa", "npm:5.1.1"],\ ["exit-hook", "npm:2.2.1"],\ ["express", "npm:4.19.2"],\ @@ -7201,9 +7360,9 @@ const RAW_RUNTIME_STATE = ["picomatch", "npm:2.3.1"],\ ["pidtree", "npm:0.6.0"],\ ["postcss", "npm:8.4.38"],\ - ["postcss-discard-duplicates", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:5.1.0"],\ - ["postcss-load-config", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:4.0.2"],\ - ["postcss-modules", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:6.0.0"],\ + ["postcss-discard-duplicates", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:5.1.0"],\ + ["postcss-load-config", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:4.0.2"],\ + ["postcss-modules", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:6.0.0"],\ ["prettier", "npm:2.8.8"],\ ["pretty-ms", "npm:7.0.1"],\ ["react-refresh", "npm:0.14.0"],\ @@ -7214,9 +7373,9 @@ const RAW_RUNTIME_STATE = ["tar-fs", "npm:2.1.1"],\ ["tsconfig-paths", "npm:4.2.0"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"],\ - ["vite", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.2.10"],\ + ["vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.2.10"],\ ["wrangler", null],\ - ["ws", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:7.5.9"]\ + ["ws", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:7.5.9"]\ ],\ "packagePeers": [\ "@remix-run/react",\ @@ -7246,11 +7405,11 @@ const RAW_RUNTIME_STATE = ["@babel/types", "npm:7.24.0"],\ ["@mdx-js/mdx", "npm:2.3.0"],\ ["@npmcli/package-json", "npm:4.0.1"],\ - ["@remix-run/node", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@remix-run/react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ + ["@remix-run/node", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ ["@remix-run/router", "npm:1.16.0"],\ ["@remix-run/serve", null],\ - ["@remix-run/server-runtime", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:2.9.1"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ ["@types/mdx", "npm:2.0.13"],\ ["@types/remix-run__react", null],\ ["@types/remix-run__serve", null],\ @@ -7266,7 +7425,7 @@ const RAW_RUNTIME_STATE = ["dotenv", "npm:16.4.5"],\ ["es-module-lexer", "npm:1.5.0"],\ ["esbuild", "npm:0.17.6"],\ - ["esbuild-plugins-node-modules-polyfill", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:1.6.3"],\ + ["esbuild-plugins-node-modules-polyfill", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:1.6.3"],\ ["execa", "npm:5.1.1"],\ ["exit-hook", "npm:2.2.1"],\ ["express", "npm:4.19.2"],\ @@ -7283,9 +7442,9 @@ const RAW_RUNTIME_STATE = ["picomatch", "npm:2.3.1"],\ ["pidtree", "npm:0.6.0"],\ ["postcss", "npm:8.4.38"],\ - ["postcss-discard-duplicates", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:5.1.0"],\ - ["postcss-load-config", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:4.0.2"],\ - ["postcss-modules", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:6.0.0"],\ + ["postcss-discard-duplicates", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:5.1.0"],\ + ["postcss-load-config", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:4.0.2"],\ + ["postcss-modules", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:6.0.0"],\ ["prettier", "npm:2.8.8"],\ ["pretty-ms", "npm:7.0.1"],\ ["react-refresh", "npm:0.14.0"],\ @@ -7296,9 +7455,9 @@ const RAW_RUNTIME_STATE = ["tar-fs", "npm:2.1.1"],\ ["tsconfig-paths", "npm:4.2.0"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"],\ - ["vite", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.2.10"],\ + ["vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.2.10"],\ ["wrangler", null],\ - ["ws", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:7.5.9"]\ + ["ws", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:7.5.9"]\ ],\ "packagePeers": [\ "@remix-run/react",\ @@ -7350,11 +7509,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1", {\ - "packageLocation": "./.yarn/__virtual__/@remix-run-node-virtual-b379f8bc63/0/cache/@remix-run-node-npm-2.9.1-e4d6090eb4-e8a3869998.zip/node_modules/@remix-run/node/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1", {\ + "packageLocation": "./.yarn/__virtual__/@remix-run-node-virtual-10031379f3/0/cache/@remix-run-node-npm-2.9.1-e4d6090eb4-e8a3869998.zip/node_modules/@remix-run/node/",\ "packageDependencies": [\ - ["@remix-run/node", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@remix-run/server-runtime", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:2.9.1"],\ + ["@remix-run/node", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ ["@remix-run/web-fetch", "npm:4.4.2"],\ ["@types/typescript", null],\ ["@web3-storage/multipart-parser", "npm:1.0.0"],\ @@ -7399,19 +7558,19 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1", {\ - "packageLocation": "./.yarn/__virtual__/@remix-run-react-virtual-3c4d9ac6f7/0/cache/@remix-run-react-npm-2.9.1-1f582567e9-221a2fe916.zip/node_modules/@remix-run/react/",\ + ["virtual:7008267083e10f51122dcae4ea27a7a5b66dd235335f8f8da29e5c6ff7b2c6acea9e07afd044f3572cfad7fa6d9fa5c4130cef762d2d5a74232b2f5f830323c4#npm:2.9.1", {\ + "packageLocation": "./.yarn/__virtual__/@remix-run-react-virtual-e2a3237075/0/cache/@remix-run-react-npm-2.9.1-1f582567e9-221a2fe916.zip/node_modules/@remix-run/react/",\ "packageDependencies": [\ - ["@remix-run/react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ + ["@remix-run/react", "virtual:7008267083e10f51122dcae4ea27a7a5b66dd235335f8f8da29e5c6ff7b2c6acea9e07afd044f3572cfad7fa6d9fa5c4130cef762d2d5a74232b2f5f830323c4#npm:2.9.1"],\ ["@remix-run/router", "npm:1.16.0"],\ - ["@remix-run/server-runtime", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:2.9.1"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ ["@types/react", "npm:18.2.75"],\ - ["@types/react-dom", "npm:18.2.24"],\ + ["@types/react-dom", null],\ ["@types/typescript", null],\ ["react", "npm:18.2.0"],\ - ["react-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.2.0"],\ - ["react-router", "virtual:3c4d9ac6f7c92217831c5fde512c9c0a25dd2072c7a52e582430eedbf9f37e67b70e1e3b7bade3ae104bcf0a8cf626eb3f45b43136e09b30be763ebb7b40e71c#npm:6.23.0"],\ - ["react-router-dom", "virtual:3c4d9ac6f7c92217831c5fde512c9c0a25dd2072c7a52e582430eedbf9f37e67b70e1e3b7bade3ae104bcf0a8cf626eb3f45b43136e09b30be763ebb7b40e71c#npm:6.23.0"],\ + ["react-dom", null],\ + ["react-router", "virtual:91c0f82627254fd53770ca271e71bf9959bfc7ec14f9da972069ab0b5f79f09fa64a06efce16d419f4bbfe8ce79e8e761f939a4625e3e61579d199b8cadb101b#npm:6.23.0"],\ + ["react-router-dom", "virtual:7008267083e10f51122dcae4ea27a7a5b66dd235335f8f8da29e5c6ff7b2c6acea9e07afd044f3572cfad7fa6d9fa5c4130cef762d2d5a74232b2f5f830323c4#npm:6.23.0"],\ ["turbo-stream", "npm:2.0.0"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ ],\ @@ -7425,19 +7584,19 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:8357736ef134b7863f91d42eddce98478ba946d8fa91d035087f581e8019ab4c100fd43e82438b7deae8c5c6a0342e97150e5a38e5a30c47f1258390b04d764a#npm:2.9.1", {\ - "packageLocation": "./.yarn/__virtual__/@remix-run-react-virtual-b533048972/0/cache/@remix-run-react-npm-2.9.1-1f582567e9-221a2fe916.zip/node_modules/@remix-run/react/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1", {\ + "packageLocation": "./.yarn/__virtual__/@remix-run-react-virtual-91c0f82627/0/cache/@remix-run-react-npm-2.9.1-1f582567e9-221a2fe916.zip/node_modules/@remix-run/react/",\ "packageDependencies": [\ - ["@remix-run/react", "virtual:8357736ef134b7863f91d42eddce98478ba946d8fa91d035087f581e8019ab4c100fd43e82438b7deae8c5c6a0342e97150e5a38e5a30c47f1258390b04d764a#npm:2.9.1"],\ + ["@remix-run/react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ ["@remix-run/router", "npm:1.16.0"],\ - ["@remix-run/server-runtime", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:2.9.1"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ ["@types/react", "npm:18.2.75"],\ - ["@types/react-dom", null],\ + ["@types/react-dom", "npm:18.2.24"],\ ["@types/typescript", null],\ ["react", "npm:18.2.0"],\ - ["react-dom", null],\ - ["react-router", "virtual:3c4d9ac6f7c92217831c5fde512c9c0a25dd2072c7a52e582430eedbf9f37e67b70e1e3b7bade3ae104bcf0a8cf626eb3f45b43136e09b30be763ebb7b40e71c#npm:6.23.0"],\ - ["react-router-dom", "virtual:8357736ef134b7863f91d42eddce98478ba946d8fa91d035087f581e8019ab4c100fd43e82438b7deae8c5c6a0342e97150e5a38e5a30c47f1258390b04d764a#npm:6.23.0"],\ + ["react-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.2.0"],\ + ["react-router", "virtual:91c0f82627254fd53770ca271e71bf9959bfc7ec14f9da972069ab0b5f79f09fa64a06efce16d419f4bbfe8ce79e8e761f939a4625e3e61579d199b8cadb101b#npm:6.23.0"],\ + ["react-router-dom", "virtual:91c0f82627254fd53770ca271e71bf9959bfc7ec14f9da972069ab0b5f79f09fa64a06efce16d419f4bbfe8ce79e8e761f939a4625e3e61579d199b8cadb101b#npm:6.23.0"],\ ["turbo-stream", "npm:2.0.0"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ ],\ @@ -7500,18 +7659,19 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:5c7fe6728d933369472b327a3b9ce7cea28aa44fd0918a7fec242784a51f6fa9f70e7bddab7fe6e24b00373fc044c5d30e789bba3f42502e81da90a6edc7106d#npm:2.8.1", {\ - "packageLocation": "./.yarn/__virtual__/@remix-run-server-runtime-virtual-98586feb2a/0/cache/@remix-run-server-runtime-npm-2.8.1-f97405752d-68386ab092.zip/node_modules/@remix-run/server-runtime/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1", {\ + "packageLocation": "./.yarn/__virtual__/@remix-run-server-runtime-virtual-bed0cb36cc/0/cache/@remix-run-server-runtime-npm-2.9.1-49c29e8df2-941329c6a7.zip/node_modules/@remix-run/server-runtime/",\ "packageDependencies": [\ - ["@remix-run/server-runtime", "virtual:5c7fe6728d933369472b327a3b9ce7cea28aa44fd0918a7fec242784a51f6fa9f70e7bddab7fe6e24b00373fc044c5d30e789bba3f42502e81da90a6edc7106d#npm:2.8.1"],\ - ["@remix-run/router", "npm:1.15.3"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/router", "npm:1.16.0"],\ ["@types/cookie", "npm:0.6.0"],\ ["@types/typescript", null],\ ["@web3-storage/multipart-parser", "npm:1.0.0"],\ ["cookie", "npm:0.6.0"],\ ["set-cookie-parser", "npm:2.6.0"],\ ["source-map", "npm:0.7.4"],\ - ["typescript", null]\ + ["turbo-stream", "npm:2.0.0"],\ + ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ ],\ "packagePeers": [\ "@types/typescript",\ @@ -7519,19 +7679,18 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:2.9.1", {\ - "packageLocation": "./.yarn/__virtual__/@remix-run-server-runtime-virtual-747de1c98f/0/cache/@remix-run-server-runtime-npm-2.9.1-49c29e8df2-941329c6a7.zip/node_modules/@remix-run/server-runtime/",\ + ["virtual:baccbf205ae7c7d7a7349983a87a2fc19fa516d6cadc2c994e4cb1d9712a7048c1d4be207420919c91edb7b6acc693838c0db5d66d93515aa48fe110dd661de7#npm:2.8.1", {\ + "packageLocation": "./.yarn/__virtual__/@remix-run-server-runtime-virtual-8e5d5dba34/0/cache/@remix-run-server-runtime-npm-2.8.1-f97405752d-68386ab092.zip/node_modules/@remix-run/server-runtime/",\ "packageDependencies": [\ - ["@remix-run/server-runtime", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:2.9.1"],\ - ["@remix-run/router", "npm:1.16.0"],\ + ["@remix-run/server-runtime", "virtual:baccbf205ae7c7d7a7349983a87a2fc19fa516d6cadc2c994e4cb1d9712a7048c1d4be207420919c91edb7b6acc693838c0db5d66d93515aa48fe110dd661de7#npm:2.8.1"],\ + ["@remix-run/router", "npm:1.15.3"],\ ["@types/cookie", "npm:0.6.0"],\ ["@types/typescript", null],\ ["@web3-storage/multipart-parser", "npm:1.0.0"],\ ["cookie", "npm:0.6.0"],\ ["set-cookie-parser", "npm:2.6.0"],\ ["source-map", "npm:0.7.4"],\ - ["turbo-stream", "npm:2.0.0"],\ - ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ + ["typescript", null]\ ],\ "packagePeers": [\ "@types/typescript",\ @@ -7568,17 +7727,17 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1", {\ - "packageLocation": "./.yarn/__virtual__/@remix-run-testing-virtual-8357736ef1/0/cache/@remix-run-testing-npm-2.9.1-054d98cd70-efcaea7647.zip/node_modules/@remix-run/testing/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1", {\ + "packageLocation": "./.yarn/__virtual__/@remix-run-testing-virtual-7008267083/0/cache/@remix-run-testing-npm-2.9.1-054d98cd70-efcaea7647.zip/node_modules/@remix-run/testing/",\ "packageDependencies": [\ - ["@remix-run/testing", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@remix-run/node", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@remix-run/react", "virtual:8357736ef134b7863f91d42eddce98478ba946d8fa91d035087f581e8019ab4c100fd43e82438b7deae8c5c6a0342e97150e5a38e5a30c47f1258390b04d764a#npm:2.9.1"],\ + ["@remix-run/testing", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/node", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/react", "virtual:7008267083e10f51122dcae4ea27a7a5b66dd235335f8f8da29e5c6ff7b2c6acea9e07afd044f3572cfad7fa6d9fa5c4130cef762d2d5a74232b2f5f830323c4#npm:2.9.1"],\ ["@remix-run/router", "npm:1.16.0"],\ ["@types/react", "npm:18.2.75"],\ ["@types/typescript", null],\ ["react", "npm:18.2.0"],\ - ["react-router-dom", "virtual:8357736ef134b7863f91d42eddce98478ba946d8fa91d035087f581e8019ab4c100fd43e82438b7deae8c5c6a0342e97150e5a38e5a30c47f1258390b04d764a#npm:6.23.0"],\ + ["react-router-dom", "virtual:7008267083e10f51122dcae4ea27a7a5b66dd235335f8f8da29e5c6ff7b2c6acea9e07afd044f3572cfad7fa6d9fa5c4130cef762d2d5a74232b2f5f830323c4#npm:6.23.0"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ ],\ "packagePeers": [\ @@ -7590,6 +7749,43 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@remix-run/v1-route-convention", [\ + ["npm:0.1.4", {\ + "packageLocation": "./.yarn/cache/@remix-run-v1-route-convention-npm-0.1.4-d336e45418-f9984d9212.zip/node_modules/@remix-run/v1-route-convention/",\ + "packageDependencies": [\ + ["@remix-run/v1-route-convention", "npm:0.1.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:2c99b3e937d767c5e1fbeafd378ac148b6ebe3bf0502dd7de6888f7ea817433b5b2a267b280f6e336d6d75e08968611523373519f4b69c56df21bdc403091af0#npm:0.1.4", {\ + "packageLocation": "./.yarn/__virtual__/@remix-run-v1-route-convention-virtual-df38120110/0/cache/@remix-run-v1-route-convention-npm-0.1.4-d336e45418-f9984d9212.zip/node_modules/@remix-run/v1-route-convention/",\ + "packageDependencies": [\ + ["@remix-run/v1-route-convention", "virtual:2c99b3e937d767c5e1fbeafd378ac148b6ebe3bf0502dd7de6888f7ea817433b5b2a267b280f6e336d6d75e08968611523373519f4b69c56df21bdc403091af0#npm:0.1.4"],\ + ["@remix-run/dev", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@types/remix-run__dev", null],\ + ["minimatch", "npm:7.4.6"]\ + ],\ + "packagePeers": [\ + "@remix-run/dev",\ + "@types/remix-run__dev"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:68459c0c85ca646a10107f3b38fc63a47b5e64300cc2d9f9db6462a01903420a230bcd21782478dd7bf9d012e6865f9e42c01dc797fc4756d6e7ee83ffb7802e#npm:0.1.4", {\ + "packageLocation": "./.yarn/__virtual__/@remix-run-v1-route-convention-virtual-4a9d0ff1ed/0/cache/@remix-run-v1-route-convention-npm-0.1.4-d336e45418-f9984d9212.zip/node_modules/@remix-run/v1-route-convention/",\ + "packageDependencies": [\ + ["@remix-run/v1-route-convention", "virtual:68459c0c85ca646a10107f3b38fc63a47b5e64300cc2d9f9db6462a01903420a230bcd21782478dd7bf9d012e6865f9e42c01dc797fc4756d6e7ee83ffb7802e#npm:0.1.4"],\ + ["@remix-run/dev", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:2.9.1"],\ + ["@types/remix-run__dev", null],\ + ["minimatch", "npm:7.4.6"]\ + ],\ + "packagePeers": [\ + "@remix-run/dev",\ + "@types/remix-run__dev"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@remix-run/web-blob", [\ ["npm:3.1.0", {\ "packageLocation": "./.yarn/cache/@remix-run-web-blob-npm-3.1.0-933a5434f2-045796faca.zip/node_modules/@remix-run/web-blob/",\ @@ -7808,6 +8004,13 @@ const RAW_RUNTIME_STATE = ["@sindresorhus/is", "npm:4.6.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:6.3.0", {\ + "packageLocation": "./.yarn/cache/@sindresorhus-is-npm-6.3.0-0c6ba20d57-40d201fc1a.zip/node_modules/@sindresorhus/is/",\ + "packageDependencies": [\ + ["@sindresorhus/is", "npm:6.3.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@sinonjs/commons", [\ @@ -8137,11 +8340,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:10f3a3d4c1943097f69101aff17b66ef28782db324c42f51f2e55d4090eef53c5d8c7934e9a07ec3622fac66d1d976aa76ec9e9a54a2594aa48045c380e2951a#npm:1.13.0", {\ - "packageLocation": "./.yarn/__virtual__/@swc-node-core-virtual-b87edd0763/0/cache/@swc-node-core-npm-1.13.0-8fc951035f-c41c6fcd15.zip/node_modules/@swc-node/core/",\ + ["virtual:54f7110b9c0588600713abae10290f3f48d68dedbf2c9e4a626730c74d70ca4a91c800805f616c6b34333cac94464ce150ee74847dbc10a72e72b30659676bba#npm:1.13.0", {\ + "packageLocation": "./.yarn/__virtual__/@swc-node-core-virtual-f35eac89df/0/cache/@swc-node-core-npm-1.13.0-8fc951035f-c41c6fcd15.zip/node_modules/@swc-node/core/",\ "packageDependencies": [\ - ["@swc-node/core", "virtual:10f3a3d4c1943097f69101aff17b66ef28782db324c42f51f2e55d4090eef53c5d8c7934e9a07ec3622fac66d1d976aa76ec9e9a54a2594aa48045c380e2951a#npm:1.13.0"],\ - ["@swc/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.4.13"],\ + ["@swc-node/core", "virtual:54f7110b9c0588600713abae10290f3f48d68dedbf2c9e4a626730c74d70ca4a91c800805f616c6b34333cac94464ce150ee74847dbc10a72e72b30659676bba#npm:1.13.0"],\ + ["@swc/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.4.13"],\ ["@swc/types", null],\ ["@types/swc__core", null],\ ["@types/swc__types", null]\ @@ -8163,17 +8366,17 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.9.0", {\ - "packageLocation": "./.yarn/__virtual__/@swc-node-register-virtual-10f3a3d4c1/0/cache/@swc-node-register-npm-1.9.0-4530442723-9c92beed9b.zip/node_modules/@swc-node/register/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.9.0", {\ + "packageLocation": "./.yarn/__virtual__/@swc-node-register-virtual-54f7110b9c/0/cache/@swc-node-register-npm-1.9.0-4530442723-9c92beed9b.zip/node_modules/@swc-node/register/",\ "packageDependencies": [\ - ["@swc-node/register", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.9.0"],\ - ["@swc-node/core", "virtual:10f3a3d4c1943097f69101aff17b66ef28782db324c42f51f2e55d4090eef53c5d8c7934e9a07ec3622fac66d1d976aa76ec9e9a54a2594aa48045c380e2951a#npm:1.13.0"],\ + ["@swc-node/register", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.9.0"],\ + ["@swc-node/core", "virtual:54f7110b9c0588600713abae10290f3f48d68dedbf2c9e4a626730c74d70ca4a91c800805f616c6b34333cac94464ce150ee74847dbc10a72e72b30659676bba#npm:1.13.0"],\ ["@swc-node/sourcemap-support", "npm:0.5.0"],\ - ["@swc/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.4.13"],\ + ["@swc/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.4.13"],\ ["@types/swc__core", null],\ ["@types/typescript", null],\ ["colorette", "npm:2.0.20"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["pirates", "npm:4.0.6"],\ ["tslib", "npm:2.6.2"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ @@ -8206,12 +8409,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.3.12", {\ - "packageLocation": "./.yarn/__virtual__/@swc-cli-virtual-be957686d2/0/cache/@swc-cli-npm-0.3.12-d62fbe8a63-6e95e7d9fc.zip/node_modules/@swc/cli/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.3.12", {\ + "packageLocation": "./.yarn/__virtual__/@swc-cli-virtual-cf84a8db9c/0/cache/@swc-cli-npm-0.3.12-d62fbe8a63-6e95e7d9fc.zip/node_modules/@swc/cli/",\ "packageDependencies": [\ - ["@swc/cli", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.3.12"],\ + ["@swc/cli", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.3.12"],\ ["@mole-inc/bin-wrapper", "npm:8.0.1"],\ - ["@swc/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.4.13"],\ + ["@swc/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.4.13"],\ ["@swc/counter", "npm:0.1.3"],\ ["@types/chokidar", null],\ ["@types/swc__core", null],\ @@ -8235,16 +8438,16 @@ const RAW_RUNTIME_STATE = ]],\ ["@swc/core", [\ ["npm:1.4.13", {\ - "packageLocation": "./.yarn/unplugged/@swc-core-virtual-612ebc5056/node_modules/@swc/core/",\ + "packageLocation": "./.yarn/unplugged/@swc-core-virtual-4deea41a6d/node_modules/@swc/core/",\ "packageDependencies": [\ ["@swc/core", "npm:1.4.13"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.4.13", {\ - "packageLocation": "./.yarn/unplugged/@swc-core-virtual-612ebc5056/node_modules/@swc/core/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.4.13", {\ + "packageLocation": "./.yarn/unplugged/@swc-core-virtual-4deea41a6d/node_modules/@swc/core/",\ "packageDependencies": [\ - ["@swc/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.4.13"],\ + ["@swc/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.4.13"],\ ["@swc/core-darwin-arm64", "npm:1.4.13"],\ ["@swc/core-darwin-x64", "npm:1.4.13"],\ ["@swc/core-linux-arm-gnueabihf", "npm:1.4.13"],\ @@ -8394,6 +8597,14 @@ const RAW_RUNTIME_STATE = ["defer-to-connect", "npm:2.0.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:5.0.1", {\ + "packageLocation": "./.yarn/cache/@szmarczak-http-timer-npm-5.0.1-52261e5986-4629d2fbb2.zip/node_modules/@szmarczak/http-timer/",\ + "packageDependencies": [\ + ["@szmarczak/http-timer", "npm:5.0.1"],\ + ["defer-to-connect", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@testcontainers/postgresql", [\ @@ -8407,6 +8618,21 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@testing-library/dom", [\ + ["npm:10.0.0", {\ + "packageLocation": "./.yarn/cache/@testing-library-dom-npm-10.0.0-708b4ef7e6-2d12d2a601.zip/node_modules/@testing-library/dom/",\ + "packageDependencies": [\ + ["@testing-library/dom", "npm:10.0.0"],\ + ["@babel/code-frame", "npm:7.24.2"],\ + ["@babel/runtime", "npm:7.24.4"],\ + ["@types/aria-query", "npm:5.0.4"],\ + ["aria-query", "npm:5.3.0"],\ + ["chalk", "npm:4.1.2"],\ + ["dom-accessibility-api", "npm:0.5.16"],\ + ["lz-string", "npm:1.5.0"],\ + ["pretty-format", "npm:27.5.1"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:9.3.4", {\ "packageLocation": "./.yarn/cache/@testing-library-dom-npm-9.3.4-cfb609c4fc-147da340e8.zip/node_modules/@testing-library/dom/",\ "packageDependencies": [\ @@ -8431,10 +8657,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.4.2", {\ - "packageLocation": "./.yarn/__virtual__/@testing-library-jest-dom-virtual-cb733ab521/0/cache/@testing-library-jest-dom-npm-6.4.2-cf74bb9089-e7eba527b3.zip/node_modules/@testing-library/jest-dom/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.4.2", {\ + "packageLocation": "./.yarn/__virtual__/@testing-library-jest-dom-virtual-9c294bd036/0/cache/@testing-library-jest-dom-npm-6.4.2-cf74bb9089-e7eba527b3.zip/node_modules/@testing-library/jest-dom/",\ "packageDependencies": [\ - ["@testing-library/jest-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.4.2"],\ + ["@testing-library/jest-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.4.2"],\ ["@adobe/css-tools", "npm:4.3.3"],\ ["@babel/runtime", "npm:7.24.4"],\ ["@jest/globals", null],\ @@ -8449,7 +8675,7 @@ const RAW_RUNTIME_STATE = ["jest", null],\ ["lodash", "npm:4.17.21"],\ ["redent", "npm:3.0.0"],\ - ["vitest", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"]\ + ["vitest", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"]\ ],\ "packagePeers": [\ "@jest/globals",\ @@ -8480,7 +8706,7 @@ const RAW_RUNTIME_STATE = ["jest", null],\ ["lodash", "npm:4.17.21"],\ ["redent", "npm:3.0.0"],\ - ["vitest", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:1.5.1"]\ + ["vitest", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:1.5.2"]\ ],\ "packagePeers": [\ "@jest/globals",\ @@ -8502,16 +8728,16 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:14.3.0", {\ - "packageLocation": "./.yarn/__virtual__/@testing-library-react-virtual-ba594d7b1c/0/cache/@testing-library-react-npm-14.3.0-5ce55e3563-2a2529d2bd.zip/node_modules/@testing-library/react/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:14.3.0", {\ + "packageLocation": "./.yarn/__virtual__/@testing-library-react-virtual-2df8f185f5/0/cache/@testing-library-react-npm-14.3.0-5ce55e3563-2a2529d2bd.zip/node_modules/@testing-library/react/",\ "packageDependencies": [\ - ["@testing-library/react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:14.3.0"],\ + ["@testing-library/react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:14.3.0"],\ ["@babel/runtime", "npm:7.24.4"],\ ["@testing-library/dom", "npm:9.3.4"],\ ["@types/react", "npm:18.2.75"],\ ["@types/react-dom", "npm:18.2.24"],\ ["react", "npm:18.2.0"],\ - ["react-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.2.0"]\ + ["react-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.2.0"]\ ],\ "packagePeers": [\ "@types/react-dom",\ @@ -8522,6 +8748,28 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@testing-library/user-event", [\ + ["npm:14.5.2", {\ + "packageLocation": "./.yarn/cache/@testing-library-user-event-npm-14.5.2-ec9587901c-68a0c2aa28.zip/node_modules/@testing-library/user-event/",\ + "packageDependencies": [\ + ["@testing-library/user-event", "npm:14.5.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:14.5.2", {\ + "packageLocation": "./.yarn/__virtual__/@testing-library-user-event-virtual-14cd2300a7/0/cache/@testing-library-user-event-npm-14.5.2-ec9587901c-68a0c2aa28.zip/node_modules/@testing-library/user-event/",\ + "packageDependencies": [\ + ["@testing-library/user-event", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:14.5.2"],\ + ["@testing-library/dom", "npm:10.0.0"],\ + ["@types/testing-library__dom", null]\ + ],\ + "packagePeers": [\ + "@testing-library/dom",\ + "@types/testing-library__dom"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@tokenizer/token", [\ ["npm:0.3.0", {\ "packageLocation": "./.yarn/cache/@tokenizer-token-npm-0.3.0-4441352cc5-7ab9a822d4.zip/node_modules/@tokenizer/token/",\ @@ -8685,13 +8933,6 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@types/cookie", [\ - ["npm:0.4.1", {\ - "packageLocation": "./.yarn/cache/@types-cookie-npm-0.4.1-274a704dc6-f96afe12bd.zip/node_modules/@types/cookie/",\ - "packageDependencies": [\ - ["@types/cookie", "npm:0.4.1"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:0.6.0", {\ "packageLocation": "./.yarn/cache/@types-cookie-npm-0.6.0-1f4c3f48f0-5b326bd018.zip/node_modules/@types/cookie/",\ "packageDependencies": [\ @@ -8798,17 +9039,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["@types/hoist-non-react-statics", [\ - ["npm:3.3.5", {\ - "packageLocation": "./.yarn/cache/@types-hoist-non-react-statics-npm-3.3.5-98b8d8e47b-2a3b64bf3d.zip/node_modules/@types/hoist-non-react-statics/",\ - "packageDependencies": [\ - ["@types/hoist-non-react-statics", "npm:3.3.5"],\ - ["@types/react", "npm:18.2.75"],\ - ["hoist-non-react-statics", "npm:3.3.2"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@types/http-cache-semantics", [\ ["npm:4.0.4", {\ "packageLocation": "./.yarn/cache/@types-http-cache-semantics-npm-4.0.4-6d4f413ddd-51b72568b4.zip/node_modules/@types/http-cache-semantics/",\ @@ -8856,15 +9086,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["@types/js-levenshtein", [\ - ["npm:1.1.3", {\ - "packageLocation": "./.yarn/cache/@types-js-levenshtein-npm-1.1.3-417b5f0c21-025f2bd8d8.zip/node_modules/@types/js-levenshtein/",\ - "packageDependencies": [\ - ["@types/js-levenshtein", "npm:1.1.3"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@types/js-yaml", [\ ["npm:4.0.9", {\ "packageLocation": "./.yarn/cache/@types-js-yaml-npm-4.0.9-6a16d01bd2-24de857aa8.zip/node_modules/@types/js-yaml/",\ @@ -8912,6 +9133,24 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@types/lodash", [\ + ["npm:4.17.0", {\ + "packageLocation": "./.yarn/cache/@types-lodash-npm-4.17.0-11e757616b-4c5b41c9a6.zip/node_modules/@types/lodash/",\ + "packageDependencies": [\ + ["@types/lodash", "npm:4.17.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/md5", [\ + ["npm:2.3.5", {\ + "packageLocation": "./.yarn/cache/@types-md5-npm-2.3.5-bd5c825c57-aef9c40ab0.zip/node_modules/@types/md5/",\ + "packageDependencies": [\ + ["@types/md5", "npm:2.3.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@types/mdast", [\ ["npm:3.0.15", {\ "packageLocation": "./.yarn/cache/@types-mdast-npm-3.0.15-66e5bbbc2b-fcbf716c03.zip/node_modules/@types/mdast/",\ @@ -8995,6 +9234,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@types/pluralize", [\ + ["npm:0.0.29", {\ + "packageLocation": "./.yarn/cache/@types-pluralize-npm-0.0.29-a6b8916fba-840796fa1d.zip/node_modules/@types/pluralize/",\ + "packageDependencies": [\ + ["@types/pluralize", "npm:0.0.29"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@types/prop-types", [\ ["npm:15.7.12", {\ "packageLocation": "./.yarn/cache/@types-prop-types-npm-15.7.12-b093f43531-1babcc7db6.zip/node_modules/@types/prop-types/",\ @@ -9095,16 +9343,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["@types/set-cookie-parser", [\ - ["npm:2.4.7", {\ - "packageLocation": "./.yarn/cache/@types-set-cookie-parser-npm-2.4.7-e9d6d979b1-3c4b5168fe.zip/node_modules/@types/set-cookie-parser/",\ - "packageDependencies": [\ - ["@types/set-cookie-parser", "npm:2.4.7"],\ - ["@types/node", "npm:20.12.7"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@types/ssh2", [\ ["npm:0.5.52", {\ "packageLocation": "./.yarn/cache/@types-ssh2-npm-0.5.52-db874bb656-95c52fd343.zip/node_modules/@types/ssh2/",\ @@ -9152,27 +9390,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["@types/styled-components", [\ - ["npm:5.1.34", {\ - "packageLocation": "./.yarn/cache/@types-styled-components-npm-5.1.34-c1fd4bac77-5bce93ea2c.zip/node_modules/@types/styled-components/",\ - "packageDependencies": [\ - ["@types/styled-components", "npm:5.1.34"],\ - ["@types/hoist-non-react-statics", "npm:3.3.5"],\ - ["@types/react", "npm:18.2.75"],\ - ["csstype", "npm:3.1.3"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@types/stylis", [\ - ["npm:4.2.0", {\ - "packageLocation": "./.yarn/cache/@types-stylis-npm-4.2.0-5addc9ed60-c76c13e76c.zip/node_modules/@types/stylis/",\ - "packageDependencies": [\ - ["@types/stylis", "npm:4.2.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@types/triple-beam", [\ ["npm:1.3.5", {\ "packageLocation": "./.yarn/cache/@types-triple-beam-npm-1.3.5-0f1b823630-d5d7f25da6.zip/node_modules/@types/triple-beam/",\ @@ -9191,6 +9408,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@types/uuid", [\ + ["npm:8.3.4", {\ + "packageLocation": "./.yarn/cache/@types-uuid-npm-8.3.4-7547f4402c-b9ac98f82f.zip/node_modules/@types/uuid/",\ + "packageDependencies": [\ + ["@types/uuid", "npm:8.3.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@types/wrap-ansi", [\ ["npm:3.0.0", {\ "packageLocation": "./.yarn/cache/@types-wrap-ansi-npm-3.0.0-b7f3369360-8d8f53363f.zip/node_modules/@types/wrap-ansi/",\ @@ -9237,26 +9463,26 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-eslint-plugin-virtual-28e51baebb/0/cache/@typescript-eslint-eslint-plugin-npm-7.6.0-e3a1f1768d-c3ca611c66.zip/node_modules/@typescript-eslint/eslint-plugin/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-eslint-plugin-virtual-6d075e8155/0/cache/@typescript-eslint-eslint-plugin-npm-7.6.0-e3a1f1768d-c3ca611c66.zip/node_modules/@typescript-eslint/eslint-plugin/",\ "packageDependencies": [\ - ["@typescript-eslint/eslint-plugin", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0"],\ + ["@typescript-eslint/eslint-plugin", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0"],\ ["@eslint-community/regexpp", "npm:4.10.0"],\ ["@types/eslint", null],\ ["@types/typescript", null],\ ["@types/typescript-eslint__parser", null],\ - ["@typescript-eslint/parser", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0"],\ + ["@typescript-eslint/parser", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0"],\ ["@typescript-eslint/scope-manager", "npm:7.6.0"],\ - ["@typescript-eslint/type-utils", "virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:7.6.0"],\ - ["@typescript-eslint/utils", "virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:7.6.0"],\ + ["@typescript-eslint/type-utils", "virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:7.6.0"],\ + ["@typescript-eslint/utils", "virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:7.6.0"],\ ["@typescript-eslint/visitor-keys", "npm:7.6.0"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["eslint", "npm:9.0.0"],\ ["graphemer", "npm:1.4.0"],\ ["ignore", "npm:5.3.1"],\ ["natural-compare", "npm:1.4.0"],\ ["semver", "npm:7.6.0"],\ - ["ts-api-utils", "virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:1.3.0"],\ + ["ts-api-utils", "virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:1.3.0"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ ],\ "packagePeers": [\ @@ -9278,17 +9504,17 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-parser-virtual-04e2ef84b4/0/cache/@typescript-eslint-parser-npm-7.6.0-56aac94370-69450c1518.zip/node_modules/@typescript-eslint/parser/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-parser-virtual-0353805b84/0/cache/@typescript-eslint-parser-npm-7.6.0-56aac94370-69450c1518.zip/node_modules/@typescript-eslint/parser/",\ "packageDependencies": [\ - ["@typescript-eslint/parser", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0"],\ + ["@typescript-eslint/parser", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0"],\ ["@types/eslint", null],\ ["@types/typescript", null],\ ["@typescript-eslint/scope-manager", "npm:7.6.0"],\ ["@typescript-eslint/types", "npm:7.6.0"],\ - ["@typescript-eslint/typescript-estree", "virtual:26f248b18dbe434d67d4ff7b46468bbb50a4d9ecc7355ab54a03b11de157910552dba84f99df7324f5098283431cc5f5c692c3d246a62985eb59cbd0f5eec812#npm:7.6.0"],\ + ["@typescript-eslint/typescript-estree", "virtual:07e565efc5d093f5919e0a62a061cbf94e4ecbd71cab278487b497458ed59a3ae4c2e66d2b943c7811366519baafd54c912501a440ce7c53b74d08a16e53ae75#npm:7.6.0"],\ ["@typescript-eslint/visitor-keys", "npm:7.6.0"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["eslint", "npm:9.0.0"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ ],\ @@ -9329,17 +9555,17 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:7.6.0", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-type-utils-virtual-26f248b18d/0/cache/@typescript-eslint-type-utils-npm-7.6.0-b622454806-d5fa5856e2.zip/node_modules/@typescript-eslint/type-utils/",\ + ["virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:7.6.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-type-utils-virtual-07e565efc5/0/cache/@typescript-eslint-type-utils-npm-7.6.0-b622454806-d5fa5856e2.zip/node_modules/@typescript-eslint/type-utils/",\ "packageDependencies": [\ - ["@typescript-eslint/type-utils", "virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:7.6.0"],\ + ["@typescript-eslint/type-utils", "virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:7.6.0"],\ ["@types/eslint", null],\ ["@types/typescript", null],\ - ["@typescript-eslint/typescript-estree", "virtual:26f248b18dbe434d67d4ff7b46468bbb50a4d9ecc7355ab54a03b11de157910552dba84f99df7324f5098283431cc5f5c692c3d246a62985eb59cbd0f5eec812#npm:7.6.0"],\ - ["@typescript-eslint/utils", "virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:7.6.0"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["@typescript-eslint/typescript-estree", "virtual:07e565efc5d093f5919e0a62a061cbf94e4ecbd71cab278487b497458ed59a3ae4c2e66d2b943c7811366519baafd54c912501a440ce7c53b74d08a16e53ae75#npm:7.6.0"],\ + ["@typescript-eslint/utils", "virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:7.6.0"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["eslint", "npm:9.0.0"],\ - ["ts-api-utils", "virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:1.3.0"],\ + ["ts-api-utils", "virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:1.3.0"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ ],\ "packagePeers": [\ @@ -9382,20 +9608,20 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:12d7f9dfa73bb42c15cd3fb10090887a6d9500b27bee522fd42e50dfb0a2523a4951d8aff915c8c3c6d6ba2d44e55aed1e74597e2aa3ed15fdcd7307cd84bef4#npm:7.7.1", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-de271d16e1/0/cache/@typescript-eslint-typescript-estree-npm-7.7.1-5121329814-c6b32bd96f.zip/node_modules/@typescript-eslint/typescript-estree/",\ + ["virtual:07e565efc5d093f5919e0a62a061cbf94e4ecbd71cab278487b497458ed59a3ae4c2e66d2b943c7811366519baafd54c912501a440ce7c53b74d08a16e53ae75#npm:7.6.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-d98a1bee52/0/cache/@typescript-eslint-typescript-estree-npm-7.6.0-a84b883343-ab54ce7a61.zip/node_modules/@typescript-eslint/typescript-estree/",\ "packageDependencies": [\ - ["@typescript-eslint/typescript-estree", "virtual:12d7f9dfa73bb42c15cd3fb10090887a6d9500b27bee522fd42e50dfb0a2523a4951d8aff915c8c3c6d6ba2d44e55aed1e74597e2aa3ed15fdcd7307cd84bef4#npm:7.7.1"],\ + ["@typescript-eslint/typescript-estree", "virtual:07e565efc5d093f5919e0a62a061cbf94e4ecbd71cab278487b497458ed59a3ae4c2e66d2b943c7811366519baafd54c912501a440ce7c53b74d08a16e53ae75#npm:7.6.0"],\ ["@types/typescript", null],\ - ["@typescript-eslint/types", "npm:7.7.1"],\ - ["@typescript-eslint/visitor-keys", "npm:7.7.1"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["@typescript-eslint/types", "npm:7.6.0"],\ + ["@typescript-eslint/visitor-keys", "npm:7.6.0"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["globby", "npm:11.1.0"],\ ["is-glob", "npm:4.0.3"],\ ["minimatch", "npm:9.0.4"],\ ["semver", "npm:7.6.0"],\ - ["ts-api-utils", "virtual:937d7643790809a6c7ef98b733aa0a65c72cbd60413cd49029256067931b7df037eb0b345473fadfd13fb8708674eeb113b7af3ebf36ff1714280a54ec3ee46a#npm:1.3.0"],\ - ["typescript", null]\ + ["ts-api-utils", "virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:1.3.0"],\ + ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ ],\ "packagePeers": [\ "@types/typescript",\ @@ -9403,20 +9629,20 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:26f248b18dbe434d67d4ff7b46468bbb50a4d9ecc7355ab54a03b11de157910552dba84f99df7324f5098283431cc5f5c692c3d246a62985eb59cbd0f5eec812#npm:7.6.0", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-e5e5a3b557/0/cache/@typescript-eslint-typescript-estree-npm-7.6.0-a84b883343-ab54ce7a61.zip/node_modules/@typescript-eslint/typescript-estree/",\ + ["virtual:e2e1740f14319611d3319e50c61e2e9f044fbbdda508f35f856f30c86bd481b1ecf247bf26480f04398e2f44b0a40529267175357f2963e17f1ebabce9f766dd#npm:7.6.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-fc27d6e825/0/cache/@typescript-eslint-typescript-estree-npm-7.6.0-a84b883343-ab54ce7a61.zip/node_modules/@typescript-eslint/typescript-estree/",\ "packageDependencies": [\ - ["@typescript-eslint/typescript-estree", "virtual:26f248b18dbe434d67d4ff7b46468bbb50a4d9ecc7355ab54a03b11de157910552dba84f99df7324f5098283431cc5f5c692c3d246a62985eb59cbd0f5eec812#npm:7.6.0"],\ + ["@typescript-eslint/typescript-estree", "virtual:e2e1740f14319611d3319e50c61e2e9f044fbbdda508f35f856f30c86bd481b1ecf247bf26480f04398e2f44b0a40529267175357f2963e17f1ebabce9f766dd#npm:7.6.0"],\ ["@types/typescript", null],\ ["@typescript-eslint/types", "npm:7.6.0"],\ ["@typescript-eslint/visitor-keys", "npm:7.6.0"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["globby", "npm:11.1.0"],\ ["is-glob", "npm:4.0.3"],\ ["minimatch", "npm:9.0.4"],\ ["semver", "npm:7.6.0"],\ - ["ts-api-utils", "virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:1.3.0"],\ - ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ + ["ts-api-utils", "virtual:fc27d6e82504c21bd17d8dff951aef3851efc402fd6f002f9ce7ae906c442d38d0a0bef17fa608fd1b4d50b0e73556fc66526efc0b11e8143f020179a5d7670b#npm:1.3.0"],\ + ["typescript", null]\ ],\ "packagePeers": [\ "@types/typescript",\ @@ -9424,19 +9650,19 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:95981f8f59c749268f2bf371b75887b2e7b7e5b6a39d15ccd7ace7275b654f20899f066fbabd008359891ad41268d7d494af5ab3eb0a8ccfc77e515d94ee0564#npm:7.6.0", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-937d764379/0/cache/@typescript-eslint-typescript-estree-npm-7.6.0-a84b883343-ab54ce7a61.zip/node_modules/@typescript-eslint/typescript-estree/",\ + ["virtual:e6e1148b999835612a92db7ee30023ed6259789231c702a7bc3f6dfdbe85c015fafe5142ba984e21daee469d565711910b0c53bf7892af96aa37d290cec02509#npm:7.7.1", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-c44b9172fb/0/cache/@typescript-eslint-typescript-estree-npm-7.7.1-5121329814-c6b32bd96f.zip/node_modules/@typescript-eslint/typescript-estree/",\ "packageDependencies": [\ - ["@typescript-eslint/typescript-estree", "virtual:95981f8f59c749268f2bf371b75887b2e7b7e5b6a39d15ccd7ace7275b654f20899f066fbabd008359891ad41268d7d494af5ab3eb0a8ccfc77e515d94ee0564#npm:7.6.0"],\ + ["@typescript-eslint/typescript-estree", "virtual:e6e1148b999835612a92db7ee30023ed6259789231c702a7bc3f6dfdbe85c015fafe5142ba984e21daee469d565711910b0c53bf7892af96aa37d290cec02509#npm:7.7.1"],\ ["@types/typescript", null],\ - ["@typescript-eslint/types", "npm:7.6.0"],\ - ["@typescript-eslint/visitor-keys", "npm:7.6.0"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["@typescript-eslint/types", "npm:7.7.1"],\ + ["@typescript-eslint/visitor-keys", "npm:7.7.1"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["globby", "npm:11.1.0"],\ ["is-glob", "npm:4.0.3"],\ ["minimatch", "npm:9.0.4"],\ ["semver", "npm:7.6.0"],\ - ["ts-api-utils", "virtual:937d7643790809a6c7ef98b733aa0a65c72cbd60413cd49029256067931b7df037eb0b345473fadfd13fb8708674eeb113b7af3ebf36ff1714280a54ec3ee46a#npm:1.3.0"],\ + ["ts-api-utils", "virtual:fc27d6e82504c21bd17d8dff951aef3851efc402fd6f002f9ce7ae906c442d38d0a0bef17fa608fd1b4d50b0e73556fc66526efc0b11e8143f020179a5d7670b#npm:1.3.0"],\ ["typescript", null]\ ],\ "packagePeers": [\ @@ -9461,17 +9687,17 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:7.6.0", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-utils-virtual-95981f8f59/0/cache/@typescript-eslint-utils-npm-7.6.0-b846728061-1552004d9c.zip/node_modules/@typescript-eslint/utils/",\ + ["virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:7.6.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-utils-virtual-e2e1740f14/0/cache/@typescript-eslint-utils-npm-7.6.0-b846728061-1552004d9c.zip/node_modules/@typescript-eslint/utils/",\ "packageDependencies": [\ - ["@typescript-eslint/utils", "virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:7.6.0"],\ + ["@typescript-eslint/utils", "virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:7.6.0"],\ ["@eslint-community/eslint-utils", "virtual:93671e58d92622557b1ca9c3393a2b9f9364adf3976b10b2f33744113b1cef816270443503c9f65b4458454c1e62285a956741b5fb7521b92215b19ad8e4917b#npm:4.4.0"],\ ["@types/eslint", null],\ ["@types/json-schema", "npm:7.0.15"],\ ["@types/semver", "npm:7.5.8"],\ ["@typescript-eslint/scope-manager", "npm:7.6.0"],\ ["@typescript-eslint/types", "npm:7.6.0"],\ - ["@typescript-eslint/typescript-estree", "virtual:95981f8f59c749268f2bf371b75887b2e7b7e5b6a39d15ccd7ace7275b654f20899f066fbabd008359891ad41268d7d494af5ab3eb0a8ccfc77e515d94ee0564#npm:7.6.0"],\ + ["@typescript-eslint/typescript-estree", "virtual:e2e1740f14319611d3319e50c61e2e9f044fbbdda508f35f856f30c86bd481b1ecf247bf26480f04398e2f44b0a40529267175357f2963e17f1ebabce9f766dd#npm:7.6.0"],\ ["eslint", "npm:9.0.0"],\ ["semver", "npm:7.6.0"]\ ],\ @@ -9481,17 +9707,17 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.7.1", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-utils-virtual-12d7f9dfa7/0/cache/@typescript-eslint-utils-npm-7.7.1-2743ed2f8b-0986b8c297.zip/node_modules/@typescript-eslint/utils/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.7.1", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-utils-virtual-e6e1148b99/0/cache/@typescript-eslint-utils-npm-7.7.1-2743ed2f8b-0986b8c297.zip/node_modules/@typescript-eslint/utils/",\ "packageDependencies": [\ - ["@typescript-eslint/utils", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.7.1"],\ + ["@typescript-eslint/utils", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.7.1"],\ ["@eslint-community/eslint-utils", "virtual:93671e58d92622557b1ca9c3393a2b9f9364adf3976b10b2f33744113b1cef816270443503c9f65b4458454c1e62285a956741b5fb7521b92215b19ad8e4917b#npm:4.4.0"],\ ["@types/eslint", null],\ ["@types/json-schema", "npm:7.0.15"],\ ["@types/semver", "npm:7.5.8"],\ ["@typescript-eslint/scope-manager", "npm:7.7.1"],\ ["@typescript-eslint/types", "npm:7.7.1"],\ - ["@typescript-eslint/typescript-estree", "virtual:12d7f9dfa73bb42c15cd3fb10090887a6d9500b27bee522fd42e50dfb0a2523a4951d8aff915c8c3c6d6ba2d44e55aed1e74597e2aa3ed15fdcd7307cd84bef4#npm:7.7.1"],\ + ["@typescript-eslint/typescript-estree", "virtual:e6e1148b999835612a92db7ee30023ed6259789231c702a7bc3f6dfdbe85c015fafe5142ba984e21daee469d565711910b0c53bf7892af96aa37d290cec02509#npm:7.7.1"],\ ["eslint", "npm:9.0.0"],\ ["semver", "npm:7.6.0"]\ ],\ @@ -9542,21 +9768,21 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@vanilla-extract/css", [\ - ["npm:1.14.2", {\ - "packageLocation": "./.yarn/cache/@vanilla-extract-css-npm-1.14.2-af68e7707d-3a0d57815a.zip/node_modules/@vanilla-extract/css/",\ + ["npm:1.15.1", {\ + "packageLocation": "./.yarn/cache/@vanilla-extract-css-npm-1.15.1-1996768f7d-f8c72779f5.zip/node_modules/@vanilla-extract/css/",\ "packageDependencies": [\ - ["@vanilla-extract/css", "npm:1.14.2"],\ + ["@vanilla-extract/css", "npm:1.15.1"],\ ["@emotion/hash", "npm:0.9.1"],\ ["@vanilla-extract/private", "npm:1.0.4"],\ - ["chalk", "npm:4.1.2"],\ ["css-what", "npm:6.1.0"],\ ["cssesc", "npm:3.0.0"],\ ["csstype", "npm:3.1.3"],\ + ["dedent", "virtual:f7679858c638e2e5ade31901dd2b1e5007918fdc7d84fefb11f4200f46ba2e43b9d662fb793507b517bb1e725144e51f6d68f60f9f6100fd52144f042f58f0bc#npm:1.5.3"],\ ["deep-object-diff", "npm:1.1.9"],\ ["deepmerge", "npm:4.3.1"],\ ["media-query-parser", "npm:2.0.2"],\ ["modern-ahocorasick", "npm:1.0.1"],\ - ["outdent", "npm:0.8.0"]\ + ["picocolors", "npm:1.0.0"]\ ],\ "linkType": "HARD"\ }]\ @@ -9566,10 +9792,10 @@ const RAW_RUNTIME_STATE = "packageLocation": "./.yarn/cache/@vanilla-extract-integration-npm-6.5.0-f9483072b2-9c24ba5c84.zip/node_modules/@vanilla-extract/integration/",\ "packageDependencies": [\ ["@vanilla-extract/integration", "npm:6.5.0"],\ - ["@babel/core", "npm:7.24.4"],\ - ["@babel/plugin-syntax-typescript", "virtual:5537aa75a0f56c37db7b98e1ccb9e64f7d3c5ed71c00ad7c534074d67f055813f8680164af56426c752632bfe9a61d35552fc0af1c65c545845b96f1da717dc1#npm:7.24.1"],\ + ["@babel/core", "npm:7.24.5"],\ + ["@babel/plugin-syntax-typescript", "virtual:f9483072b2353c1fbd838417066556018bdd2c3c9dc66c6cefdbefdbe6c382cfbb0a4c3b83ce4906c7fcb73d4a8b3d536837e9cf85c7902cf57216360d194b8e#npm:7.24.1"],\ ["@vanilla-extract/babel-plugin-debug-ids", "npm:1.0.5"],\ - ["@vanilla-extract/css", "npm:1.14.2"],\ + ["@vanilla-extract/css", "npm:1.15.1"],\ ["esbuild", "npm:0.19.12"],\ ["eval", "npm:0.1.8"],\ ["find-up", "npm:5.0.0"],\ @@ -9581,6 +9807,25 @@ const RAW_RUNTIME_STATE = ["vite-node", "npm:1.5.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.1.3", {\ + "packageLocation": "./.yarn/cache/@vanilla-extract-integration-npm-7.1.3-8963745404-eb903c7c40.zip/node_modules/@vanilla-extract/integration/",\ + "packageDependencies": [\ + ["@vanilla-extract/integration", "npm:7.1.3"],\ + ["@babel/core", "npm:7.24.4"],\ + ["@babel/plugin-syntax-typescript", "virtual:5537aa75a0f56c37db7b98e1ccb9e64f7d3c5ed71c00ad7c534074d67f055813f8680164af56426c752632bfe9a61d35552fc0af1c65c545845b96f1da717dc1#npm:7.24.1"],\ + ["@vanilla-extract/babel-plugin-debug-ids", "npm:1.0.5"],\ + ["@vanilla-extract/css", "npm:1.15.1"],\ + ["dedent", "virtual:f7679858c638e2e5ade31901dd2b1e5007918fdc7d84fefb11f4200f46ba2e43b9d662fb793507b517bb1e725144e51f6d68f60f9f6100fd52144f042f58f0bc#npm:1.5.3"],\ + ["esbuild", "npm:0.19.12"],\ + ["eval", "npm:0.1.8"],\ + ["find-up", "npm:5.0.0"],\ + ["javascript-stringify", "npm:2.1.0"],\ + ["mlly", "npm:1.6.1"],\ + ["vite", "virtual:f9483072b2353c1fbd838417066556018bdd2c3c9dc66c6cefdbefdbe6c382cfbb0a4c3b83ce4906c7fcb73d4a8b3d536837e9cf85c7902cf57216360d194b8e#npm:5.2.10"],\ + ["vite-node", "npm:1.5.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@vanilla-extract/private", [\ @@ -9592,6 +9837,51 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@vanilla-extract/sprinkles", [\ + ["npm:1.6.1", {\ + "packageLocation": "./.yarn/cache/@vanilla-extract-sprinkles-npm-1.6.1-e524ee399f-7ddd2ab7c8.zip/node_modules/@vanilla-extract/sprinkles/",\ + "packageDependencies": [\ + ["@vanilla-extract/sprinkles", "npm:1.6.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.6.1", {\ + "packageLocation": "./.yarn/__virtual__/@vanilla-extract-sprinkles-virtual-b7f424cd31/0/cache/@vanilla-extract-sprinkles-npm-1.6.1-e524ee399f-7ddd2ab7c8.zip/node_modules/@vanilla-extract/sprinkles/",\ + "packageDependencies": [\ + ["@vanilla-extract/sprinkles", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.6.1"],\ + ["@types/vanilla-extract__css", null],\ + ["@vanilla-extract/css", "npm:1.15.1"]\ + ],\ + "packagePeers": [\ + "@types/vanilla-extract__css",\ + "@vanilla-extract/css"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@vanilla-extract/vite-plugin", [\ + ["npm:4.0.9", {\ + "packageLocation": "./.yarn/cache/@vanilla-extract-vite-plugin-npm-4.0.9-eac4eb584d-f77fc14a5e.zip/node_modules/@vanilla-extract/vite-plugin/",\ + "packageDependencies": [\ + ["@vanilla-extract/vite-plugin", "npm:4.0.9"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.9", {\ + "packageLocation": "./.yarn/__virtual__/@vanilla-extract-vite-plugin-virtual-0269d694e2/0/cache/@vanilla-extract-vite-plugin-npm-4.0.9-eac4eb584d-f77fc14a5e.zip/node_modules/@vanilla-extract/vite-plugin/",\ + "packageDependencies": [\ + ["@vanilla-extract/vite-plugin", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.9"],\ + ["@types/vite", null],\ + ["@vanilla-extract/integration", "npm:7.1.3"],\ + ["vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.2.10"]\ + ],\ + "packagePeers": [\ + "@types/vite",\ + "vite"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@vitejs/plugin-react", [\ ["npm:4.2.1", {\ "packageLocation": "./.yarn/cache/@vitejs-plugin-react-npm-4.2.1-8b9705c544-de1eec44d7.zip/node_modules/@vitejs/plugin-react/",\ @@ -9600,17 +9890,17 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.2.1", {\ - "packageLocation": "./.yarn/__virtual__/@vitejs-plugin-react-virtual-78b795f6df/0/cache/@vitejs-plugin-react-npm-4.2.1-8b9705c544-de1eec44d7.zip/node_modules/@vitejs/plugin-react/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.2.1", {\ + "packageLocation": "./.yarn/__virtual__/@vitejs-plugin-react-virtual-47aa59d0c3/0/cache/@vitejs-plugin-react-npm-4.2.1-8b9705c544-de1eec44d7.zip/node_modules/@vitejs/plugin-react/",\ "packageDependencies": [\ - ["@vitejs/plugin-react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.2.1"],\ + ["@vitejs/plugin-react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.2.1"],\ ["@babel/core", "npm:7.24.4"],\ - ["@babel/plugin-transform-react-jsx-self", "virtual:78b795f6dff6124987e36494aa2aa9b2c55b6bb0e00f1545cff6f31a6047b7b042a161a9c656068317a9fde216ddced8a76757a0cdb73219385cac4a76b6436d#npm:7.24.1"],\ - ["@babel/plugin-transform-react-jsx-source", "virtual:78b795f6dff6124987e36494aa2aa9b2c55b6bb0e00f1545cff6f31a6047b7b042a161a9c656068317a9fde216ddced8a76757a0cdb73219385cac4a76b6436d#npm:7.24.1"],\ + ["@babel/plugin-transform-react-jsx-self", "virtual:47aa59d0c33af6d267e15415f9408141646eb727bab2c4fe74f459068e5381c61400ae9d2c144ce15fd36b1d1278c0d618d081a1905af253eb0c1a059bd2eac9#npm:7.24.1"],\ + ["@babel/plugin-transform-react-jsx-source", "virtual:47aa59d0c33af6d267e15415f9408141646eb727bab2c4fe74f459068e5381c61400ae9d2c144ce15fd36b1d1278c0d618d081a1905af253eb0c1a059bd2eac9#npm:7.24.1"],\ ["@types/babel__core", "npm:7.20.5"],\ ["@types/vite", null],\ ["react-refresh", "npm:0.14.0"],\ - ["vite", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.2.10"]\ + ["vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.2.10"]\ ],\ "packagePeers": [\ "@types/vite",\ @@ -9620,21 +9910,21 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@vitest/coverage-v8", [\ - ["npm:1.5.1", {\ - "packageLocation": "./.yarn/cache/@vitest-coverage-v8-npm-1.5.1-12c3829e02-614b0a7ca0.zip/node_modules/@vitest/coverage-v8/",\ + ["npm:1.5.2", {\ + "packageLocation": "./.yarn/cache/@vitest-coverage-v8-npm-1.5.2-0f1947c29f-cc98275396.zip/node_modules/@vitest/coverage-v8/",\ "packageDependencies": [\ - ["@vitest/coverage-v8", "npm:1.5.1"]\ + ["@vitest/coverage-v8", "npm:1.5.2"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1", {\ - "packageLocation": "./.yarn/__virtual__/@vitest-coverage-v8-virtual-bee0ce99a5/0/cache/@vitest-coverage-v8-npm-1.5.1-12c3829e02-614b0a7ca0.zip/node_modules/@vitest/coverage-v8/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2", {\ + "packageLocation": "./.yarn/__virtual__/@vitest-coverage-v8-virtual-b9d540cbe7/0/cache/@vitest-coverage-v8-npm-1.5.2-0f1947c29f-cc98275396.zip/node_modules/@vitest/coverage-v8/",\ "packageDependencies": [\ - ["@vitest/coverage-v8", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"],\ + ["@vitest/coverage-v8", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"],\ ["@ampproject/remapping", "npm:2.3.0"],\ ["@bcoe/v8-coverage", "npm:0.2.3"],\ ["@types/vitest", null],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["istanbul-lib-coverage", "npm:3.2.2"],\ ["istanbul-lib-report", "npm:3.0.1"],\ ["istanbul-lib-source-maps", "npm:5.0.4"],\ @@ -9645,7 +9935,7 @@ const RAW_RUNTIME_STATE = ["std-env", "npm:3.7.0"],\ ["strip-literal", "npm:2.1.0"],\ ["test-exclude", "npm:6.0.0"],\ - ["vitest", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"]\ + ["vitest", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"]\ ],\ "packagePeers": [\ "@types/vitest",\ @@ -9655,23 +9945,23 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@vitest/expect", [\ - ["npm:1.5.1", {\ - "packageLocation": "./.yarn/cache/@vitest-expect-npm-1.5.1-9cc59d304b-4743ca8de3.zip/node_modules/@vitest/expect/",\ + ["npm:1.5.2", {\ + "packageLocation": "./.yarn/cache/@vitest-expect-npm-1.5.2-3b855b8075-4e8400a55f.zip/node_modules/@vitest/expect/",\ "packageDependencies": [\ - ["@vitest/expect", "npm:1.5.1"],\ - ["@vitest/spy", "npm:1.5.1"],\ - ["@vitest/utils", "npm:1.5.1"],\ + ["@vitest/expect", "npm:1.5.2"],\ + ["@vitest/spy", "npm:1.5.2"],\ + ["@vitest/utils", "npm:1.5.2"],\ ["chai", "npm:4.4.1"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@vitest/runner", [\ - ["npm:1.5.1", {\ - "packageLocation": "./.yarn/cache/@vitest-runner-npm-1.5.1-1bd8a6b0c9-a079c111c9.zip/node_modules/@vitest/runner/",\ + ["npm:1.5.2", {\ + "packageLocation": "./.yarn/cache/@vitest-runner-npm-1.5.2-c6689dee82-9fc3e66881.zip/node_modules/@vitest/runner/",\ "packageDependencies": [\ - ["@vitest/runner", "npm:1.5.1"],\ - ["@vitest/utils", "npm:1.5.1"],\ + ["@vitest/runner", "npm:1.5.2"],\ + ["@vitest/utils", "npm:1.5.2"],\ ["p-limit", "npm:5.0.0"],\ ["pathe", "npm:1.1.2"]\ ],\ @@ -9679,10 +9969,10 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@vitest/snapshot", [\ - ["npm:1.5.1", {\ - "packageLocation": "./.yarn/cache/@vitest-snapshot-npm-1.5.1-87cae6bf67-d3d769873b.zip/node_modules/@vitest/snapshot/",\ + ["npm:1.5.2", {\ + "packageLocation": "./.yarn/cache/@vitest-snapshot-npm-1.5.2-791e3d9f82-67ae235e59.zip/node_modules/@vitest/snapshot/",\ "packageDependencies": [\ - ["@vitest/snapshot", "npm:1.5.1"],\ + ["@vitest/snapshot", "npm:1.5.2"],\ ["magic-string", "npm:0.30.9"],\ ["pathe", "npm:1.1.2"],\ ["pretty-format", "npm:29.7.0"]\ @@ -9691,36 +9981,36 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@vitest/spy", [\ - ["npm:1.5.1", {\ - "packageLocation": "./.yarn/cache/@vitest-spy-npm-1.5.1-9ec8baf765-865b94bc99.zip/node_modules/@vitest/spy/",\ + ["npm:1.5.2", {\ + "packageLocation": "./.yarn/cache/@vitest-spy-npm-1.5.2-b9c126ac34-d66de2873f.zip/node_modules/@vitest/spy/",\ "packageDependencies": [\ - ["@vitest/spy", "npm:1.5.1"],\ + ["@vitest/spy", "npm:1.5.2"],\ ["tinyspy", "npm:2.2.1"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@vitest/ui", [\ - ["npm:1.5.1", {\ - "packageLocation": "./.yarn/cache/@vitest-ui-npm-1.5.1-18a33515ae-efba22a08b.zip/node_modules/@vitest/ui/",\ + ["npm:1.5.2", {\ + "packageLocation": "./.yarn/cache/@vitest-ui-npm-1.5.2-b335b96316-85fc78e0b3.zip/node_modules/@vitest/ui/",\ "packageDependencies": [\ - ["@vitest/ui", "npm:1.5.1"]\ + ["@vitest/ui", "npm:1.5.2"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1", {\ - "packageLocation": "./.yarn/__virtual__/@vitest-ui-virtual-bdd5f85159/0/cache/@vitest-ui-npm-1.5.1-18a33515ae-efba22a08b.zip/node_modules/@vitest/ui/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2", {\ + "packageLocation": "./.yarn/__virtual__/@vitest-ui-virtual-7faf95813a/0/cache/@vitest-ui-npm-1.5.2-b335b96316-85fc78e0b3.zip/node_modules/@vitest/ui/",\ "packageDependencies": [\ - ["@vitest/ui", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"],\ + ["@vitest/ui", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"],\ ["@types/vitest", null],\ - ["@vitest/utils", "npm:1.5.1"],\ + ["@vitest/utils", "npm:1.5.2"],\ ["fast-glob", "npm:3.3.2"],\ ["fflate", "npm:0.8.2"],\ ["flatted", "npm:3.3.1"],\ ["pathe", "npm:1.1.2"],\ ["picocolors", "npm:1.0.0"],\ ["sirv", "npm:2.0.4"],\ - ["vitest", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"]\ + ["vitest", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"]\ ],\ "packagePeers": [\ "@types/vitest",\ @@ -9730,10 +10020,10 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@vitest/utils", [\ - ["npm:1.5.1", {\ - "packageLocation": "./.yarn/cache/@vitest-utils-npm-1.5.1-e51d68286e-45bef3c3c5.zip/node_modules/@vitest/utils/",\ + ["npm:1.5.2", {\ + "packageLocation": "./.yarn/cache/@vitest-utils-npm-1.5.2-7cf804c58e-019eeac016.zip/node_modules/@vitest/utils/",\ "packageDependencies": [\ - ["@vitest/utils", "npm:1.5.1"],\ + ["@vitest/utils", "npm:1.5.2"],\ ["diff-sequences", "npm:29.6.3"],\ ["estree-walker", "npm:3.0.3"],\ ["loupe", "npm:2.3.7"],\ @@ -9827,15 +10117,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["@xmldom/xmldom", [\ - ["npm:0.8.10", {\ - "packageLocation": "./.yarn/cache/@xmldom-xmldom-npm-0.8.10-c1bd991e61-c7647c4425.zip/node_modules/@xmldom/xmldom/",\ - "packageDependencies": [\ - ["@xmldom/xmldom", "npm:0.8.10"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@yarnpkg/lockfile", [\ ["npm:1.1.0", {\ "packageLocation": "./.yarn/cache/@yarnpkg-lockfile-npm-1.1.0-6e0da4acd2-0bfa50a3d7.zip/node_modules/@yarnpkg/lockfile/",\ @@ -9970,7 +10251,7 @@ const RAW_RUNTIME_STATE = "packageLocation": "./.yarn/cache/agent-base-npm-7.1.1-c9e1a4b59e-e59ce7bed9.zip/node_modules/agent-base/",\ "packageDependencies": [\ ["agent-base", "npm:7.1.1"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"]\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"]\ ],\ "linkType": "HARD"\ }]\ @@ -10144,35 +10425,51 @@ const RAW_RUNTIME_STATE = "packageLocation": "./projects/app-web/",\ "packageDependencies": [\ ["app-web", "workspace:projects/app-web"],\ - ["@graphql-typed-document-node/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.2.0"],\ + ["@graphql-typed-document-node/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.2.0"],\ ["@hono/node-server", "npm:1.11.0"],\ + ["@mswjs/data", "npm:0.16.1"],\ ["@nx/vite", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:18.3.3"],\ + ["@paralleldrive/cuid2", "npm:2.2.2"],\ ["@remix-run/dev", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:2.9.1"],\ - ["@remix-run/node", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@remix-run/react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ - ["@remix-run/testing", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.9.1"],\ + ["@remix-run/node", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/testing", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@testing-library/dom", "npm:10.0.0"],\ ["@testing-library/jest-dom", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:6.4.2"],\ - ["@testing-library/react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:14.3.0"],\ + ["@testing-library/react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:14.3.0"],\ + ["@testing-library/user-event", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:14.5.2"],\ ["@types/node", "npm:20.12.7"],\ ["@types/react", "npm:18.2.75"],\ ["@types/react-dom", "npm:18.2.24"],\ - ["@vitejs/plugin-react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.2.1"],\ + ["@vanilla-extract/css", "npm:1.15.1"],\ + ["@vanilla-extract/sprinkles", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.6.1"],\ + ["@vanilla-extract/vite-plugin", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.9"],\ + ["@vitejs/plugin-react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.2.1"],\ + ["@vitest/expect", "npm:1.5.2"],\ ["eslint-plugin-jsx-a11y", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:6.8.0"],\ ["eslint-plugin-react", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:7.34.1"],\ ["eslint-plugin-react-hooks", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:4.6.0"],\ ["graphql", "npm:16.8.1"],\ - ["graphql-request", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.1.0"],\ + ["graphql-request", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.1.0"],\ ["hono", "npm:4.2.4"],\ ["isbot", "npm:4.4.0"],\ - ["jest-extended", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.0.2"],\ - ["msw", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.2.14"],\ + ["jest-extended", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.2"],\ + ["jwt-decode", "npm:4.0.0"],\ + ["msw", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.2.14"],\ ["react", "npm:18.2.0"],\ - ["react-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.2.0"],\ - ["remix-hono", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.0.16"],\ + ["react-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.2.0"],\ + ["remix-auth", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.6.0"],\ + ["remix-auth-auth0", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.10.0"],\ + ["remix-auth-oauth2", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.11.2"],\ + ["remix-flat-routes", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:0.6.4"],\ + ["remix-hono", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.0.16"],\ + ["tiny-invariant", "npm:1.3.3"],\ ["tslib", "npm:2.6.2"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"],\ - ["vite", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.2.10"],\ - ["vitest", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:1.5.1"]\ + ["uuid", "npm:9.0.1"],\ + ["vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.2.10"],\ + ["vitest", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:1.5.2"]\ ],\ "linkType": "SOFT"\ }]\ @@ -10874,15 +11171,15 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:da96a084620a2dfbbfaea461ea0d0da46cee06a73a577b0e285ccf2f692da2645f525296701066882505006e455e2fbd953d3db669614dc16a04da02307d03f9#npm:3.4.0", {\ - "packageLocation": "./.yarn/__virtual__/babel-preset-fbjs-virtual-57ba2cfae1/0/cache/babel-preset-fbjs-npm-3.4.0-d20810a2f3-2be440c0fd.zip/node_modules/babel-preset-fbjs/",\ + ["virtual:e03de1ddc8d9a511420ddbc4d277bff0cc48833158d8989551de041825e308d272e20b3398be69dfb169003eae112e4ddb802f49abb0af3e64af8a2bfd0cf105#npm:3.4.0", {\ + "packageLocation": "./.yarn/__virtual__/babel-preset-fbjs-virtual-82db8a01f2/0/cache/babel-preset-fbjs-npm-3.4.0-d20810a2f3-2be440c0fd.zip/node_modules/babel-preset-fbjs/",\ "packageDependencies": [\ - ["babel-preset-fbjs", "virtual:da96a084620a2dfbbfaea461ea0d0da46cee06a73a577b0e285ccf2f692da2645f525296701066882505006e455e2fbd953d3db669614dc16a04da02307d03f9#npm:3.4.0"],\ + ["babel-preset-fbjs", "virtual:e03de1ddc8d9a511420ddbc4d277bff0cc48833158d8989551de041825e308d272e20b3398be69dfb169003eae112e4ddb802f49abb0af3e64af8a2bfd0cf105#npm:3.4.0"],\ ["@babel/core", "npm:7.24.4"],\ - ["@babel/plugin-proposal-class-properties", "virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.18.6"],\ - ["@babel/plugin-proposal-object-rest-spread", "virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.20.7"],\ + ["@babel/plugin-proposal-class-properties", "virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.18.6"],\ + ["@babel/plugin-proposal-object-rest-spread", "virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.20.7"],\ ["@babel/plugin-syntax-class-properties", "virtual:68b28d6ebc8fbeabd43f33d965c85bf2927889c951271938e39b860da77c9727afe7affb1172d33a57100a70e5c44523cbfa359d929c75503e1e9b9cb2787e5c#npm:7.12.13"],\ - ["@babel/plugin-syntax-flow", "virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.24.1"],\ + ["@babel/plugin-syntax-flow", "virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.24.1"],\ ["@babel/plugin-syntax-jsx", "virtual:00e3555d451e721d3ed9db9712132acf03649f9b3c566816b2f7fb259618703602a9a92e31f84506f79d60dffd9cdae3385628012f209533c0b94a4fd5e79a1f#npm:7.24.1"],\ ["@babel/plugin-syntax-object-rest-spread", "virtual:68b28d6ebc8fbeabd43f33d965c85bf2927889c951271938e39b860da77c9727afe7affb1172d33a57100a70e5c44523cbfa359d929c75503e1e9b9cb2787e5c#npm:7.8.3"],\ ["@babel/plugin-transform-arrow-functions", "virtual:68b28d6ebc8fbeabd43f33d965c85bf2927889c951271938e39b860da77c9727afe7affb1172d33a57100a70e5c44523cbfa359d929c75503e1e9b9cb2787e5c#npm:7.24.1"],\ @@ -10891,7 +11188,7 @@ const RAW_RUNTIME_STATE = ["@babel/plugin-transform-classes", "virtual:68b28d6ebc8fbeabd43f33d965c85bf2927889c951271938e39b860da77c9727afe7affb1172d33a57100a70e5c44523cbfa359d929c75503e1e9b9cb2787e5c#npm:7.24.1"],\ ["@babel/plugin-transform-computed-properties", "virtual:68b28d6ebc8fbeabd43f33d965c85bf2927889c951271938e39b860da77c9727afe7affb1172d33a57100a70e5c44523cbfa359d929c75503e1e9b9cb2787e5c#npm:7.24.1"],\ ["@babel/plugin-transform-destructuring", "virtual:68b28d6ebc8fbeabd43f33d965c85bf2927889c951271938e39b860da77c9727afe7affb1172d33a57100a70e5c44523cbfa359d929c75503e1e9b9cb2787e5c#npm:7.24.1"],\ - ["@babel/plugin-transform-flow-strip-types", "virtual:57ba2cfae1116b6dcc61e02fd5df4eb3f28baacb59af4f0aa7da7c0dd065e9aa2d51cc552440889a7ece54ca127f68f572a3fb89a9c92f16ffd0b75e0bb535fd#npm:7.24.1"],\ + ["@babel/plugin-transform-flow-strip-types", "virtual:82db8a01f2af5697a17ca8d2f1517c29370cc92e511a64be1b42d0b58d5f805d1e6c9b19ae3243c61d5ff2d8f1046d2d7b16e1e4469196f6b8a525eb41ae007e#npm:7.24.1"],\ ["@babel/plugin-transform-for-of", "virtual:68b28d6ebc8fbeabd43f33d965c85bf2927889c951271938e39b860da77c9727afe7affb1172d33a57100a70e5c44523cbfa359d929c75503e1e9b9cb2787e5c#npm:7.24.1"],\ ["@babel/plugin-transform-function-name", "virtual:68b28d6ebc8fbeabd43f33d965c85bf2927889c951271938e39b860da77c9727afe7affb1172d33a57100a70e5c44523cbfa359d929c75503e1e9b9cb2787e5c#npm:7.24.1"],\ ["@babel/plugin-transform-literals", "virtual:68b28d6ebc8fbeabd43f33d965c85bf2927889c951271938e39b860da77c9727afe7affb1172d33a57100a70e5c44523cbfa359d929c75503e1e9b9cb2787e5c#npm:7.24.1"],\ @@ -11358,9 +11655,30 @@ const RAW_RUNTIME_STATE = ["cacheable-lookup", "npm:5.0.4"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.0.0", {\ + "packageLocation": "./.yarn/cache/cacheable-lookup-npm-7.0.0-b6cd95c14a-63a9c144c5.zip/node_modules/cacheable-lookup/",\ + "packageDependencies": [\ + ["cacheable-lookup", "npm:7.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["cacheable-request", [\ + ["npm:10.2.14", {\ + "packageLocation": "./.yarn/cache/cacheable-request-npm-10.2.14-fd919b07d7-41b6658db3.zip/node_modules/cacheable-request/",\ + "packageDependencies": [\ + ["cacheable-request", "npm:10.2.14"],\ + ["@types/http-cache-semantics", "npm:4.0.4"],\ + ["get-stream", "npm:6.0.1"],\ + ["http-cache-semantics", "npm:4.1.1"],\ + ["keyv", "npm:4.5.4"],\ + ["mimic-response", "npm:4.0.0"],\ + ["normalize-url", "npm:8.0.1"],\ + ["responselike", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:7.0.4", {\ "packageLocation": "./.yarn/cache/cacheable-request-npm-7.0.4-92bf077a92-0834a7d17a.zip/node_modules/cacheable-request/",\ "packageDependencies": [\ @@ -11433,15 +11751,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["camelize", [\ - ["npm:1.0.1", {\ - "packageLocation": "./.yarn/cache/camelize-npm-1.0.1-d86ebe085a-4c9ac55efd.zip/node_modules/camelize/",\ - "packageDependencies": [\ - ["camelize", "npm:1.0.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["caniuse-lite", [\ ["npm:1.0.30001608", {\ "packageLocation": "./.yarn/cache/caniuse-lite-npm-1.0.30001608-e327d8108a-eb77c78fb5.zip/node_modules/caniuse-lite/",\ @@ -11619,6 +11928,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["charenc", [\ + ["npm:0.0.2", {\ + "packageLocation": "./.yarn/cache/charenc-npm-0.0.2-aca0c2f207-a45ec39363.zip/node_modules/charenc/",\ + "packageDependencies": [\ + ["charenc", "npm:0.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["check-error", [\ ["npm:1.0.3", {\ "packageLocation": "./.yarn/cache/check-error-npm-1.0.3-137994eabc-94aa37a731.zip/node_modules/check-error/",\ @@ -12136,13 +12454,6 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["cookie", [\ - ["npm:0.4.2", {\ - "packageLocation": "./.yarn/cache/cookie-npm-0.4.2-7761894d5f-beab41fbd7.zip/node_modules/cookie/",\ - "packageDependencies": [\ - ["cookie", "npm:0.4.2"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:0.5.0", {\ "packageLocation": "./.yarn/cache/cookie-npm-0.5.0-e2d58a161a-c01ca3ef8d.zip/node_modules/cookie/",\ "packageDependencies": [\ @@ -12386,11 +12697,11 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["css-color-keywords", [\ - ["npm:1.0.0", {\ - "packageLocation": "./.yarn/cache/css-color-keywords-npm-1.0.0-fc176df58b-af205a86c6.zip/node_modules/css-color-keywords/",\ + ["crypt", [\ + ["npm:0.0.2", {\ + "packageLocation": "./.yarn/cache/crypt-npm-0.0.2-033627d94f-adbf263441.zip/node_modules/crypt/",\ "packageDependencies": [\ - ["css-color-keywords", "npm:1.0.0"]\ + ["crypt", "npm:0.0.2"]\ ],\ "linkType": "HARD"\ }]\ @@ -12409,18 +12720,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["css-to-react-native", [\ - ["npm:3.2.0", {\ - "packageLocation": "./.yarn/cache/css-to-react-native-npm-3.2.0-46e31a25e3-fde850a511.zip/node_modules/css-to-react-native/",\ - "packageDependencies": [\ - ["css-to-react-native", "npm:3.2.0"],\ - ["camelize", "npm:1.0.1"],\ - ["css-color-keywords", "npm:1.0.0"],\ - ["postcss-value-parser", "npm:4.2.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["css-tree", [\ ["npm:2.2.1", {\ "packageLocation": "./.yarn/cache/css-tree-npm-2.2.1-ee98ac48a8-47e87b0f02.zip/node_modules/css-tree/",\ @@ -12479,13 +12778,6 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["csstype", [\ - ["npm:3.1.2", {\ - "packageLocation": "./.yarn/cache/csstype-npm-3.1.2-cead7d99b2-32c038af25.zip/node_modules/csstype/",\ - "packageDependencies": [\ - ["csstype", "npm:3.1.2"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:3.1.3", {\ "packageLocation": "./.yarn/cache/csstype-npm-3.1.3-e9a1c85013-80c089d6f7.zip/node_modules/csstype/",\ "packageDependencies": [\ @@ -12494,15 +12786,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["cuid", [\ - ["npm:3.0.0", {\ - "packageLocation": "./.yarn/cache/cuid-npm-3.0.0-66e229f427-e1cac04b8d.zip/node_modules/cuid/",\ - "packageDependencies": [\ - ["cuid", "npm:3.0.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["cuint", [\ ["npm:0.2.2", {\ "packageLocation": "./.yarn/cache/cuint-npm-0.2.2-3990651cc6-ba56735799.zip/node_modules/cuint/",\ @@ -12595,6 +12878,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["date-fns", [\ + ["npm:2.30.0", {\ + "packageLocation": "./.yarn/cache/date-fns-npm-2.30.0-895c790e0f-e4b521fbf2.zip/node_modules/date-fns/",\ + "packageDependencies": [\ + ["date-fns", "npm:2.30.0"],\ + ["@babel/runtime", "npm:7.24.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["debounce", [\ ["npm:1.2.1", {\ "packageLocation": "./.yarn/cache/debounce-npm-1.2.1-b09266a260-6c9320aa09.zip/node_modules/debounce/",\ @@ -12650,12 +12943,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4", {\ - "packageLocation": "./.yarn/__virtual__/debug-virtual-11377b508d/0/cache/debug-npm-4.3.4-4513954577-cedbec4529.zip/node_modules/debug/",\ + ["virtual:e0cd6afa69db469de21c754be1546e018ea723a8653bf7c1fdbb52b3d67b9c4065461f2d7632852c8644c3b36b5304269483ba2eb51ad39f9eae03847036d7a9#npm:2.6.9", {\ + "packageLocation": "./.yarn/__virtual__/debug-virtual-3f5cb29632/0/cache/debug-npm-2.6.9-7d4cb597dc-121908fb83.zip/node_modules/debug/",\ "packageDependencies": [\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e0cd6afa69db469de21c754be1546e018ea723a8653bf7c1fdbb52b3d67b9c4065461f2d7632852c8644c3b36b5304269483ba2eb51ad39f9eae03847036d7a9#npm:2.6.9"],\ ["@types/supports-color", null],\ - ["ms", "npm:2.1.2"],\ + ["ms", "npm:2.0.0"],\ ["supports-color", null]\ ],\ "packagePeers": [\ @@ -12664,12 +12957,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:e0cd6afa69db469de21c754be1546e018ea723a8653bf7c1fdbb52b3d67b9c4065461f2d7632852c8644c3b36b5304269483ba2eb51ad39f9eae03847036d7a9#npm:2.6.9", {\ - "packageLocation": "./.yarn/__virtual__/debug-virtual-3f5cb29632/0/cache/debug-npm-2.6.9-7d4cb597dc-121908fb83.zip/node_modules/debug/",\ + ["virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4", {\ + "packageLocation": "./.yarn/__virtual__/debug-virtual-c3c08891d2/0/cache/debug-npm-4.3.4-4513954577-cedbec4529.zip/node_modules/debug/",\ "packageDependencies": [\ - ["debug", "virtual:e0cd6afa69db469de21c754be1546e018ea723a8653bf7c1fdbb52b3d67b9c4065461f2d7632852c8644c3b36b5304269483ba2eb51ad39f9eae03847036d7a9#npm:2.6.9"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["@types/supports-color", null],\ - ["ms", "npm:2.0.0"],\ + ["ms", "npm:2.1.2"],\ ["supports-color", null]\ ],\ "packagePeers": [\ @@ -12856,6 +13149,13 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["depd", [\ + ["npm:1.1.2", {\ + "packageLocation": "./.yarn/cache/depd-npm-1.1.2-b0c8414da7-acb24aaf93.zip/node_modules/depd/",\ + "packageDependencies": [\ + ["depd", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:2.0.0", {\ "packageLocation": "./.yarn/cache/depd-npm-2.0.0-b6c51a4b43-58bd06ec20.zip/node_modules/depd/",\ "packageDependencies": [\ @@ -12924,7 +13224,7 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["detect-port", "npm:1.5.1"],\ ["address", "npm:1.2.2"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"]\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"]\ ],\ "linkType": "HARD"\ }]\ @@ -12989,7 +13289,7 @@ const RAW_RUNTIME_STATE = "packageLocation": "./.yarn/cache/docker-modem-npm-3.0.8-9923fc0db1-5c00592297.zip/node_modules/docker-modem/",\ "packageDependencies": [\ ["docker-modem", "npm:3.0.8"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["readable-stream", "npm:3.6.2"],\ ["split-ca", "npm:1.0.1"],\ ["ssh2", "npm:1.15.0"]\ @@ -13192,10 +13492,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.30.9", {\ - "packageLocation": "./.yarn/__virtual__/drizzle-orm-virtual-7572c8fd02/0/cache/drizzle-orm-npm-0.30.9-689da4528b-fe1d3c5914.zip/node_modules/drizzle-orm/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.30.9", {\ + "packageLocation": "./.yarn/__virtual__/drizzle-orm-virtual-56d39bdcbe/0/cache/drizzle-orm-npm-0.30.9-689da4528b-fe1d3c5914.zip/node_modules/drizzle-orm/",\ "packageDependencies": [\ - ["drizzle-orm", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.30.9"],\ + ["drizzle-orm", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.30.9"],\ ["@aws-sdk/client-rds-data", null],\ ["@cloudflare/workers-types", null],\ ["@electric-sql/pglite", null],\ @@ -13852,10 +14152,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:1.6.3", {\ - "packageLocation": "./.yarn/__virtual__/esbuild-plugins-node-modules-polyfill-virtual-4689694036/0/cache/esbuild-plugins-node-modules-polyfill-npm-1.6.3-feb8c22e87-f198268e98.zip/node_modules/esbuild-plugins-node-modules-polyfill/",\ + ["virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:1.6.3", {\ + "packageLocation": "./.yarn/__virtual__/esbuild-plugins-node-modules-polyfill-virtual-24702bfdc2/0/cache/esbuild-plugins-node-modules-polyfill-npm-1.6.3-feb8c22e87-f198268e98.zip/node_modules/esbuild-plugins-node-modules-polyfill/",\ "packageDependencies": [\ - ["esbuild-plugins-node-modules-polyfill", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:1.6.3"],\ + ["esbuild-plugins-node-modules-polyfill", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:1.6.3"],\ ["@jspm/core", "npm:2.0.1"],\ ["@types/esbuild", null],\ ["esbuild", "npm:0.17.6"],\ @@ -13882,7 +14182,7 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["esbuild-register", "virtual:ff13502fbfa0775c8e35e50634d03677fd00063c1604264d0219e3abb9732adf04146d0048f117b34640a3bd1f15729c96cc57c972efc20ba50dd72938c0306a#npm:3.5.0"],\ ["@types/esbuild", null],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["esbuild", "npm:0.19.12"]\ ],\ "packagePeers": [\ @@ -13956,7 +14256,7 @@ const RAW_RUNTIME_STATE = ["ajv", "npm:6.12.6"],\ ["chalk", "npm:4.1.2"],\ ["cross-spawn", "npm:7.0.3"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["doctrine", "npm:3.0.0"],\ ["escape-string-regexp", "npm:4.0.0"],\ ["eslint-scope", "npm:7.2.2"],\ @@ -14000,7 +14300,7 @@ const RAW_RUNTIME_STATE = ["ajv", "npm:6.12.6"],\ ["chalk", "npm:4.1.2"],\ ["cross-spawn", "npm:7.0.3"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["escape-string-regexp", "npm:4.0.0"],\ ["eslint-scope", "npm:8.0.1"],\ ["eslint-visitor-keys", "npm:4.0.0"],\ @@ -14036,10 +14336,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:9.1.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-config-prettier-virtual-8726933d48/0/cache/eslint-config-prettier-npm-9.1.0-0e1fd42d7d-6d332694b3.zip/node_modules/eslint-config-prettier/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:9.1.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-config-prettier-virtual-0868ee5c66/0/cache/eslint-config-prettier-npm-9.1.0-0e1fd42d7d-6d332694b3.zip/node_modules/eslint-config-prettier/",\ "packageDependencies": [\ - ["eslint-config-prettier", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:9.1.0"],\ + ["eslint-config-prettier", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:9.1.0"],\ ["@types/eslint", null],\ ["eslint", "npm:9.0.0"]\ ],\ @@ -14058,10 +14358,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.2.3", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-drizzle-virtual-296046c092/0/cache/eslint-plugin-drizzle-npm-0.2.3-759ff3a121-e747b712e7.zip/node_modules/eslint-plugin-drizzle/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.2.3", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-drizzle-virtual-86560fe693/0/cache/eslint-plugin-drizzle-npm-0.2.3-759ff3a121-e747b712e7.zip/node_modules/eslint-plugin-drizzle/",\ "packageDependencies": [\ - ["eslint-plugin-drizzle", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.2.3"],\ + ["eslint-plugin-drizzle", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.2.3"],\ ["@types/eslint", null],\ ["eslint", "npm:9.0.0"]\ ],\ @@ -14080,10 +14380,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.8.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-jsx-a11y-virtual-c9045ea4a1/0/cache/eslint-plugin-jsx-a11y-npm-6.8.0-5ffd885665-199b883e52.zip/node_modules/eslint-plugin-jsx-a11y/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.8.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-jsx-a11y-virtual-44e1c779c9/0/cache/eslint-plugin-jsx-a11y-npm-6.8.0-5ffd885665-199b883e52.zip/node_modules/eslint-plugin-jsx-a11y/",\ "packageDependencies": [\ - ["eslint-plugin-jsx-a11y", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.8.0"],\ + ["eslint-plugin-jsx-a11y", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.8.0"],\ ["@babel/runtime", "npm:7.24.4"],\ ["@types/eslint", null],\ ["aria-query", "npm:5.3.0"],\ @@ -14147,10 +14447,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.6.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-playwright-virtual-40475ab239/0/cache/eslint-plugin-playwright-npm-1.6.0-7edbba730b-3957ed98ef.zip/node_modules/eslint-plugin-playwright/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.6.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-playwright-virtual-fb268e52ef/0/cache/eslint-plugin-playwright-npm-1.6.0-7edbba730b-3957ed98ef.zip/node_modules/eslint-plugin-playwright/",\ "packageDependencies": [\ - ["eslint-plugin-playwright", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.6.0"],\ + ["eslint-plugin-playwright", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.6.0"],\ ["@types/eslint", null],\ ["@types/eslint-plugin-jest", null],\ ["eslint", "npm:9.0.0"],\ @@ -14174,10 +14474,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.34.1", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-react-virtual-79c87f7b24/0/cache/eslint-plugin-react-npm-7.34.1-93be695b40-7c61b1314d.zip/node_modules/eslint-plugin-react/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.34.1", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-react-virtual-45d023efb7/0/cache/eslint-plugin-react-npm-7.34.1-93be695b40-7c61b1314d.zip/node_modules/eslint-plugin-react/",\ "packageDependencies": [\ - ["eslint-plugin-react", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.34.1"],\ + ["eslint-plugin-react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.34.1"],\ ["@types/eslint", null],\ ["array-includes", "npm:3.1.8"],\ ["array.prototype.findlast", "npm:1.2.5"],\ @@ -14245,10 +14545,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.6.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-react-hooks-virtual-e2233dab98/0/cache/eslint-plugin-react-hooks-npm-4.6.0-b429fac07f-58c7e10ea5.zip/node_modules/eslint-plugin-react-hooks/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.6.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-react-hooks-virtual-50cc32e4bd/0/cache/eslint-plugin-react-hooks-npm-4.6.0-b429fac07f-58c7e10ea5.zip/node_modules/eslint-plugin-react-hooks/",\ "packageDependencies": [\ - ["eslint-plugin-react-hooks", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.6.0"],\ + ["eslint-plugin-react-hooks", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.6.0"],\ ["@types/eslint", null],\ ["eslint", "npm:9.0.0"]\ ],\ @@ -14280,10 +14580,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:52.0.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-unicorn-virtual-bd87a8a05a/0/cache/eslint-plugin-unicorn-npm-52.0.0-9f4709a416-c68055ccbb.zip/node_modules/eslint-plugin-unicorn/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:52.0.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-unicorn-virtual-cc64a1f44b/0/cache/eslint-plugin-unicorn-npm-52.0.0-9f4709a416-c68055ccbb.zip/node_modules/eslint-plugin-unicorn/",\ "packageDependencies": [\ - ["eslint-plugin-unicorn", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:52.0.0"],\ + ["eslint-plugin-unicorn", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:52.0.0"],\ ["@babel/helper-validator-identifier", "npm:7.22.20"],\ ["@eslint-community/eslint-utils", "virtual:93671e58d92622557b1ca9c3393a2b9f9364adf3976b10b2f33744113b1cef816270443503c9f65b4458454c1e62285a956741b5fb7521b92215b19ad8e4917b#npm:4.4.0"],\ ["@eslint/eslintrc", "npm:2.1.4"],\ @@ -14565,15 +14865,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["events", [\ - ["npm:3.3.0", {\ - "packageLocation": "./.yarn/cache/events-npm-3.3.0-c280bc7e48-d6b6f2adbc.zip/node_modules/events/",\ - "packageDependencies": [\ - ["events", "npm:3.3.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["execa", [\ ["npm:0.7.0", {\ "packageLocation": "./.yarn/cache/execa-npm-0.7.0-3f4e53d884-812f1776e2.zip/node_modules/execa/",\ @@ -15210,6 +15501,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["form-data-encoder", [\ + ["npm:4.0.2", {\ + "packageLocation": "./.yarn/cache/form-data-encoder-npm-4.0.2-aa021c3f21-559d3130e2.zip/node_modules/form-data-encoder/",\ + "packageDependencies": [\ + ["form-data-encoder", "npm:4.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["format", [\ ["npm:0.2.2", {\ "packageLocation": "./.yarn/cache/format-npm-0.2.2-679f3acc64-6032ba7475.zip/node_modules/format/",\ @@ -15631,6 +15931,24 @@ const RAW_RUNTIME_STATE = ["responselike", "npm:2.0.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:14.2.1", {\ + "packageLocation": "./.yarn/cache/got-npm-14.2.1-e13379605e-6592f70d57.zip/node_modules/got/",\ + "packageDependencies": [\ + ["got", "npm:14.2.1"],\ + ["@sindresorhus/is", "npm:6.3.0"],\ + ["@szmarczak/http-timer", "npm:5.0.1"],\ + ["cacheable-lookup", "npm:7.0.0"],\ + ["cacheable-request", "npm:10.2.14"],\ + ["decompress-response", "npm:6.0.0"],\ + ["form-data-encoder", "npm:4.0.2"],\ + ["get-stream", "npm:8.0.1"],\ + ["http2-wrapper", "npm:2.2.1"],\ + ["lowercase-keys", "npm:3.0.0"],\ + ["p-cancelable", "npm:4.0.1"],\ + ["responselike", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["graceful-fs", [\ @@ -15668,16 +15986,16 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3", {\ - "packageLocation": "./.yarn/__virtual__/graphql-config-virtual-9b2955cc21/0/cache/graphql-config-npm-5.0.3-54813b1195-dadd04b08b.zip/node_modules/graphql-config/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3", {\ + "packageLocation": "./.yarn/__virtual__/graphql-config-virtual-3eadc53394/0/cache/graphql-config-npm-5.0.3-54813b1195-dadd04b08b.zip/node_modules/graphql-config/",\ "packageDependencies": [\ - ["graphql-config", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:5.0.3"],\ - ["@graphql-tools/graphql-file-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1"],\ - ["@graphql-tools/json-file-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.1"],\ - ["@graphql-tools/load", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.2"],\ - ["@graphql-tools/merge", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:9.0.3"],\ - ["@graphql-tools/url-loader", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:8.0.2"],\ - ["@graphql-tools/utils", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:10.1.3"],\ + ["graphql-config", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:5.0.3"],\ + ["@graphql-tools/graphql-file-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1"],\ + ["@graphql-tools/json-file-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.1"],\ + ["@graphql-tools/load", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.2"],\ + ["@graphql-tools/merge", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:9.0.3"],\ + ["@graphql-tools/url-loader", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:8.0.2"],\ + ["@graphql-tools/utils", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:10.1.3"],\ ["@types/cosmiconfig-toml-loader", null],\ ["@types/graphql", null],\ ["cosmiconfig", "virtual:77cc138b8f03e76bc81b53d7c536b91810383e8b8e9f294aac9f969daaf6fd5a72e29c2099e3025b537aac701c45d44c7e6af1647a2799c9f61d4f4f9312b7a3#npm:8.3.6"],\ @@ -15705,11 +16023,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.1.0", {\ - "packageLocation": "./.yarn/__virtual__/graphql-request-virtual-0855294de3/0/cache/graphql-request-npm-6.1.0-d265ce919d-f8167925a1.zip/node_modules/graphql-request/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.1.0", {\ + "packageLocation": "./.yarn/__virtual__/graphql-request-virtual-ddea39db7b/0/cache/graphql-request-npm-6.1.0-d265ce919d-f8167925a1.zip/node_modules/graphql-request/",\ "packageDependencies": [\ - ["graphql-request", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.1.0"],\ - ["@graphql-typed-document-node/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:3.2.0"],\ + ["graphql-request", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.1.0"],\ + ["@graphql-typed-document-node/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.2.0"],\ ["@types/graphql", null],\ ["cross-fetch", "npm:3.1.8"],\ ["graphql", "npm:16.8.1"]\ @@ -15721,6 +16039,29 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["graphql-scalars", [\ + ["npm:1.23.0", {\ + "packageLocation": "./.yarn/cache/graphql-scalars-npm-1.23.0-afcf92cba2-7666c305b8.zip/node_modules/graphql-scalars/",\ + "packageDependencies": [\ + ["graphql-scalars", "npm:1.23.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.23.0", {\ + "packageLocation": "./.yarn/__virtual__/graphql-scalars-virtual-5e041bf1aa/0/cache/graphql-scalars-npm-1.23.0-afcf92cba2-7666c305b8.zip/node_modules/graphql-scalars/",\ + "packageDependencies": [\ + ["graphql-scalars", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.23.0"],\ + ["@types/graphql", null],\ + ["graphql", "npm:16.8.1"],\ + ["tslib", "npm:2.6.2"]\ + ],\ + "packagePeers": [\ + "@types/graphql",\ + "graphql"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["graphql-tag", [\ ["npm:2.12.6", {\ "packageLocation": "./.yarn/cache/graphql-tag-npm-2.12.6-99a5a7f6de-7763a72011.zip/node_modules/graphql-tag/",\ @@ -15729,10 +16070,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:345d5041753dabeafe363012501cdd4d8834292c317a10b3b83119fceb8d9d17f3c6a6a10c8aa9d11285fc9ffd57ccd02e679987d31c18ef60b0635792395f16#npm:2.12.6", {\ - "packageLocation": "./.yarn/__virtual__/graphql-tag-virtual-1ca31c398d/0/cache/graphql-tag-npm-2.12.6-99a5a7f6de-7763a72011.zip/node_modules/graphql-tag/",\ + ["virtual:5a439034ff3fdd05543739b3ff835dc99aa92646fa0ef0b8c2bb29efafe815b7fceaad3450ca83afbd61c4387ea0fddfa43286eb510117baa3098d91ed30dbe5#npm:2.12.6", {\ + "packageLocation": "./.yarn/__virtual__/graphql-tag-virtual-17670fa7bc/0/cache/graphql-tag-npm-2.12.6-99a5a7f6de-7763a72011.zip/node_modules/graphql-tag/",\ "packageDependencies": [\ - ["graphql-tag", "virtual:345d5041753dabeafe363012501cdd4d8834292c317a10b3b83119fceb8d9d17f3c6a6a10c8aa9d11285fc9ffd57ccd02e679987d31c18ef60b0635792395f16#npm:2.12.6"],\ + ["graphql-tag", "virtual:5a439034ff3fdd05543739b3ff835dc99aa92646fa0ef0b8c2bb29efafe815b7fceaad3450ca83afbd61c4387ea0fddfa43286eb510117baa3098d91ed30dbe5#npm:2.12.6"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"],\ ["tslib", "npm:2.6.2"]\ @@ -15744,6 +16085,28 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["graphql-transform-scalars", [\ + ["npm:1.2.1", {\ + "packageLocation": "./.yarn/cache/graphql-transform-scalars-npm-1.2.1-419c342fcf-d170e808a2.zip/node_modules/graphql-transform-scalars/",\ + "packageDependencies": [\ + ["graphql-transform-scalars", "npm:1.2.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.2.1", {\ + "packageLocation": "./.yarn/__virtual__/graphql-transform-scalars-virtual-93ba0e7195/0/cache/graphql-transform-scalars-npm-1.2.1-419c342fcf-d170e808a2.zip/node_modules/graphql-transform-scalars/",\ + "packageDependencies": [\ + ["graphql-transform-scalars", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.2.1"],\ + ["@types/graphql", null],\ + ["graphql", "npm:16.8.1"]\ + ],\ + "packagePeers": [\ + "@types/graphql",\ + "graphql"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["graphql-ws", [\ ["npm:5.16.0", {\ "packageLocation": "./.yarn/cache/graphql-ws-npm-5.16.0-98146e34fe-5e538c3460.zip/node_modules/graphql-ws/",\ @@ -15752,10 +16115,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:d5ca7ad1cfec7e787a2430e58e88a97b042284f807641b9e6e8fbe4a1ce879e128bbddbf53dbf6950729c75f14b9a555068173fc556f3b2ccdf494acbda1d51c#npm:5.16.0", {\ - "packageLocation": "./.yarn/__virtual__/graphql-ws-virtual-c94950a753/0/cache/graphql-ws-npm-5.16.0-98146e34fe-5e538c3460.zip/node_modules/graphql-ws/",\ + ["virtual:6d71121c431e7136adf2437767da8860b737fe6d3873f7d27599d76f3e7697388ec450da218eb64c5f22eaa28e19772b531af2b210cb4d3605ee11ec38104607#npm:5.16.0", {\ + "packageLocation": "./.yarn/__virtual__/graphql-ws-virtual-0f91bd3dc8/0/cache/graphql-ws-npm-5.16.0-98146e34fe-5e538c3460.zip/node_modules/graphql-ws/",\ "packageDependencies": [\ - ["graphql-ws", "virtual:d5ca7ad1cfec7e787a2430e58e88a97b042284f807641b9e6e8fbe4a1ce879e128bbddbf53dbf6950729c75f14b9a555068173fc556f3b2ccdf494acbda1d51c#npm:5.16.0"],\ + ["graphql-ws", "virtual:6d71121c431e7136adf2437767da8860b737fe6d3873f7d27599d76f3e7697388ec450da218eb64c5f22eaa28e19772b531af2b210cb4d3605ee11ec38104607#npm:5.16.0"],\ ["@types/graphql", null],\ ["graphql", "npm:16.8.1"]\ ],\ @@ -15774,14 +16137,14 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.3.0", {\ - "packageLocation": "./.yarn/__virtual__/graphql-yoga-virtual-66e898e395/0/cache/graphql-yoga-npm-5.3.0-966f641a15-b5f30363f9.zip/node_modules/graphql-yoga/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.3.0", {\ + "packageLocation": "./.yarn/__virtual__/graphql-yoga-virtual-85bd3e1608/0/cache/graphql-yoga-npm-5.3.0-966f641a15-b5f30363f9.zip/node_modules/graphql-yoga/",\ "packageDependencies": [\ - ["graphql-yoga", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.3.0"],\ + ["graphql-yoga", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.3.0"],\ ["@envelop/core", "npm:5.0.0"],\ - ["@graphql-tools/executor", "virtual:ed9371b72d00fa0fd309d02d1a55daa35ff52b6d9b13cd890e1e5e835ee8806d442b17353f135354f5dccd37a0483287142af94323441a95e2c5d1c68fa280fe#npm:1.2.6"],\ - ["@graphql-tools/schema", "virtual:353b52792c6de8bdee3e2eb92631676b3bdfa8767bb67f6f8b31c04327aca99792a38424470706f79855a72e65dabd8d2d369916801430551c88070849adbfb5#npm:10.0.3"],\ - ["@graphql-tools/utils", "virtual:9689208013f54d70f50142e6c518306a60d333e09e454d6692cc59036365052a93e3bd03815502433a056e7866c0da8a4fb00af4a3210dfdb30051d54d70976d#npm:10.1.2"],\ + ["@graphql-tools/executor", "virtual:14a1b93cef30ed3379820de8b0d02decdffbb6ffdf51bde6a30809bd9042ddfa09c0276bbc265c59576fa2a0670462d4e06ef6136879e6921e24734b5b6dcf6f#npm:1.2.6"],\ + ["@graphql-tools/schema", "virtual:06ad281b2139667642afa8bc815cb4c8cd0a52dcae9090d6c25bcbdbd742dba94f4aa7ef56910ca119c7fe5bf71173f5327c439af19b13550044c6fadb5dad0a#npm:10.0.3"],\ + ["@graphql-tools/utils", "virtual:188dd830704359381f5bffc7bc724aba144d6adde04eb5410c7a8b4216814c039242b6295f52fb19d06183a97f0328a9674e09006896f765504daaa069db758c#npm:10.1.2"],\ ["@graphql-yoga/logger", "npm:2.0.0"],\ ["@graphql-yoga/subscription", "npm:5.0.0"],\ ["@types/graphql", null],\ @@ -15973,13 +16336,6 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["headers-polyfill", [\ - ["npm:3.2.5", {\ - "packageLocation": "./.yarn/cache/headers-polyfill-npm-3.2.5-5873ac13a0-10202f4ebf.zip/node_modules/headers-polyfill/",\ - "packageDependencies": [\ - ["headers-polyfill", "npm:3.2.5"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:4.0.3", {\ "packageLocation": "./.yarn/cache/headers-polyfill-npm-4.0.3-65ca63b329-53e85b2c63.zip/node_modules/headers-polyfill/",\ "packageDependencies": [\ @@ -15997,16 +16353,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["hoist-non-react-statics", [\ - ["npm:3.3.2", {\ - "packageLocation": "./.yarn/cache/hoist-non-react-statics-npm-3.3.2-e7b709e6c1-fe0889169e.zip/node_modules/hoist-non-react-statics/",\ - "packageDependencies": [\ - ["hoist-non-react-statics", "npm:3.3.2"],\ - ["react-is", "npm:16.13.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["hono", [\ ["npm:4.2.4", {\ "packageLocation": "./.yarn/cache/hono-npm-4.2.4-c183465ffc-f6e7d21ebd.zip/node_modules/hono/",\ @@ -16115,7 +16461,7 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["http-proxy-agent", "npm:7.0.2"],\ ["agent-base", "npm:7.1.1"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"]\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"]\ ],\ "linkType": "HARD"\ }]\ @@ -16151,6 +16497,15 @@ const RAW_RUNTIME_STATE = ["resolve-alpn", "npm:1.2.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:2.2.1", {\ + "packageLocation": "./.yarn/cache/http2-wrapper-npm-2.2.1-c033aaabde-7207201d3c.zip/node_modules/http2-wrapper/",\ + "packageDependencies": [\ + ["http2-wrapper", "npm:2.2.1"],\ + ["quick-lru", "npm:5.1.1"],\ + ["resolve-alpn", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["https-proxy-agent", [\ @@ -16159,7 +16514,7 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["https-proxy-agent", "npm:7.0.4"],\ ["agent-base", "npm:7.1.1"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"]\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"]\ ],\ "linkType": "HARD"\ }]\ @@ -16215,10 +16570,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:5.1.0", {\ - "packageLocation": "./.yarn/__virtual__/icss-utils-virtual-2785244d5c/0/cache/icss-utils-npm-5.1.0-8d8c062d07-39c92936fa.zip/node_modules/icss-utils/",\ + ["virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:5.1.0", {\ + "packageLocation": "./.yarn/__virtual__/icss-utils-virtual-2c568f772d/0/cache/icss-utils-npm-5.1.0-8d8c062d07-39c92936fa.zip/node_modules/icss-utils/",\ "packageDependencies": [\ - ["icss-utils", "virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:5.1.0"],\ + ["icss-utils", "virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:5.1.0"],\ ["@types/postcss", null],\ ["postcss", "npm:8.4.38"]\ ],\ @@ -16528,6 +16883,13 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["is-buffer", [\ + ["npm:1.1.6", {\ + "packageLocation": "./.yarn/cache/is-buffer-npm-1.1.6-08199d9ccc-ae18aa0b6e.zip/node_modules/is-buffer/",\ + "packageDependencies": [\ + ["is-buffer", "npm:1.1.6"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:2.0.5", {\ "packageLocation": "./.yarn/cache/is-buffer-npm-2.0.5-17e563f277-e603f6fced.zip/node_modules/is-buffer/",\ "packageDependencies": [\ @@ -17075,12 +17437,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:5.0.0", {\ - "packageLocation": "./.yarn/__virtual__/isomorphic-ws-virtual-578e2d1bb8/0/cache/isomorphic-ws-npm-5.0.0-9c72251c2d-a058ac8b5e.zip/node_modules/isomorphic-ws/",\ + ["virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:5.0.0", {\ + "packageLocation": "./.yarn/__virtual__/isomorphic-ws-virtual-a1a0b36944/0/cache/isomorphic-ws-npm-5.0.0-9c72251c2d-a058ac8b5e.zip/node_modules/isomorphic-ws/",\ "packageDependencies": [\ - ["isomorphic-ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:5.0.0"],\ + ["isomorphic-ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:5.0.0"],\ ["@types/ws", "npm:8.5.10"],\ - ["ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:8.16.0"]\ + ["ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:8.16.0"]\ ],\ "packagePeers": [\ "@types/ws",\ @@ -17141,7 +17503,7 @@ const RAW_RUNTIME_STATE = "packageLocation": "./.yarn/cache/istanbul-lib-source-maps-npm-4.0.1-af0f859df7-19e4cc4050.zip/node_modules/istanbul-lib-source-maps/",\ "packageDependencies": [\ ["istanbul-lib-source-maps", "npm:4.0.1"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["istanbul-lib-coverage", "npm:3.2.2"],\ ["source-map", "npm:0.6.1"]\ ],\ @@ -17152,7 +17514,7 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["istanbul-lib-source-maps", "npm:5.0.4"],\ ["@jridgewell/trace-mapping", "npm:0.3.25"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["istanbul-lib-coverage", "npm:3.2.2"]\ ],\ "linkType": "HARD"\ @@ -17351,10 +17713,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.0.2", {\ - "packageLocation": "./.yarn/__virtual__/jest-extended-virtual-37e699fad7/0/cache/jest-extended-npm-4.0.2-4e9bb5ab29-305fdb6885.zip/node_modules/jest-extended/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.2", {\ + "packageLocation": "./.yarn/__virtual__/jest-extended-virtual-22bf92712f/0/cache/jest-extended-npm-4.0.2-4e9bb5ab29-305fdb6885.zip/node_modules/jest-extended/",\ "packageDependencies": [\ - ["jest-extended", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:4.0.2"],\ + ["jest-extended", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:4.0.2"],\ ["@types/jest", null],\ ["jest", null],\ ["jest-diff", "npm:29.7.0"],\ @@ -17675,15 +18037,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["js-levenshtein", [\ - ["npm:1.1.6", {\ - "packageLocation": "./.yarn/cache/js-levenshtein-npm-1.1.6-ab883e61a3-1404573532.zip/node_modules/js-levenshtein/",\ - "packageDependencies": [\ - ["js-levenshtein", "npm:1.1.6"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["js-tokens", [\ ["npm:4.0.0", {\ "packageLocation": "./.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-e248708d37.zip/node_modules/js-tokens/",\ @@ -17951,7 +18304,7 @@ const RAW_RUNTIME_STATE = ["jwks-rsa", "npm:3.1.0"],\ ["@types/express", "npm:4.17.21"],\ ["@types/jsonwebtoken", "npm:9.0.6"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["jose", "npm:4.15.5"],\ ["limiter", "npm:1.1.5"],\ ["lru-memoizer", "npm:2.2.0"]\ @@ -17970,6 +18323,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["jwt-decode", [\ + ["npm:4.0.0", {\ + "packageLocation": "./.yarn/cache/jwt-decode-npm-4.0.0-4cd8e89909-de75bbf892.zip/node_modules/jwt-decode/",\ + "packageDependencies": [\ + ["jwt-decode", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["keyv", [\ ["npm:4.5.4", {\ "packageLocation": "./.yarn/cache/keyv-npm-4.5.4-4c8e2cf7f7-aa52f3c5e1.zip/node_modules/keyv/",\ @@ -18095,7 +18457,7 @@ const RAW_RUNTIME_STATE = ["lint-staged", "npm:15.2.2"],\ ["chalk", "npm:5.3.0"],\ ["commander", "npm:11.1.0"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["execa", "npm:8.0.1"],\ ["lilconfig", "npm:3.0.0"],\ ["listr2", "npm:8.0.1"],\ @@ -18128,10 +18490,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:4.0.5", {\ - "packageLocation": "./.yarn/__virtual__/listr2-virtual-b8ff0527be/0/cache/listr2-npm-4.0.5-e9e44decc1-0e64dc5e66.zip/node_modules/listr2/",\ + ["virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:4.0.5", {\ + "packageLocation": "./.yarn/__virtual__/listr2-virtual-74ef4f8454/0/cache/listr2-npm-4.0.5-e9e44decc1-0e64dc5e66.zip/node_modules/listr2/",\ "packageDependencies": [\ - ["listr2", "virtual:9543052764721cb679a9452e9316bb1eb386c396b8b86b3e77d1baf92be80f55d4a3536ea7d62a466194f211ee1a562e4c2eb0ad5cc990c1cd9ded2dda9d1f93#npm:4.0.5"],\ + ["listr2", "virtual:a4ab729469f2fe3eee647ff5ffa9b78ada5f3e903aa1a4327ea7c49b189d8e2123fb1bc1eb6dfdc78b04c1d5fc5ec6625546a4ee919d4aa3f596b14046eee0f5#npm:4.0.5"],\ ["@types/enquirer", null],\ ["cli-truncate", "npm:2.1.0"],\ ["colorette", "npm:2.0.20"],\ @@ -18538,6 +18900,13 @@ const RAW_RUNTIME_STATE = ["lowercase-keys", "npm:2.0.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:3.0.0", {\ + "packageLocation": "./.yarn/cache/lowercase-keys-npm-3.0.0-f8c4730215-ef62b9fa56.zip/node_modules/lowercase-keys/",\ + "packageDependencies": [\ + ["lowercase-keys", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["lru-cache", [\ @@ -18709,6 +19078,18 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["md5", [\ + ["npm:2.3.0", {\ + "packageLocation": "./.yarn/cache/md5-npm-2.3.0-86c49d3915-14a21d597d.zip/node_modules/md5/",\ + "packageDependencies": [\ + ["md5", "npm:2.3.0"],\ + ["charenc", "npm:0.0.2"],\ + ["crypt", "npm:0.0.2"],\ + ["is-buffer", "npm:1.1.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["mdast-util-definitions", [\ ["npm:5.1.2", {\ "packageLocation": "./.yarn/cache/mdast-util-definitions-npm-5.1.2-45a5b0f1bf-da9049c155.zip/node_modules/mdast-util-definitions/",\ @@ -18940,6 +19321,13 @@ const RAW_RUNTIME_STATE = ["merge-descriptors", "npm:1.0.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:1.0.3", {\ + "packageLocation": "./.yarn/cache/merge-descriptors-npm-1.0.3-10b44ad75c-866b7094af.zip/node_modules/merge-descriptors/",\ + "packageDependencies": [\ + ["merge-descriptors", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["merge-stream", [\ @@ -18968,10 +19356,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:ee3c2d786472a4f6c837d11e793d676f537cf06484c88ec66a674c8ae838d493a916850aec8cc6c2c6dc4036687ee69ff8c55fddeb8244db36410afc0376d7ba#npm:1.3.0", {\ - "packageLocation": "./.yarn/__virtual__/meros-virtual-1ea460874b/0/cache/meros-npm-1.3.0-8138dc54ff-2cf9a31228.zip/node_modules/meros/",\ + ["virtual:96452096eb61a8f681e4ad831e9e1c27ed6d8db3691b794748f05a9765280db4fd85203b61ed8a7a1b4b80849260aa90e96676a85d544e8bdcb0235b1833b405#npm:1.3.0", {\ + "packageLocation": "./.yarn/__virtual__/meros-virtual-dd48e93622/0/cache/meros-npm-1.3.0-8138dc54ff-2cf9a31228.zip/node_modules/meros/",\ "packageDependencies": [\ - ["meros", "virtual:ee3c2d786472a4f6c837d11e793d676f537cf06484c88ec66a674c8ae838d493a916850aec8cc6c2c6dc4036687ee69ff8c55fddeb8244db36410afc0376d7ba#npm:1.3.0"],\ + ["meros", "virtual:96452096eb61a8f681e4ad831e9e1c27ed6d8db3691b794748f05a9765280db4fd85203b61ed8a7a1b4b80849260aa90e96676a85d544e8bdcb0235b1833b405#npm:1.3.0"],\ ["@types/node", null]\ ],\ "packagePeers": [\ @@ -18995,7 +19383,7 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["micromark", "npm:3.2.0"],\ ["@types/debug", "npm:4.1.12"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["decode-named-character-reference", "npm:1.0.2"],\ ["micromark-core-commonmark", "npm:1.1.0"],\ ["micromark-factory-space", "npm:1.1.0"],\ @@ -19454,6 +19842,13 @@ const RAW_RUNTIME_STATE = ["mimic-response", "npm:3.1.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "./.yarn/cache/mimic-response-npm-4.0.0-c080547e26-761d788d26.zip/node_modules/mimic-response/",\ + "packageDependencies": [\ + ["mimic-response", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["min-indent", [\ @@ -19660,13 +20055,13 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["mock-jwks", [\ - ["npm:3.1.0", {\ - "packageLocation": "./.yarn/cache/mock-jwks-npm-3.1.0-131e3bbc29-e21560db1c.zip/node_modules/mock-jwks/",\ + ["patch:mock-jwks@npm%3A3.1.0#~/.yarn/patches/mock-jwks-npm-3.1.0-131e3bbc29.patch::version=3.1.0&hash=3d08e1", {\ + "packageLocation": "./.yarn/cache/mock-jwks-patch-9a7688505b-678cdce347.zip/node_modules/mock-jwks/",\ "packageDependencies": [\ - ["mock-jwks", "npm:3.1.0"],\ + ["mock-jwks", "patch:mock-jwks@npm%3A3.1.0#~/.yarn/patches/mock-jwks-npm-3.1.0-131e3bbc29.patch::version=3.1.0&hash=3d08e1"],\ ["base64-url", "npm:2.3.3"],\ ["jsonwebtoken", "npm:9.0.2"],\ - ["msw", "virtual:131e3bbc29d795d4bff911411a2ad06b6c6444e3c9fc80bdf90ae5eafec2f31e52e8af5bb0f131cd97b0c37a9f6a2c8892ca7a384d43c4d2061239cc01490a35#npm:1.3.3"],\ + ["msw", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:2.2.14"],\ ["node-forge", "npm:1.3.1"],\ ["node-rsa", "npm:1.1.1"]\ ],\ @@ -19745,44 +20140,35 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["msw", [\ - ["npm:1.3.3", {\ - "packageLocation": "./.yarn/unplugged/msw-virtual-7bdf7ce27c/node_modules/msw/",\ - "packageDependencies": [\ - ["msw", "npm:1.3.3"]\ - ],\ - "linkType": "SOFT"\ - }],\ ["npm:2.2.14", {\ - "packageLocation": "./.yarn/unplugged/msw-virtual-a1e287bf96/node_modules/msw/",\ + "packageLocation": "./.yarn/unplugged/msw-virtual-73f5be2678/node_modules/msw/",\ "packageDependencies": [\ ["msw", "npm:2.2.14"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:131e3bbc29d795d4bff911411a2ad06b6c6444e3c9fc80bdf90ae5eafec2f31e52e8af5bb0f131cd97b0c37a9f6a2c8892ca7a384d43c4d2061239cc01490a35#npm:1.3.3", {\ - "packageLocation": "./.yarn/unplugged/msw-virtual-7bdf7ce27c/node_modules/msw/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.2.14", {\ + "packageLocation": "./.yarn/unplugged/msw-virtual-73f5be2678/node_modules/msw/",\ "packageDependencies": [\ - ["msw", "virtual:131e3bbc29d795d4bff911411a2ad06b6c6444e3c9fc80bdf90ae5eafec2f31e52e8af5bb0f131cd97b0c37a9f6a2c8892ca7a384d43c4d2061239cc01490a35#npm:1.3.3"],\ - ["@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.3"],\ + ["msw", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.2.14"],\ + ["@bundled-es-modules/cookie", "npm:2.0.0"],\ + ["@bundled-es-modules/statuses", "npm:1.0.1"],\ + ["@inquirer/confirm", "npm:3.1.5"],\ + ["@mswjs/cookies", "npm:1.1.0"],\ + ["@mswjs/interceptors", "npm:0.26.15"],\ + ["@open-draft/until", "npm:2.1.0"],\ + ["@types/cookie", "npm:0.6.0"],\ + ["@types/statuses", "npm:2.0.5"],\ ["@types/typescript", null],\ ["chalk", "npm:4.1.2"],\ - ["chokidar", "npm:3.6.0"],\ - ["cookie", "npm:0.4.2"],\ ["graphql", "npm:16.8.1"],\ - ["headers-polyfill", "npm:3.2.5"],\ - ["inquirer", "npm:8.2.6"],\ + ["headers-polyfill", "npm:4.0.3"],\ ["is-node-process", "npm:1.2.0"],\ - ["js-levenshtein", "npm:1.1.6"],\ - ["node-fetch", "virtual:5e637fd56a9dc88fac941d74d36ae62bb174e2a095814480a8c5aa84455b10d8b3b88a3aeb7396ee63088f87b724c0c5a23604be8cd13b3bb36bcecbdbb2e3f9#npm:2.7.0"],\ ["outvariant", "npm:1.4.2"],\ ["path-to-regexp", "npm:6.2.2"],\ - ["strict-event-emitter", "npm:0.4.6"],\ - ["type-fest", "npm:2.19.0"],\ - ["typescript", null],\ + ["strict-event-emitter", "npm:0.5.1"],\ + ["type-fest", "npm:4.15.0"],\ + ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"],\ ["yargs", "npm:17.7.2"]\ ],\ "packagePeers": [\ @@ -19791,10 +20177,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.2.14", {\ - "packageLocation": "./.yarn/unplugged/msw-virtual-a1e287bf96/node_modules/msw/",\ + ["virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:2.2.14", {\ + "packageLocation": "./.yarn/unplugged/msw-virtual-f6503316cf/node_modules/msw/",\ "packageDependencies": [\ - ["msw", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:2.2.14"],\ + ["msw", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:2.2.14"],\ ["@bundled-es-modules/cookie", "npm:2.0.0"],\ ["@bundled-es-modules/statuses", "npm:1.0.1"],\ ["@inquirer/confirm", "npm:3.1.5"],\ @@ -19812,7 +20198,7 @@ const RAW_RUNTIME_STATE = ["path-to-regexp", "npm:6.2.2"],\ ["strict-event-emitter", "npm:0.5.1"],\ ["type-fest", "npm:4.15.0"],\ - ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"],\ + ["typescript", null],\ ["yargs", "npm:17.7.2"]\ ],\ "packagePeers": [\ @@ -20003,6 +20389,27 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["node-mocks-http", [\ + ["npm:1.14.1", {\ + "packageLocation": "./.yarn/cache/node-mocks-http-npm-1.14.1-92277e4de4-bd091ea1de.zip/node_modules/node-mocks-http/",\ + "packageDependencies": [\ + ["node-mocks-http", "npm:1.14.1"],\ + ["@types/express", "npm:4.17.21"],\ + ["@types/node", "npm:20.12.7"],\ + ["accepts", "npm:1.3.8"],\ + ["content-disposition", "npm:0.5.4"],\ + ["depd", "npm:1.1.2"],\ + ["fresh", "npm:0.5.2"],\ + ["merge-descriptors", "npm:1.0.3"],\ + ["methods", "npm:1.1.2"],\ + ["mime", "npm:1.6.0"],\ + ["parseurl", "npm:1.3.3"],\ + ["range-parser", "npm:1.2.1"],\ + ["type-is", "npm:1.6.18"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["node-releases", [\ ["npm:2.0.14", {\ "packageLocation": "./.yarn/cache/node-releases-npm-2.0.14-d39047cad8-199fc93773.zip/node_modules/node-releases/",\ @@ -20080,6 +20487,13 @@ const RAW_RUNTIME_STATE = ["normalize-url", "npm:6.1.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:8.0.1", {\ + "packageLocation": "./.yarn/cache/normalize-url-npm-8.0.1-c87adbf3f1-eb439231c4.zip/node_modules/normalize-url/",\ + "packageDependencies": [\ + ["normalize-url", "npm:8.0.1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["npm-install-checks", [\ @@ -20185,16 +20599,16 @@ const RAW_RUNTIME_STATE = ]],\ ["nx", [\ ["npm:18.3.3", {\ - "packageLocation": "./.yarn/unplugged/nx-virtual-bfeddb4fa1/node_modules/nx/",\ + "packageLocation": "./.yarn/unplugged/nx-virtual-1be01c3d10/node_modules/nx/",\ "packageDependencies": [\ ["nx", "npm:18.3.3"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3", {\ - "packageLocation": "./.yarn/unplugged/nx-virtual-bfeddb4fa1/node_modules/nx/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3", {\ + "packageLocation": "./.yarn/unplugged/nx-virtual-1be01c3d10/node_modules/nx/",\ "packageDependencies": [\ - ["nx", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.3.3"],\ + ["nx", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.3.3"],\ ["@nrwl/tao", "npm:18.3.3"],\ ["@nx/nx-darwin-arm64", "npm:18.3.3"],\ ["@nx/nx-darwin-x64", "npm:18.3.3"],\ @@ -20206,8 +20620,8 @@ const RAW_RUNTIME_STATE = ["@nx/nx-linux-x64-musl", "npm:18.3.3"],\ ["@nx/nx-win32-arm64-msvc", "npm:18.3.3"],\ ["@nx/nx-win32-x64-msvc", "npm:18.3.3"],\ - ["@swc-node/register", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.9.0"],\ - ["@swc/core", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.4.13"],\ + ["@swc-node/register", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.9.0"],\ + ["@swc/core", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.4.13"],\ ["@types/swc-node__register", null],\ ["@types/swc__core", null],\ ["@yarnpkg/lockfile", "npm:1.1.0"],\ @@ -20601,6 +21015,13 @@ const RAW_RUNTIME_STATE = ["p-cancelable", "npm:2.1.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.0.1", {\ + "packageLocation": "./.yarn/cache/p-cancelable-npm-4.0.1-759b614353-12636623f4.zip/node_modules/p-cancelable/",\ + "packageDependencies": [\ + ["p-cancelable", "npm:4.0.1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["p-finally", [\ @@ -21109,16 +21530,6 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["postcss", [\ - ["npm:8.4.31", {\ - "packageLocation": "./.yarn/cache/postcss-npm-8.4.31-385051a82b-748b82e6e5.zip/node_modules/postcss/",\ - "packageDependencies": [\ - ["postcss", "npm:8.4.31"],\ - ["nanoid", "npm:3.3.7"],\ - ["picocolors", "npm:1.0.0"],\ - ["source-map-js", "npm:1.2.0"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:8.4.38", {\ "packageLocation": "./.yarn/cache/postcss-npm-8.4.38-495621b279-955407b8f7.zip/node_modules/postcss/",\ "packageDependencies": [\ @@ -21138,10 +21549,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:5.1.0", {\ - "packageLocation": "./.yarn/__virtual__/postcss-discard-duplicates-virtual-9b19395023/0/cache/postcss-discard-duplicates-npm-5.1.0-c9479e6afc-3d3a49536c.zip/node_modules/postcss-discard-duplicates/",\ + ["virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:5.1.0", {\ + "packageLocation": "./.yarn/__virtual__/postcss-discard-duplicates-virtual-33cb388c79/0/cache/postcss-discard-duplicates-npm-5.1.0-c9479e6afc-3d3a49536c.zip/node_modules/postcss-discard-duplicates/",\ "packageDependencies": [\ - ["postcss-discard-duplicates", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:5.1.0"],\ + ["postcss-discard-duplicates", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:5.1.0"],\ ["@types/postcss", null],\ ["postcss", "npm:8.4.38"]\ ],\ @@ -21160,10 +21571,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:4.0.2", {\ - "packageLocation": "./.yarn/__virtual__/postcss-load-config-virtual-0361a1c5e1/0/cache/postcss-load-config-npm-4.0.2-319bcff9ca-3d7939acb3.zip/node_modules/postcss-load-config/",\ + ["virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:4.0.2", {\ + "packageLocation": "./.yarn/__virtual__/postcss-load-config-virtual-59f94a0888/0/cache/postcss-load-config-npm-4.0.2-319bcff9ca-3d7939acb3.zip/node_modules/postcss-load-config/",\ "packageDependencies": [\ - ["postcss-load-config", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:4.0.2"],\ + ["postcss-load-config", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:4.0.2"],\ ["@types/postcss", null],\ ["@types/ts-node", null],\ ["lilconfig", "npm:3.1.1"],\ @@ -21188,19 +21599,19 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:6.0.0", {\ - "packageLocation": "./.yarn/__virtual__/postcss-modules-virtual-1f5712cc67/0/cache/postcss-modules-npm-6.0.0-449d3dd9dd-24b5240597.zip/node_modules/postcss-modules/",\ + ["virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:6.0.0", {\ + "packageLocation": "./.yarn/__virtual__/postcss-modules-virtual-fbdcceb663/0/cache/postcss-modules-npm-6.0.0-449d3dd9dd-24b5240597.zip/node_modules/postcss-modules/",\ "packageDependencies": [\ - ["postcss-modules", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:6.0.0"],\ + ["postcss-modules", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:6.0.0"],\ ["@types/postcss", null],\ ["generic-names", "npm:4.0.0"],\ - ["icss-utils", "virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:5.1.0"],\ + ["icss-utils", "virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:5.1.0"],\ ["lodash.camelcase", "npm:4.3.0"],\ ["postcss", "npm:8.4.38"],\ - ["postcss-modules-extract-imports", "virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:3.1.0"],\ - ["postcss-modules-local-by-default", "virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:4.0.5"],\ - ["postcss-modules-scope", "virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:3.2.0"],\ - ["postcss-modules-values", "virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:4.0.0"],\ + ["postcss-modules-extract-imports", "virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:3.1.0"],\ + ["postcss-modules-local-by-default", "virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:4.0.5"],\ + ["postcss-modules-scope", "virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:3.2.0"],\ + ["postcss-modules-values", "virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:4.0.0"],\ ["string-hash", "npm:1.1.3"]\ ],\ "packagePeers": [\ @@ -21218,10 +21629,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:3.1.0", {\ - "packageLocation": "./.yarn/__virtual__/postcss-modules-extract-imports-virtual-f2f4cee153/0/cache/postcss-modules-extract-imports-npm-3.1.0-501aab09e8-402084bcab.zip/node_modules/postcss-modules-extract-imports/",\ + ["virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:3.1.0", {\ + "packageLocation": "./.yarn/__virtual__/postcss-modules-extract-imports-virtual-0fbf3d463c/0/cache/postcss-modules-extract-imports-npm-3.1.0-501aab09e8-402084bcab.zip/node_modules/postcss-modules-extract-imports/",\ "packageDependencies": [\ - ["postcss-modules-extract-imports", "virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:3.1.0"],\ + ["postcss-modules-extract-imports", "virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:3.1.0"],\ ["@types/postcss", null],\ ["postcss", "npm:8.4.38"]\ ],\ @@ -21240,12 +21651,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:4.0.5", {\ - "packageLocation": "./.yarn/__virtual__/postcss-modules-local-by-default-virtual-1a61a9b801/0/cache/postcss-modules-local-by-default-npm-4.0.5-1a623b43f9-f4ad35abeb.zip/node_modules/postcss-modules-local-by-default/",\ + ["virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:4.0.5", {\ + "packageLocation": "./.yarn/__virtual__/postcss-modules-local-by-default-virtual-1f3f1d686f/0/cache/postcss-modules-local-by-default-npm-4.0.5-1a623b43f9-f4ad35abeb.zip/node_modules/postcss-modules-local-by-default/",\ "packageDependencies": [\ - ["postcss-modules-local-by-default", "virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:4.0.5"],\ + ["postcss-modules-local-by-default", "virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:4.0.5"],\ ["@types/postcss", null],\ - ["icss-utils", "virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:5.1.0"],\ + ["icss-utils", "virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:5.1.0"],\ ["postcss", "npm:8.4.38"],\ ["postcss-selector-parser", "npm:6.0.16"],\ ["postcss-value-parser", "npm:4.2.0"]\ @@ -21265,10 +21676,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:3.2.0", {\ - "packageLocation": "./.yarn/__virtual__/postcss-modules-scope-virtual-c2d204dd84/0/cache/postcss-modules-scope-npm-3.2.0-a03c18262e-a2f5ffe372.zip/node_modules/postcss-modules-scope/",\ + ["virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:3.2.0", {\ + "packageLocation": "./.yarn/__virtual__/postcss-modules-scope-virtual-dc6d7e1b6b/0/cache/postcss-modules-scope-npm-3.2.0-a03c18262e-a2f5ffe372.zip/node_modules/postcss-modules-scope/",\ "packageDependencies": [\ - ["postcss-modules-scope", "virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:3.2.0"],\ + ["postcss-modules-scope", "virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:3.2.0"],\ ["@types/postcss", null],\ ["postcss", "npm:8.4.38"],\ ["postcss-selector-parser", "npm:6.0.16"]\ @@ -21288,12 +21699,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:4.0.0", {\ - "packageLocation": "./.yarn/__virtual__/postcss-modules-values-virtual-61297d0c5d/0/cache/postcss-modules-values-npm-4.0.0-63d7ec543a-dd18d7631b.zip/node_modules/postcss-modules-values/",\ + ["virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:4.0.0", {\ + "packageLocation": "./.yarn/__virtual__/postcss-modules-values-virtual-d97378c3ce/0/cache/postcss-modules-values-npm-4.0.0-63d7ec543a-dd18d7631b.zip/node_modules/postcss-modules-values/",\ "packageDependencies": [\ - ["postcss-modules-values", "virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:4.0.0"],\ + ["postcss-modules-values", "virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:4.0.0"],\ ["@types/postcss", null],\ - ["icss-utils", "virtual:1f5712cc676c6b982d6c22bd89c9b84a5173609692a805d0acd257a9ca3a1c54c6fc9cdc262953fb19037e298b8f29a17dd59c68e9e353a54f25f909c9c5fb90#npm:5.1.0"],\ + ["icss-utils", "virtual:fbdcceb6634c0c3b7edb47ac025fb997bfb6da651b71fe1b66158a2097e6f12dfcc3655ebd8800a5eeae2909b67fd90e93fe486e4937fd5b9bb3a371abe19728#npm:5.1.0"],\ ["postcss", "npm:8.4.38"]\ ],\ "packagePeers": [\ @@ -21693,10 +22104,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.2.0", {\ - "packageLocation": "./.yarn/__virtual__/react-dom-virtual-4c1796ecaf/0/cache/react-dom-npm-18.2.0-dd675bca1c-66dfc5f93e.zip/node_modules/react-dom/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.2.0", {\ + "packageLocation": "./.yarn/__virtual__/react-dom-virtual-f301a4ed73/0/cache/react-dom-npm-18.2.0-dd675bca1c-66dfc5f93e.zip/node_modules/react-dom/",\ "packageDependencies": [\ - ["react-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.2.0"],\ + ["react-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.2.0"],\ ["@types/react", "npm:18.2.75"],\ ["loose-envify", "npm:1.4.0"],\ ["react", "npm:18.2.0"],\ @@ -21756,10 +22167,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:3c4d9ac6f7c92217831c5fde512c9c0a25dd2072c7a52e582430eedbf9f37e67b70e1e3b7bade3ae104bcf0a8cf626eb3f45b43136e09b30be763ebb7b40e71c#npm:6.23.0", {\ - "packageLocation": "./.yarn/__virtual__/react-router-virtual-57c6ed02d8/0/cache/react-router-npm-6.23.0-7ca2e26eeb-567eb764d0.zip/node_modules/react-router/",\ + ["virtual:91c0f82627254fd53770ca271e71bf9959bfc7ec14f9da972069ab0b5f79f09fa64a06efce16d419f4bbfe8ce79e8e761f939a4625e3e61579d199b8cadb101b#npm:6.23.0", {\ + "packageLocation": "./.yarn/__virtual__/react-router-virtual-73912fd127/0/cache/react-router-npm-6.23.0-7ca2e26eeb-567eb764d0.zip/node_modules/react-router/",\ "packageDependencies": [\ - ["react-router", "virtual:3c4d9ac6f7c92217831c5fde512c9c0a25dd2072c7a52e582430eedbf9f37e67b70e1e3b7bade3ae104bcf0a8cf626eb3f45b43136e09b30be763ebb7b40e71c#npm:6.23.0"],\ + ["react-router", "virtual:91c0f82627254fd53770ca271e71bf9959bfc7ec14f9da972069ab0b5f79f09fa64a06efce16d419f4bbfe8ce79e8e761f939a4625e3e61579d199b8cadb101b#npm:6.23.0"],\ ["@remix-run/router", "npm:1.16.0"],\ ["@types/react", "npm:18.2.75"],\ ["react", "npm:18.2.0"]\ @@ -21770,10 +22181,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:ecb25696a65f4393b4182213bd6c85a536e2ef52ffbcabc532eab195a3e1fe439588f0b56f86f7ab554d4a727512d73a37f98dc49012b0387ccdbba15914ccdd#npm:6.22.3", {\ - "packageLocation": "./.yarn/__virtual__/react-router-virtual-d3233056f2/0/cache/react-router-npm-6.22.3-2497e3de73-a2c85c3d1f.zip/node_modules/react-router/",\ + ["virtual:cf89eaba490b620e8f7137d25192d462f9d06b3467e397f048e67b0049cb5fd348493ab35231e58d832df7a8f185832de3d6cc3cfab4071812ff423287d017f2#npm:6.22.3", {\ + "packageLocation": "./.yarn/__virtual__/react-router-virtual-ea60e2087f/0/cache/react-router-npm-6.22.3-2497e3de73-a2c85c3d1f.zip/node_modules/react-router/",\ "packageDependencies": [\ - ["react-router", "virtual:ecb25696a65f4393b4182213bd6c85a536e2ef52ffbcabc532eab195a3e1fe439588f0b56f86f7ab554d4a727512d73a37f98dc49012b0387ccdbba15914ccdd#npm:6.22.3"],\ + ["react-router", "virtual:cf89eaba490b620e8f7137d25192d462f9d06b3467e397f048e67b0049cb5fd348493ab35231e58d832df7a8f185832de3d6cc3cfab4071812ff423287d017f2#npm:6.22.3"],\ ["@remix-run/router", "npm:1.15.3"],\ ["@types/react", "npm:18.2.75"],\ ["react", "npm:18.2.0"]\ @@ -21800,16 +22211,16 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:3c4d9ac6f7c92217831c5fde512c9c0a25dd2072c7a52e582430eedbf9f37e67b70e1e3b7bade3ae104bcf0a8cf626eb3f45b43136e09b30be763ebb7b40e71c#npm:6.23.0", {\ - "packageLocation": "./.yarn/__virtual__/react-router-dom-virtual-450b990ea8/0/cache/react-router-dom-npm-6.23.0-7bd632424b-c249f3ca44.zip/node_modules/react-router-dom/",\ + ["virtual:7008267083e10f51122dcae4ea27a7a5b66dd235335f8f8da29e5c6ff7b2c6acea9e07afd044f3572cfad7fa6d9fa5c4130cef762d2d5a74232b2f5f830323c4#npm:6.23.0", {\ + "packageLocation": "./.yarn/__virtual__/react-router-dom-virtual-88eac18801/0/cache/react-router-dom-npm-6.23.0-7bd632424b-c249f3ca44.zip/node_modules/react-router-dom/",\ "packageDependencies": [\ - ["react-router-dom", "virtual:3c4d9ac6f7c92217831c5fde512c9c0a25dd2072c7a52e582430eedbf9f37e67b70e1e3b7bade3ae104bcf0a8cf626eb3f45b43136e09b30be763ebb7b40e71c#npm:6.23.0"],\ + ["react-router-dom", "virtual:7008267083e10f51122dcae4ea27a7a5b66dd235335f8f8da29e5c6ff7b2c6acea9e07afd044f3572cfad7fa6d9fa5c4130cef762d2d5a74232b2f5f830323c4#npm:6.23.0"],\ ["@remix-run/router", "npm:1.16.0"],\ ["@types/react", "npm:18.2.75"],\ - ["@types/react-dom", "npm:18.2.24"],\ + ["@types/react-dom", null],\ ["react", "npm:18.2.0"],\ - ["react-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.2.0"],\ - ["react-router", "virtual:3c4d9ac6f7c92217831c5fde512c9c0a25dd2072c7a52e582430eedbf9f37e67b70e1e3b7bade3ae104bcf0a8cf626eb3f45b43136e09b30be763ebb7b40e71c#npm:6.23.0"]\ + ["react-dom", null],\ + ["react-router", "virtual:91c0f82627254fd53770ca271e71bf9959bfc7ec14f9da972069ab0b5f79f09fa64a06efce16d419f4bbfe8ce79e8e761f939a4625e3e61579d199b8cadb101b#npm:6.23.0"]\ ],\ "packagePeers": [\ "@types/react-dom",\ @@ -21819,16 +22230,16 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.22.3", {\ - "packageLocation": "./.yarn/__virtual__/react-router-dom-virtual-ecb25696a6/0/cache/react-router-dom-npm-6.22.3-a471ae53e5-39b0472db5.zip/node_modules/react-router-dom/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.22.3", {\ + "packageLocation": "./.yarn/__virtual__/react-router-dom-virtual-cf89eaba49/0/cache/react-router-dom-npm-6.22.3-a471ae53e5-39b0472db5.zip/node_modules/react-router-dom/",\ "packageDependencies": [\ - ["react-router-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.22.3"],\ + ["react-router-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:6.22.3"],\ ["@remix-run/router", "npm:1.15.3"],\ ["@types/react", "npm:18.2.75"],\ ["@types/react-dom", "npm:18.2.24"],\ ["react", "npm:18.2.0"],\ - ["react-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.2.0"],\ - ["react-router", "virtual:ecb25696a65f4393b4182213bd6c85a536e2ef52ffbcabc532eab195a3e1fe439588f0b56f86f7ab554d4a727512d73a37f98dc49012b0387ccdbba15914ccdd#npm:6.22.3"]\ + ["react-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.2.0"],\ + ["react-router", "virtual:cf89eaba490b620e8f7137d25192d462f9d06b3467e397f048e67b0049cb5fd348493ab35231e58d832df7a8f185832de3d6cc3cfab4071812ff423287d017f2#npm:6.22.3"]\ ],\ "packagePeers": [\ "@types/react-dom",\ @@ -21838,16 +22249,16 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:8357736ef134b7863f91d42eddce98478ba946d8fa91d035087f581e8019ab4c100fd43e82438b7deae8c5c6a0342e97150e5a38e5a30c47f1258390b04d764a#npm:6.23.0", {\ - "packageLocation": "./.yarn/__virtual__/react-router-dom-virtual-37c4b1fb32/0/cache/react-router-dom-npm-6.23.0-7bd632424b-c249f3ca44.zip/node_modules/react-router-dom/",\ + ["virtual:91c0f82627254fd53770ca271e71bf9959bfc7ec14f9da972069ab0b5f79f09fa64a06efce16d419f4bbfe8ce79e8e761f939a4625e3e61579d199b8cadb101b#npm:6.23.0", {\ + "packageLocation": "./.yarn/__virtual__/react-router-dom-virtual-d983c7e6a0/0/cache/react-router-dom-npm-6.23.0-7bd632424b-c249f3ca44.zip/node_modules/react-router-dom/",\ "packageDependencies": [\ - ["react-router-dom", "virtual:8357736ef134b7863f91d42eddce98478ba946d8fa91d035087f581e8019ab4c100fd43e82438b7deae8c5c6a0342e97150e5a38e5a30c47f1258390b04d764a#npm:6.23.0"],\ + ["react-router-dom", "virtual:91c0f82627254fd53770ca271e71bf9959bfc7ec14f9da972069ab0b5f79f09fa64a06efce16d419f4bbfe8ce79e8e761f939a4625e3e61579d199b8cadb101b#npm:6.23.0"],\ ["@remix-run/router", "npm:1.16.0"],\ ["@types/react", "npm:18.2.75"],\ - ["@types/react-dom", null],\ + ["@types/react-dom", "npm:18.2.24"],\ ["react", "npm:18.2.0"],\ - ["react-dom", null],\ - ["react-router", "virtual:3c4d9ac6f7c92217831c5fde512c9c0a25dd2072c7a52e582430eedbf9f37e67b70e1e3b7bade3ae104bcf0a8cf626eb3f45b43136e09b30be763ebb7b40e71c#npm:6.23.0"]\ + ["react-dom", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:18.2.0"],\ + ["react-router", "virtual:91c0f82627254fd53770ca271e71bf9959bfc7ec14f9da972069ab0b5f79f09fa64a06efce16d419f4bbfe8ce79e8e761f939a4625e3e61579d199b8cadb101b#npm:6.23.0"]\ ],\ "packagePeers": [\ "@types/react-dom",\ @@ -22142,6 +22553,154 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["remix-auth", [\ + ["npm:3.6.0", {\ + "packageLocation": "./.yarn/cache/remix-auth-npm-3.6.0-c96fab9c4d-2b9d9f5ad0.zip/node_modules/remix-auth/",\ + "packageDependencies": [\ + ["remix-auth", "npm:3.6.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.6.0", {\ + "packageLocation": "./.yarn/__virtual__/remix-auth-virtual-8cbab22b62/0/cache/remix-auth-npm-3.6.0-c96fab9c4d-2b9d9f5ad0.zip/node_modules/remix-auth/",\ + "packageDependencies": [\ + ["remix-auth", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.6.0"],\ + ["@remix-run/react", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@types/remix-run__react", null],\ + ["@types/remix-run__server-runtime", null],\ + ["uuid", "npm:8.3.2"]\ + ],\ + "packagePeers": [\ + "@remix-run/react",\ + "@remix-run/server-runtime",\ + "@types/remix-run__react",\ + "@types/remix-run__server-runtime"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["remix-auth-auth0", [\ + ["npm:1.10.0", {\ + "packageLocation": "./.yarn/cache/remix-auth-auth0-npm-1.10.0-d618cd38cb-86d0170c80.zip/node_modules/remix-auth-auth0/",\ + "packageDependencies": [\ + ["remix-auth-auth0", "npm:1.10.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.10.0", {\ + "packageLocation": "./.yarn/__virtual__/remix-auth-auth0-virtual-93531bccef/0/cache/remix-auth-auth0-npm-1.10.0-d618cd38cb-86d0170c80.zip/node_modules/remix-auth-auth0/",\ + "packageDependencies": [\ + ["remix-auth-auth0", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.10.0"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@types/remix-auth", null],\ + ["@types/remix-run__server-runtime", null],\ + ["remix-auth", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.6.0"],\ + ["remix-auth-oauth2", "virtual:93531bccef056778852f9f3a99cf49ec7a29e991ed16b92513b7e24563923d246f81633ba306bcaa7db8624fc0287385dbaefd1ab89224e2a156837f08ae587c#npm:1.10.0"]\ + ],\ + "packagePeers": [\ + "@remix-run/server-runtime",\ + "@types/remix-auth",\ + "@types/remix-run__server-runtime",\ + "remix-auth"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["remix-auth-oauth2", [\ + ["npm:1.10.0", {\ + "packageLocation": "./.yarn/cache/remix-auth-oauth2-npm-1.10.0-ac7ff3e733-88d7f0da60.zip/node_modules/remix-auth-oauth2/",\ + "packageDependencies": [\ + ["remix-auth-oauth2", "npm:1.10.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["npm:1.11.2", {\ + "packageLocation": "./.yarn/cache/remix-auth-oauth2-npm-1.11.2-8879fabf71-382cfcc05d.zip/node_modules/remix-auth-oauth2/",\ + "packageDependencies": [\ + ["remix-auth-oauth2", "npm:1.11.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.11.2", {\ + "packageLocation": "./.yarn/__virtual__/remix-auth-oauth2-virtual-98f5fa817d/0/cache/remix-auth-oauth2-npm-1.11.2-8879fabf71-382cfcc05d.zip/node_modules/remix-auth-oauth2/",\ + "packageDependencies": [\ + ["remix-auth-oauth2", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.11.2"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@types/remix-auth", null],\ + ["@types/remix-run__server-runtime", null],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ + ["remix-auth", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.6.0"],\ + ["uuid", "npm:9.0.1"]\ + ],\ + "packagePeers": [\ + "@remix-run/server-runtime",\ + "@types/remix-auth",\ + "@types/remix-run__server-runtime",\ + "remix-auth"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:93531bccef056778852f9f3a99cf49ec7a29e991ed16b92513b7e24563923d246f81633ba306bcaa7db8624fc0287385dbaefd1ab89224e2a156837f08ae587c#npm:1.10.0", {\ + "packageLocation": "./.yarn/__virtual__/remix-auth-oauth2-virtual-0b3e103d10/0/cache/remix-auth-oauth2-npm-1.10.0-ac7ff3e733-88d7f0da60.zip/node_modules/remix-auth-oauth2/",\ + "packageDependencies": [\ + ["remix-auth-oauth2", "virtual:93531bccef056778852f9f3a99cf49ec7a29e991ed16b92513b7e24563923d246f81633ba306bcaa7db8624fc0287385dbaefd1ab89224e2a156837f08ae587c#npm:1.10.0"],\ + ["@remix-run/server-runtime", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@types/remix-auth", null],\ + ["@types/remix-run__server-runtime", null],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ + ["remix-auth", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:3.6.0"]\ + ],\ + "packagePeers": [\ + "@remix-run/server-runtime",\ + "@types/remix-auth",\ + "@types/remix-run__server-runtime",\ + "remix-auth"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["remix-flat-routes", [\ + ["npm:0.6.4", {\ + "packageLocation": "./.yarn/cache/remix-flat-routes-npm-0.6.4-7e2639fc72-84a2c19be9.zip/node_modules/remix-flat-routes/",\ + "packageDependencies": [\ + ["remix-flat-routes", "npm:0.6.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.6.4", {\ + "packageLocation": "./.yarn/__virtual__/remix-flat-routes-virtual-2c99b3e937/0/cache/remix-flat-routes-npm-0.6.4-7e2639fc72-84a2c19be9.zip/node_modules/remix-flat-routes/",\ + "packageDependencies": [\ + ["remix-flat-routes", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.6.4"],\ + ["@remix-run/dev", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:2.9.1"],\ + ["@remix-run/v1-route-convention", "virtual:2c99b3e937d767c5e1fbeafd378ac148b6ebe3bf0502dd7de6888f7ea817433b5b2a267b280f6e336d6d75e08968611523373519f4b69c56df21bdc403091af0#npm:0.1.4"],\ + ["@types/remix-run__dev", null],\ + ["fs-extra", "npm:11.2.0"],\ + ["minimatch", "npm:5.1.6"]\ + ],\ + "packagePeers": [\ + "@remix-run/dev",\ + "@types/remix-run__dev"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:0.6.4", {\ + "packageLocation": "./.yarn/__virtual__/remix-flat-routes-virtual-68459c0c85/0/cache/remix-flat-routes-npm-0.6.4-7e2639fc72-84a2c19be9.zip/node_modules/remix-flat-routes/",\ + "packageDependencies": [\ + ["remix-flat-routes", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:0.6.4"],\ + ["@remix-run/dev", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:2.9.1"],\ + ["@remix-run/v1-route-convention", "virtual:68459c0c85ca646a10107f3b38fc63a47b5e64300cc2d9f9db6462a01903420a230bcd21782478dd7bf9d012e6865f9e42c01dc797fc4756d6e7ee83ffb7802e#npm:0.1.4"],\ + ["@types/remix-run__dev", null],\ + ["fs-extra", "npm:11.2.0"],\ + ["minimatch", "npm:5.1.6"]\ + ],\ + "packagePeers": [\ + "@remix-run/dev",\ + "@types/remix-run__dev"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["remix-hono", [\ ["npm:0.0.16", {\ "packageLocation": "./.yarn/cache/remix-hono-npm-0.0.16-ae6771ade2-fc13cb4db1.zip/node_modules/remix-hono/",\ @@ -22150,12 +22709,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.0.16", {\ - "packageLocation": "./.yarn/__virtual__/remix-hono-virtual-5c7fe6728d/0/cache/remix-hono-npm-0.0.16-ae6771ade2-fc13cb4db1.zip/node_modules/remix-hono/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.0.16", {\ + "packageLocation": "./.yarn/__virtual__/remix-hono-virtual-baccbf205a/0/cache/remix-hono-npm-0.0.16-ae6771ade2-fc13cb4db1.zip/node_modules/remix-hono/",\ "packageDependencies": [\ - ["remix-hono", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:0.0.16"],\ + ["remix-hono", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:0.0.16"],\ ["@remix-run/cloudflare", null],\ - ["@remix-run/server-runtime", "virtual:5c7fe6728d933369472b327a3b9ce7cea28aa44fd0918a7fec242784a51f6fa9f70e7bddab7fe6e24b00373fc044c5d30e789bba3f42502e81da90a6edc7106d#npm:2.8.1"],\ + ["@remix-run/server-runtime", "virtual:baccbf205ae7c7d7a7349983a87a2fc19fa516d6cadc2c994e4cb1d9712a7048c1d4be207420919c91edb7b6acc693838c0db5d66d93515aa48fe110dd661de7#npm:2.8.1"],\ ["@types/i18next", null],\ ["@types/remix-i18next", null],\ ["@types/remix-run__cloudflare", null],\ @@ -22322,6 +22881,14 @@ const RAW_RUNTIME_STATE = ["lowercase-keys", "npm:2.0.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:3.0.0", {\ + "packageLocation": "./.yarn/cache/responselike-npm-3.0.0-9ab07af81f-8af27153f7.zip/node_modules/responselike/",\ + "packageDependencies": [\ + ["responselike", "npm:3.0.0"],\ + ["lowercase-keys", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["restore-cursor", [\ @@ -22706,15 +23273,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["shallowequal", [\ - ["npm:1.1.0", {\ - "packageLocation": "./.yarn/cache/shallowequal-npm-1.1.0-6688d419cb-b926efb51c.zip/node_modules/shallowequal/",\ - "packageDependencies": [\ - ["shallowequal", "npm:1.1.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["shebang-command", [\ ["npm:1.2.0", {\ "packageLocation": "./.yarn/cache/shebang-command-npm-1.2.0-8990ba5d1d-7b20dbf041.zip/node_modules/shebang-command/",\ @@ -22922,7 +23480,7 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["socks-proxy-agent", "npm:8.0.3"],\ ["agent-base", "npm:7.1.1"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["socks", "npm:2.8.3"]\ ],\ "linkType": "HARD"\ @@ -23225,21 +23783,6 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["strict-event-emitter", [\ - ["npm:0.2.8", {\ - "packageLocation": "./.yarn/cache/strict-event-emitter-npm-0.2.8-e8b9131760-6891e19fea.zip/node_modules/strict-event-emitter/",\ - "packageDependencies": [\ - ["strict-event-emitter", "npm:0.2.8"],\ - ["events", "npm:3.3.0"]\ - ],\ - "linkType": "HARD"\ - }],\ - ["npm:0.4.6", {\ - "packageLocation": "./.yarn/cache/strict-event-emitter-npm-0.4.6-b845d23c7d-d0231ef081.zip/node_modules/strict-event-emitter/",\ - "packageDependencies": [\ - ["strict-event-emitter", "npm:0.4.6"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:0.5.1", {\ "packageLocation": "./.yarn/cache/strict-event-emitter-npm-0.5.1-8414bf36b3-f5228a6e6b.zip/node_modules/strict-event-emitter/",\ "packageDependencies": [\ @@ -23535,50 +24078,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["styled-components", [\ - ["npm:6.1.8", {\ - "packageLocation": "./.yarn/cache/styled-components-npm-6.1.8-ae8d84c2da-fafe4b9198.zip/node_modules/styled-components/",\ - "packageDependencies": [\ - ["styled-components", "npm:6.1.8"]\ - ],\ - "linkType": "SOFT"\ - }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.1.8", {\ - "packageLocation": "./.yarn/__virtual__/styled-components-virtual-cc91be02b2/0/cache/styled-components-npm-6.1.8-ae8d84c2da-fafe4b9198.zip/node_modules/styled-components/",\ - "packageDependencies": [\ - ["styled-components", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:6.1.8"],\ - ["@emotion/is-prop-valid", "npm:1.2.1"],\ - ["@emotion/unitless", "npm:0.8.0"],\ - ["@types/react", "npm:18.2.75"],\ - ["@types/react-dom", "npm:18.2.24"],\ - ["@types/stylis", "npm:4.2.0"],\ - ["css-to-react-native", "npm:3.2.0"],\ - ["csstype", "npm:3.1.2"],\ - ["postcss", "npm:8.4.31"],\ - ["react", "npm:18.2.0"],\ - ["react-dom", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:18.2.0"],\ - ["shallowequal", "npm:1.1.0"],\ - ["stylis", "npm:4.3.1"],\ - ["tslib", "npm:2.5.0"]\ - ],\ - "packagePeers": [\ - "@types/react-dom",\ - "@types/react",\ - "react-dom",\ - "react"\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["stylis", [\ - ["npm:4.3.1", {\ - "packageLocation": "./.yarn/cache/stylis-npm-4.3.1-df21265105-33e8ebd2bf.zip/node_modules/stylis/",\ - "packageDependencies": [\ - ["stylis", "npm:4.3.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["superjson", [\ ["npm:2.2.1", {\ "packageLocation": "./.yarn/cache/superjson-npm-2.2.1-4e5de95cff-5d8202c955.zip/node_modules/superjson/",\ @@ -23755,7 +24254,7 @@ const RAW_RUNTIME_STATE = ["archiver", "npm:5.3.2"],\ ["async-lock", "npm:1.4.1"],\ ["byline", "npm:5.0.0"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["docker-compose", "npm:0.24.8"],\ ["dockerode", "npm:3.3.5"],\ ["get-port", "npm:5.1.1"],\ @@ -24019,10 +24518,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:1.3.0", {\ - "packageLocation": "./.yarn/__virtual__/ts-api-utils-virtual-06cae55696/0/cache/ts-api-utils-npm-1.3.0-33457908f8-f54a0ba9ed.zip/node_modules/ts-api-utils/",\ + ["virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:1.3.0", {\ + "packageLocation": "./.yarn/__virtual__/ts-api-utils-virtual-14f96ee1fb/0/cache/ts-api-utils-npm-1.3.0-33457908f8-f54a0ba9ed.zip/node_modules/ts-api-utils/",\ "packageDependencies": [\ - ["ts-api-utils", "virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:1.3.0"],\ + ["ts-api-utils", "virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:1.3.0"],\ ["@types/typescript", null],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ ],\ @@ -24032,10 +24531,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:937d7643790809a6c7ef98b733aa0a65c72cbd60413cd49029256067931b7df037eb0b345473fadfd13fb8708674eeb113b7af3ebf36ff1714280a54ec3ee46a#npm:1.3.0", {\ - "packageLocation": "./.yarn/__virtual__/ts-api-utils-virtual-f456afabb5/0/cache/ts-api-utils-npm-1.3.0-33457908f8-f54a0ba9ed.zip/node_modules/ts-api-utils/",\ + ["virtual:fc27d6e82504c21bd17d8dff951aef3851efc402fd6f002f9ce7ae906c442d38d0a0bef17fa608fd1b4d50b0e73556fc66526efc0b11e8143f020179a5d7670b#npm:1.3.0", {\ + "packageLocation": "./.yarn/__virtual__/ts-api-utils-virtual-841431ecdc/0/cache/ts-api-utils-npm-1.3.0-33457908f8-f54a0ba9ed.zip/node_modules/ts-api-utils/",\ "packageDependencies": [\ - ["ts-api-utils", "virtual:937d7643790809a6c7ef98b733aa0a65c72cbd60413cd49029256067931b7df037eb0b345473fadfd13fb8708674eeb113b7af3ebf36ff1714280a54ec3ee46a#npm:1.3.0"],\ + ["ts-api-utils", "virtual:fc27d6e82504c21bd17d8dff951aef3851efc402fd6f002f9ce7ae906c442d38d0a0bef17fa608fd1b4d50b0e73556fc66526efc0b11e8143f020179a5d7670b#npm:1.3.0"],\ ["@types/typescript", null],\ ["typescript", null]\ ],\ @@ -24113,13 +24612,6 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["tslib", [\ - ["npm:2.5.0", {\ - "packageLocation": "./.yarn/cache/tslib-npm-2.5.0-bb364efebd-e32fc99cc7.zip/node_modules/tslib/",\ - "packageDependencies": [\ - ["tslib", "npm:2.5.0"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:2.6.2", {\ "packageLocation": "./.yarn/cache/tslib-npm-2.6.2-4fc8c068d9-e03a8a4271.zip/node_modules/tslib/",\ "packageDependencies": [\ @@ -24215,17 +24707,17 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["npm:2.19.0", {\ - "packageLocation": "./.yarn/cache/type-fest-npm-2.19.0-918b953248-a5a7ecf2e6.zip/node_modules/type-fest/",\ + ["npm:4.15.0", {\ + "packageLocation": "./.yarn/cache/type-fest-npm-4.15.0-abb5a84ffb-677a7da18d.zip/node_modules/type-fest/",\ "packageDependencies": [\ - ["type-fest", "npm:2.19.0"]\ + ["type-fest", "npm:4.15.0"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:4.15.0", {\ - "packageLocation": "./.yarn/cache/type-fest-npm-4.15.0-abb5a84ffb-677a7da18d.zip/node_modules/type-fest/",\ + ["npm:4.17.0", {\ + "packageLocation": "./.yarn/cache/type-fest-npm-4.17.0-e154bcb7a2-7c474dca23.zip/node_modules/type-fest/",\ "packageDependencies": [\ - ["type-fest", "npm:4.15.0"]\ + ["type-fest", "npm:4.17.0"]\ ],\ "linkType": "HARD"\ }]\ @@ -24321,15 +24813,15 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0", {\ - "packageLocation": "./.yarn/__virtual__/typescript-eslint-virtual-c7261ae074/0/cache/typescript-eslint-npm-7.6.0-dbb3b8f374-1950ae5906.zip/node_modules/typescript-eslint/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0", {\ + "packageLocation": "./.yarn/__virtual__/typescript-eslint-virtual-9053a7548c/0/cache/typescript-eslint-npm-7.6.0-dbb3b8f374-1950ae5906.zip/node_modules/typescript-eslint/",\ "packageDependencies": [\ - ["typescript-eslint", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0"],\ + ["typescript-eslint", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0"],\ ["@types/eslint", null],\ ["@types/typescript", null],\ - ["@typescript-eslint/eslint-plugin", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0"],\ - ["@typescript-eslint/parser", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:7.6.0"],\ - ["@typescript-eslint/utils", "virtual:28e51baebb53225c5255229d4f92ebf4d4f79a69653ac13cdd1625f5127c18ba297508fd79daf80ea63b60eebee2c016c979b2f6475015cce6587544d65679f3#npm:7.6.0"],\ + ["@typescript-eslint/eslint-plugin", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0"],\ + ["@typescript-eslint/parser", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:7.6.0"],\ + ["@typescript-eslint/utils", "virtual:6d075e81550ae25fe3ae91ff5191ba13a0648175f29e59eaa38b59dab7df1f5b22a4e07481e8b4d579d6147d1f9632fcafb07e2391006d378e049b667a3c47eb#npm:7.6.0"],\ ["eslint", "npm:9.0.0"],\ ["typescript", "patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"]\ ],\ @@ -24724,6 +25216,13 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["uuid", [\ + ["npm:8.3.2", {\ + "packageLocation": "./.yarn/cache/uuid-npm-8.3.2-eca0baba53-bcbb807a91.zip/node_modules/uuid/",\ + "packageDependencies": [\ + ["uuid", "npm:8.3.2"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:9.0.1", {\ "packageLocation": "./.yarn/cache/uuid-npm-9.0.1-39a8442bc6-1607dd32ac.zip/node_modules/uuid/",\ "packageDependencies": [\ @@ -24883,10 +25382,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.2.10", {\ - "packageLocation": "./.yarn/__virtual__/vite-virtual-f8a89db758/0/cache/vite-npm-5.2.10-08834d3974-d50630ac8d.zip/node_modules/vite/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.2.10", {\ + "packageLocation": "./.yarn/__virtual__/vite-virtual-c98bf3dfe5/0/cache/vite-npm-5.2.10-08834d3974-d50630ac8d.zip/node_modules/vite/",\ "packageDependencies": [\ - ["vite", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:5.2.10"],\ + ["vite", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:5.2.10"],\ ["@types/less", null],\ ["@types/lightningcss", null],\ ["@types/node", "npm:20.12.7"],\ @@ -24922,10 +25421,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:c8accb5ca782364c24154d1f350b9826a040fc4daaa014d0d835f03af8814a71f5ab57c86b0b470a30a828d18db6c9983db47f634d1ceeebd925893f97a96573#npm:5.2.8", {\ - "packageLocation": "./.yarn/__virtual__/vite-virtual-0abe43c7a4/0/cache/vite-npm-5.2.8-618ece674d-b5717bb00c.zip/node_modules/vite/",\ + ["virtual:9a49e5a0a5ee6d67f58ee139fc83e20421a46b10ed982ddaa4e061d27d0fe041c42aace8224d94696c4e1da1a57179ff8f7853d0d4d98123af77ec8e8ca8efc6#npm:5.2.8", {\ + "packageLocation": "./.yarn/__virtual__/vite-virtual-4ef8536f35/0/cache/vite-npm-5.2.8-618ece674d-b5717bb00c.zip/node_modules/vite/",\ "packageDependencies": [\ - ["vite", "virtual:c8accb5ca782364c24154d1f350b9826a040fc4daaa014d0d835f03af8814a71f5ab57c86b0b470a30a828d18db6c9983db47f634d1ceeebd925893f97a96573#npm:5.2.8"],\ + ["vite", "virtual:9a49e5a0a5ee6d67f58ee139fc83e20421a46b10ed982ddaa4e061d27d0fe041c42aace8224d94696c4e1da1a57179ff8f7853d0d4d98123af77ec8e8ca8efc6#npm:5.2.8"],\ ["@types/less", null],\ ["@types/lightningcss", null],\ ["@types/node", "npm:20.12.7"],\ @@ -25007,19 +25506,19 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["vite-node", "npm:1.5.0"],\ ["cac", "npm:6.7.14"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["pathe", "npm:1.1.2"],\ ["picocolors", "npm:1.0.0"],\ ["vite", "virtual:231bd830519c975d6e142167646edd028538c46a384a9b8698b9b3218f572b63d5b2815d19e56e1bc499a4cdeadc44536b8e95322dcd5751eea4f6815a445aa4#npm:5.2.8"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:1.5.1", {\ - "packageLocation": "./.yarn/cache/vite-node-npm-1.5.1-fd703ad005-d3591d9c30.zip/node_modules/vite-node/",\ + ["npm:1.5.2", {\ + "packageLocation": "./.yarn/cache/vite-node-npm-1.5.2-3f4f4e44d5-a5e90ae2b3.zip/node_modules/vite-node/",\ "packageDependencies": [\ - ["vite-node", "npm:1.5.1"],\ + ["vite-node", "npm:1.5.2"],\ ["cac", "npm:6.7.14"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["pathe", "npm:1.1.2"],\ ["picocolors", "npm:1.0.0"],\ ["vite", "virtual:231bd830519c975d6e142167646edd028538c46a384a9b8698b9b3218f572b63d5b2815d19e56e1bc499a4cdeadc44536b8e95322dcd5751eea4f6815a445aa4#npm:5.2.8"]\ @@ -25028,17 +25527,17 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["vitest", [\ - ["npm:1.5.1", {\ - "packageLocation": "./.yarn/cache/vitest-npm-1.5.1-da8c0fa81f-85f6b9250c.zip/node_modules/vitest/",\ + ["npm:1.5.2", {\ + "packageLocation": "./.yarn/cache/vitest-npm-1.5.2-db4ab193ee-1ad3a33d3a.zip/node_modules/vitest/",\ "packageDependencies": [\ - ["vitest", "npm:1.5.1"]\ + ["vitest", "npm:1.5.2"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1", {\ - "packageLocation": "./.yarn/__virtual__/vitest-virtual-c8accb5ca7/0/cache/vitest-npm-1.5.1-da8c0fa81f-85f6b9250c.zip/node_modules/vitest/",\ + ["virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2", {\ + "packageLocation": "./.yarn/__virtual__/vitest-virtual-9a49e5a0a5/0/cache/vitest-npm-1.5.2-db4ab193ee-1ad3a33d3a.zip/node_modules/vitest/",\ "packageDependencies": [\ - ["vitest", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"],\ + ["vitest", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"],\ ["@edge-runtime/vm", null],\ ["@types/edge-runtime__vm", null],\ ["@types/happy-dom", null],\ @@ -25047,15 +25546,15 @@ const RAW_RUNTIME_STATE = ["@types/vitest__browser", null],\ ["@types/vitest__ui", null],\ ["@vitest/browser", null],\ - ["@vitest/expect", "npm:1.5.1"],\ - ["@vitest/runner", "npm:1.5.1"],\ - ["@vitest/snapshot", "npm:1.5.1"],\ - ["@vitest/spy", "npm:1.5.1"],\ - ["@vitest/ui", "virtual:4693e2adf740857f263b3cecb982e42dfab2bbaea841273a76fd4bb0d3ba85e3b6808c5d98439071448ab2131d3c0226971ce4e558290b9a29867f6017ede1e3#npm:1.5.1"],\ - ["@vitest/utils", "npm:1.5.1"],\ + ["@vitest/expect", "npm:1.5.2"],\ + ["@vitest/runner", "npm:1.5.2"],\ + ["@vitest/snapshot", "npm:1.5.2"],\ + ["@vitest/spy", "npm:1.5.2"],\ + ["@vitest/ui", "virtual:78383247a788980a563098e2073e990e734a77581dbca923bae873812dc4cb4a3a6b3aada21cd1f75170c559d98bc43a8afb0e9951516e0e68c9288afbed8584#npm:1.5.2"],\ + ["@vitest/utils", "npm:1.5.2"],\ ["acorn-walk", "npm:8.3.2"],\ ["chai", "npm:4.4.1"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["execa", "npm:8.0.1"],\ ["happy-dom", "npm:14.7.1"],\ ["jsdom", null],\ @@ -25067,8 +25566,8 @@ const RAW_RUNTIME_STATE = ["strip-literal", "npm:2.1.0"],\ ["tinybench", "npm:2.6.0"],\ ["tinypool", "npm:0.8.3"],\ - ["vite", "virtual:c8accb5ca782364c24154d1f350b9826a040fc4daaa014d0d835f03af8814a71f5ab57c86b0b470a30a828d18db6c9983db47f634d1ceeebd925893f97a96573#npm:5.2.8"],\ - ["vite-node", "npm:1.5.1"],\ + ["vite", "virtual:9a49e5a0a5ee6d67f58ee139fc83e20421a46b10ed982ddaa4e061d27d0fe041c42aace8224d94696c4e1da1a57179ff8f7853d0d4d98123af77ec8e8ca8efc6#npm:5.2.8"],\ + ["vite-node", "npm:1.5.2"],\ ["why-is-node-running", "npm:2.2.2"]\ ],\ "packagePeers": [\ @@ -25086,10 +25585,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:1.5.1", {\ - "packageLocation": "./.yarn/__virtual__/vitest-virtual-0046d0c926/0/cache/vitest-npm-1.5.1-da8c0fa81f-85f6b9250c.zip/node_modules/vitest/",\ + ["virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:1.5.2", {\ + "packageLocation": "./.yarn/__virtual__/vitest-virtual-8ed5ee8d0d/0/cache/vitest-npm-1.5.2-db4ab193ee-1ad3a33d3a.zip/node_modules/vitest/",\ "packageDependencies": [\ - ["vitest", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:1.5.1"],\ + ["vitest", "virtual:b4dbac12e8c0eac19977455c27007fa0bab83d73d73781bdd06afb97db468ee42cd13130e5a6cca03948b2e68a51074131e9ffe5919a808a1f95312007ab4bc4#npm:1.5.2"],\ ["@edge-runtime/vm", null],\ ["@types/edge-runtime__vm", null],\ ["@types/happy-dom", null],\ @@ -25098,15 +25597,15 @@ const RAW_RUNTIME_STATE = ["@types/vitest__browser", null],\ ["@types/vitest__ui", null],\ ["@vitest/browser", null],\ - ["@vitest/expect", "npm:1.5.1"],\ - ["@vitest/runner", "npm:1.5.1"],\ - ["@vitest/snapshot", "npm:1.5.1"],\ - ["@vitest/spy", "npm:1.5.1"],\ + ["@vitest/expect", "npm:1.5.2"],\ + ["@vitest/runner", "npm:1.5.2"],\ + ["@vitest/snapshot", "npm:1.5.2"],\ + ["@vitest/spy", "npm:1.5.2"],\ ["@vitest/ui", null],\ - ["@vitest/utils", "npm:1.5.1"],\ + ["@vitest/utils", "npm:1.5.2"],\ ["acorn-walk", "npm:8.3.2"],\ ["chai", "npm:4.4.1"],\ - ["debug", "virtual:c9e1a4b59e37cb479517edede3bf2093b28c0ca1a9d0e517f3c345075bd1e468980b94b4957e389116607ee7155441dfd7d09e19a4229d5d09bcf06244401590#npm:4.3.4"],\ + ["debug", "virtual:e80ee691e1471061b2fa4aa86f86ff0dcaf67db5ccb8fe206d99a78dff177cc8cd6a308ebabe15e3e31fe6a0e1673dcbbf417b63d8c5b5b6c5c22abce38ec44a#npm:4.3.4"],\ ["execa", "npm:8.0.1"],\ ["happy-dom", null],\ ["jsdom", null],\ @@ -25118,8 +25617,8 @@ const RAW_RUNTIME_STATE = ["strip-literal", "npm:2.1.0"],\ ["tinybench", "npm:2.6.0"],\ ["tinypool", "npm:0.8.3"],\ - ["vite", "virtual:c8accb5ca782364c24154d1f350b9826a040fc4daaa014d0d835f03af8814a71f5ab57c86b0b470a30a828d18db6c9983db47f634d1ceeebd925893f97a96573#npm:5.2.8"],\ - ["vite-node", "npm:1.5.1"],\ + ["vite", "virtual:9a49e5a0a5ee6d67f58ee139fc83e20421a46b10ed982ddaa4e061d27d0fe041c42aace8224d94696c4e1da1a57179ff8f7853d0d4d98123af77ec8e8ca8efc6#npm:5.2.8"],\ + ["vite-node", "npm:1.5.2"],\ ["why-is-node-running", "npm:2.2.2"]\ ],\ "packagePeers": [\ @@ -25472,10 +25971,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:8.16.0", {\ - "packageLocation": "./.yarn/__virtual__/ws-virtual-b62d95afb5/0/cache/ws-npm-8.16.0-46943f6199-a7783bb421.zip/node_modules/ws/",\ + ["virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:8.16.0", {\ + "packageLocation": "./.yarn/__virtual__/ws-virtual-fc3055fe8a/0/cache/ws-npm-8.16.0-46943f6199-a7783bb421.zip/node_modules/ws/",\ "packageDependencies": [\ - ["ws", "virtual:21bb54dcba1e2a0423749ffe03292f40cd238f0408b6b682ad7d44cff8f67d4a5a6f7143a86b7560e5c0249e2086d7f1b3d2d77ee879f8d165a2a5811c57738f#npm:8.16.0"],\ + ["ws", "virtual:724e3947f2dcbf8f33cfe934c110e16bf992c204061c1cfd599df60df08e82a99c69540ead4c4eb2db6add05ae3a05363ecaaf4900d02c64899d318fafb96ec6#npm:8.16.0"],\ ["@types/bufferutil", null],\ ["@types/utf-8-validate", null],\ ["bufferutil", null],\ @@ -25489,10 +25988,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:7.5.9", {\ - "packageLocation": "./.yarn/__virtual__/ws-virtual-92a8bb36c7/0/cache/ws-npm-7.5.9-26f12a5ed6-aec4ef4eb6.zip/node_modules/ws/",\ + ["virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:7.5.9", {\ + "packageLocation": "./.yarn/__virtual__/ws-virtual-a87709da46/0/cache/ws-npm-7.5.9-26f12a5ed6-aec4ef4eb6.zip/node_modules/ws/",\ "packageDependencies": [\ - ["ws", "virtual:671118d6e1f8aff5a14828b7fd7c6c6de0ff60c5c6a46b04abba12efbb497e3fbef80c3b676276352b3ed3ddb86862b639b5bff86bfcec745927cc8a9ee657f0#npm:7.5.9"],\ + ["ws", "virtual:9f82bce8f5fb8a8f463d9f916f16256bf4cf1cec17e8aca6d406c5e3911dce57434143429b9e7a47b324e73cd976c25277eea251f0d72d5bbcba05d4097c5ea6#npm:7.5.9"],\ ["@types/bufferutil", null],\ ["@types/utf-8-validate", null],\ ["bufferutil", null],\ diff --git a/.yarn/cache/@babel-core-npm-7.24.5-b52405e538-e26ba810a7.zip b/.yarn/cache/@babel-core-npm-7.24.5-b52405e538-e26ba810a7.zip new file mode 100644 index 0000000..ad3b0fd Binary files /dev/null and b/.yarn/cache/@babel-core-npm-7.24.5-b52405e538-e26ba810a7.zip differ diff --git a/.yarn/cache/@babel-generator-npm-7.24.5-37b51e511b-0d64f88015.zip b/.yarn/cache/@babel-generator-npm-7.24.5-37b51e511b-0d64f88015.zip new file mode 100644 index 0000000..5456532 Binary files /dev/null and b/.yarn/cache/@babel-generator-npm-7.24.5-37b51e511b-0d64f88015.zip differ diff --git a/.yarn/cache/@babel-helper-module-transforms-npm-7.24.5-c2288b45c7-6e77d72f62.zip b/.yarn/cache/@babel-helper-module-transforms-npm-7.24.5-c2288b45c7-6e77d72f62.zip new file mode 100644 index 0000000..7538beb Binary files /dev/null and b/.yarn/cache/@babel-helper-module-transforms-npm-7.24.5-c2288b45c7-6e77d72f62.zip differ diff --git a/.yarn/cache/@babel-helper-simple-access-npm-7.24.5-9de60df3e9-d96a0ab790.zip b/.yarn/cache/@babel-helper-simple-access-npm-7.24.5-9de60df3e9-d96a0ab790.zip new file mode 100644 index 0000000..389e833 Binary files /dev/null and b/.yarn/cache/@babel-helper-simple-access-npm-7.24.5-9de60df3e9-d96a0ab790.zip differ diff --git a/.yarn/cache/@babel-helper-split-export-declaration-npm-7.24.5-3459ebfe18-d7a812d67d.zip b/.yarn/cache/@babel-helper-split-export-declaration-npm-7.24.5-3459ebfe18-d7a812d67d.zip new file mode 100644 index 0000000..7bb7c20 Binary files /dev/null and b/.yarn/cache/@babel-helper-split-export-declaration-npm-7.24.5-3459ebfe18-d7a812d67d.zip differ diff --git a/.yarn/cache/@babel-helper-validator-identifier-npm-7.24.5-d1938535fe-05f957229d.zip b/.yarn/cache/@babel-helper-validator-identifier-npm-7.24.5-d1938535fe-05f957229d.zip new file mode 100644 index 0000000..0cbce28 Binary files /dev/null and b/.yarn/cache/@babel-helper-validator-identifier-npm-7.24.5-d1938535fe-05f957229d.zip differ diff --git a/.yarn/cache/@babel-helpers-npm-7.24.5-f70b14a27f-0630b0223c.zip b/.yarn/cache/@babel-helpers-npm-7.24.5-f70b14a27f-0630b0223c.zip new file mode 100644 index 0000000..b5fa04c Binary files /dev/null and b/.yarn/cache/@babel-helpers-npm-7.24.5-f70b14a27f-0630b0223c.zip differ diff --git a/.yarn/cache/@babel-parser-npm-7.24.5-a19c3b8c3b-8333a6ad53.zip b/.yarn/cache/@babel-parser-npm-7.24.5-a19c3b8c3b-8333a6ad53.zip new file mode 100644 index 0000000..e08f086 Binary files /dev/null and b/.yarn/cache/@babel-parser-npm-7.24.5-a19c3b8c3b-8333a6ad53.zip differ diff --git a/.yarn/cache/@babel-traverse-npm-7.24.5-d9a5f00bfc-3f22534bc2.zip b/.yarn/cache/@babel-traverse-npm-7.24.5-d9a5f00bfc-3f22534bc2.zip new file mode 100644 index 0000000..b91a0f6 Binary files /dev/null and b/.yarn/cache/@babel-traverse-npm-7.24.5-d9a5f00bfc-3f22534bc2.zip differ diff --git a/.yarn/cache/@babel-types-npm-7.24.5-2710b35119-e1284eb046.zip b/.yarn/cache/@babel-types-npm-7.24.5-2710b35119-e1284eb046.zip new file mode 100644 index 0000000..5edf7d2 Binary files /dev/null and b/.yarn/cache/@babel-types-npm-7.24.5-2710b35119-e1284eb046.zip differ diff --git a/.yarn/cache/@emotion-is-prop-valid-npm-1.2.1-794afe6a94-7c2aabdf0c.zip b/.yarn/cache/@emotion-is-prop-valid-npm-1.2.1-794afe6a94-7c2aabdf0c.zip deleted file mode 100644 index dc84fa8..0000000 Binary files a/.yarn/cache/@emotion-is-prop-valid-npm-1.2.1-794afe6a94-7c2aabdf0c.zip and /dev/null differ diff --git a/.yarn/cache/@emotion-memoize-npm-0.8.1-9b1e35ff15-dffed372fc.zip b/.yarn/cache/@emotion-memoize-npm-0.8.1-9b1e35ff15-dffed372fc.zip deleted file mode 100644 index 320c9e5..0000000 Binary files a/.yarn/cache/@emotion-memoize-npm-0.8.1-9b1e35ff15-dffed372fc.zip and /dev/null differ diff --git a/.yarn/cache/@emotion-unitless-npm-0.8.0-aa125284fa-1f2cfb7c0c.zip b/.yarn/cache/@emotion-unitless-npm-0.8.0-aa125284fa-1f2cfb7c0c.zip deleted file mode 100644 index ae5ecea..0000000 Binary files a/.yarn/cache/@emotion-unitless-npm-0.8.0-aa125284fa-1f2cfb7c0c.zip and /dev/null differ diff --git a/.yarn/cache/@mswjs-cookies-npm-0.2.2-fdd3f4ab67-f950062538.zip b/.yarn/cache/@mswjs-cookies-npm-0.2.2-fdd3f4ab67-f950062538.zip deleted file mode 100644 index 35a0c47..0000000 Binary files a/.yarn/cache/@mswjs-cookies-npm-0.2.2-fdd3f4ab67-f950062538.zip and /dev/null differ diff --git a/.yarn/cache/@mswjs-data-npm-0.16.1-e80ee691e1-9518f5e918.zip b/.yarn/cache/@mswjs-data-npm-0.16.1-e80ee691e1-9518f5e918.zip new file mode 100644 index 0000000..df190bd Binary files /dev/null and b/.yarn/cache/@mswjs-data-npm-0.16.1-e80ee691e1-9518f5e918.zip differ diff --git a/.yarn/cache/@mswjs-interceptors-npm-0.17.10-c1199a9424-0343a93711.zip b/.yarn/cache/@mswjs-interceptors-npm-0.17.10-c1199a9424-0343a93711.zip deleted file mode 100644 index 13e3acd..0000000 Binary files a/.yarn/cache/@mswjs-interceptors-npm-0.17.10-c1199a9424-0343a93711.zip and /dev/null differ diff --git a/.yarn/cache/@noble-hashes-npm-1.4.0-9389282fd6-8c3f005ee7.zip b/.yarn/cache/@noble-hashes-npm-1.4.0-9389282fd6-8c3f005ee7.zip new file mode 100644 index 0000000..6bccd24 Binary files /dev/null and b/.yarn/cache/@noble-hashes-npm-1.4.0-9389282fd6-8c3f005ee7.zip differ diff --git a/.yarn/cache/@open-draft-until-npm-1.0.3-c0d6a46a29-f88bcd774b.zip b/.yarn/cache/@open-draft-until-npm-1.0.3-c0d6a46a29-f88bcd774b.zip deleted file mode 100644 index 3c62dd6..0000000 Binary files a/.yarn/cache/@open-draft-until-npm-1.0.3-c0d6a46a29-f88bcd774b.zip and /dev/null differ diff --git a/.yarn/cache/@paralleldrive-cuid2-npm-2.2.2-e6061749b2-af5826df93.zip b/.yarn/cache/@paralleldrive-cuid2-npm-2.2.2-e6061749b2-af5826df93.zip new file mode 100644 index 0000000..e7963f4 Binary files /dev/null and b/.yarn/cache/@paralleldrive-cuid2-npm-2.2.2-e6061749b2-af5826df93.zip differ diff --git a/.yarn/cache/@remix-run-v1-route-convention-npm-0.1.4-d336e45418-f9984d9212.zip b/.yarn/cache/@remix-run-v1-route-convention-npm-0.1.4-d336e45418-f9984d9212.zip new file mode 100644 index 0000000..c366b83 Binary files /dev/null and b/.yarn/cache/@remix-run-v1-route-convention-npm-0.1.4-d336e45418-f9984d9212.zip differ diff --git a/.yarn/cache/@sindresorhus-is-npm-6.3.0-0c6ba20d57-40d201fc1a.zip b/.yarn/cache/@sindresorhus-is-npm-6.3.0-0c6ba20d57-40d201fc1a.zip new file mode 100644 index 0000000..0a41cce Binary files /dev/null and b/.yarn/cache/@sindresorhus-is-npm-6.3.0-0c6ba20d57-40d201fc1a.zip differ diff --git a/.yarn/cache/@szmarczak-http-timer-npm-5.0.1-52261e5986-4629d2fbb2.zip b/.yarn/cache/@szmarczak-http-timer-npm-5.0.1-52261e5986-4629d2fbb2.zip new file mode 100644 index 0000000..fc32050 Binary files /dev/null and b/.yarn/cache/@szmarczak-http-timer-npm-5.0.1-52261e5986-4629d2fbb2.zip differ diff --git a/.yarn/cache/@testing-library-dom-npm-10.0.0-708b4ef7e6-2d12d2a601.zip b/.yarn/cache/@testing-library-dom-npm-10.0.0-708b4ef7e6-2d12d2a601.zip new file mode 100644 index 0000000..cbbfe07 Binary files /dev/null and b/.yarn/cache/@testing-library-dom-npm-10.0.0-708b4ef7e6-2d12d2a601.zip differ diff --git a/.yarn/cache/@testing-library-user-event-npm-14.5.2-ec9587901c-68a0c2aa28.zip b/.yarn/cache/@testing-library-user-event-npm-14.5.2-ec9587901c-68a0c2aa28.zip new file mode 100644 index 0000000..dc34e29 Binary files /dev/null and b/.yarn/cache/@testing-library-user-event-npm-14.5.2-ec9587901c-68a0c2aa28.zip differ diff --git a/.yarn/cache/@types-cookie-npm-0.4.1-274a704dc6-f96afe12bd.zip b/.yarn/cache/@types-cookie-npm-0.4.1-274a704dc6-f96afe12bd.zip deleted file mode 100644 index 939d7b1..0000000 Binary files a/.yarn/cache/@types-cookie-npm-0.4.1-274a704dc6-f96afe12bd.zip and /dev/null differ diff --git a/.yarn/cache/@types-hoist-non-react-statics-npm-3.3.5-98b8d8e47b-2a3b64bf3d.zip b/.yarn/cache/@types-hoist-non-react-statics-npm-3.3.5-98b8d8e47b-2a3b64bf3d.zip deleted file mode 100644 index 84ef124..0000000 Binary files a/.yarn/cache/@types-hoist-non-react-statics-npm-3.3.5-98b8d8e47b-2a3b64bf3d.zip and /dev/null differ diff --git a/.yarn/cache/@types-js-levenshtein-npm-1.1.3-417b5f0c21-025f2bd8d8.zip b/.yarn/cache/@types-js-levenshtein-npm-1.1.3-417b5f0c21-025f2bd8d8.zip deleted file mode 100644 index bb235ce..0000000 Binary files a/.yarn/cache/@types-js-levenshtein-npm-1.1.3-417b5f0c21-025f2bd8d8.zip and /dev/null differ diff --git a/.yarn/cache/@types-lodash-npm-4.17.0-11e757616b-4c5b41c9a6.zip b/.yarn/cache/@types-lodash-npm-4.17.0-11e757616b-4c5b41c9a6.zip new file mode 100644 index 0000000..fbf2d55 Binary files /dev/null and b/.yarn/cache/@types-lodash-npm-4.17.0-11e757616b-4c5b41c9a6.zip differ diff --git a/.yarn/cache/@types-md5-npm-2.3.5-bd5c825c57-aef9c40ab0.zip b/.yarn/cache/@types-md5-npm-2.3.5-bd5c825c57-aef9c40ab0.zip new file mode 100644 index 0000000..cf2dce8 Binary files /dev/null and b/.yarn/cache/@types-md5-npm-2.3.5-bd5c825c57-aef9c40ab0.zip differ diff --git a/.yarn/cache/@types-pluralize-npm-0.0.29-a6b8916fba-840796fa1d.zip b/.yarn/cache/@types-pluralize-npm-0.0.29-a6b8916fba-840796fa1d.zip new file mode 100644 index 0000000..c7d021d Binary files /dev/null and b/.yarn/cache/@types-pluralize-npm-0.0.29-a6b8916fba-840796fa1d.zip differ diff --git a/.yarn/cache/@types-set-cookie-parser-npm-2.4.7-e9d6d979b1-3c4b5168fe.zip b/.yarn/cache/@types-set-cookie-parser-npm-2.4.7-e9d6d979b1-3c4b5168fe.zip deleted file mode 100644 index 86041c2..0000000 Binary files a/.yarn/cache/@types-set-cookie-parser-npm-2.4.7-e9d6d979b1-3c4b5168fe.zip and /dev/null differ diff --git a/.yarn/cache/@types-styled-components-npm-5.1.34-c1fd4bac77-5bce93ea2c.zip b/.yarn/cache/@types-styled-components-npm-5.1.34-c1fd4bac77-5bce93ea2c.zip deleted file mode 100644 index 5080e3d..0000000 Binary files a/.yarn/cache/@types-styled-components-npm-5.1.34-c1fd4bac77-5bce93ea2c.zip and /dev/null differ diff --git a/.yarn/cache/@types-stylis-npm-4.2.0-5addc9ed60-c76c13e76c.zip b/.yarn/cache/@types-stylis-npm-4.2.0-5addc9ed60-c76c13e76c.zip deleted file mode 100644 index b1f7803..0000000 Binary files a/.yarn/cache/@types-stylis-npm-4.2.0-5addc9ed60-c76c13e76c.zip and /dev/null differ diff --git a/.yarn/cache/@types-uuid-npm-8.3.4-7547f4402c-b9ac98f82f.zip b/.yarn/cache/@types-uuid-npm-8.3.4-7547f4402c-b9ac98f82f.zip new file mode 100644 index 0000000..929871b Binary files /dev/null and b/.yarn/cache/@types-uuid-npm-8.3.4-7547f4402c-b9ac98f82f.zip differ diff --git a/.yarn/cache/@vanilla-extract-css-npm-1.14.2-af68e7707d-3a0d57815a.zip b/.yarn/cache/@vanilla-extract-css-npm-1.15.1-1996768f7d-f8c72779f5.zip similarity index 93% rename from .yarn/cache/@vanilla-extract-css-npm-1.14.2-af68e7707d-3a0d57815a.zip rename to .yarn/cache/@vanilla-extract-css-npm-1.15.1-1996768f7d-f8c72779f5.zip index 5784cb8..4986e75 100644 Binary files a/.yarn/cache/@vanilla-extract-css-npm-1.14.2-af68e7707d-3a0d57815a.zip and b/.yarn/cache/@vanilla-extract-css-npm-1.15.1-1996768f7d-f8c72779f5.zip differ diff --git a/.yarn/cache/@vanilla-extract-integration-npm-7.1.3-8963745404-eb903c7c40.zip b/.yarn/cache/@vanilla-extract-integration-npm-7.1.3-8963745404-eb903c7c40.zip new file mode 100644 index 0000000..7f3410f Binary files /dev/null and b/.yarn/cache/@vanilla-extract-integration-npm-7.1.3-8963745404-eb903c7c40.zip differ diff --git a/.yarn/cache/@vanilla-extract-sprinkles-npm-1.6.1-e524ee399f-7ddd2ab7c8.zip b/.yarn/cache/@vanilla-extract-sprinkles-npm-1.6.1-e524ee399f-7ddd2ab7c8.zip new file mode 100644 index 0000000..275d531 Binary files /dev/null and b/.yarn/cache/@vanilla-extract-sprinkles-npm-1.6.1-e524ee399f-7ddd2ab7c8.zip differ diff --git a/.yarn/cache/@vanilla-extract-vite-plugin-npm-4.0.9-eac4eb584d-f77fc14a5e.zip b/.yarn/cache/@vanilla-extract-vite-plugin-npm-4.0.9-eac4eb584d-f77fc14a5e.zip new file mode 100644 index 0000000..d1b4b04 Binary files /dev/null and b/.yarn/cache/@vanilla-extract-vite-plugin-npm-4.0.9-eac4eb584d-f77fc14a5e.zip differ diff --git a/.yarn/cache/@vitest-coverage-v8-npm-1.5.1-12c3829e02-614b0a7ca0.zip b/.yarn/cache/@vitest-coverage-v8-npm-1.5.2-0f1947c29f-cc98275396.zip similarity index 99% rename from .yarn/cache/@vitest-coverage-v8-npm-1.5.1-12c3829e02-614b0a7ca0.zip rename to .yarn/cache/@vitest-coverage-v8-npm-1.5.2-0f1947c29f-cc98275396.zip index ac3525a..1833867 100644 Binary files a/.yarn/cache/@vitest-coverage-v8-npm-1.5.1-12c3829e02-614b0a7ca0.zip and b/.yarn/cache/@vitest-coverage-v8-npm-1.5.2-0f1947c29f-cc98275396.zip differ diff --git a/.yarn/cache/@vitest-expect-npm-1.5.1-9cc59d304b-4743ca8de3.zip b/.yarn/cache/@vitest-expect-npm-1.5.2-3b855b8075-4e8400a55f.zip similarity index 99% rename from .yarn/cache/@vitest-expect-npm-1.5.1-9cc59d304b-4743ca8de3.zip rename to .yarn/cache/@vitest-expect-npm-1.5.2-3b855b8075-4e8400a55f.zip index 7be4649..e9f512d 100644 Binary files a/.yarn/cache/@vitest-expect-npm-1.5.1-9cc59d304b-4743ca8de3.zip and b/.yarn/cache/@vitest-expect-npm-1.5.2-3b855b8075-4e8400a55f.zip differ diff --git a/.yarn/cache/@vitest-runner-npm-1.5.1-1bd8a6b0c9-a079c111c9.zip b/.yarn/cache/@vitest-runner-npm-1.5.2-c6689dee82-9fc3e66881.zip similarity index 99% rename from .yarn/cache/@vitest-runner-npm-1.5.1-1bd8a6b0c9-a079c111c9.zip rename to .yarn/cache/@vitest-runner-npm-1.5.2-c6689dee82-9fc3e66881.zip index 68c132c..34f8e81 100644 Binary files a/.yarn/cache/@vitest-runner-npm-1.5.1-1bd8a6b0c9-a079c111c9.zip and b/.yarn/cache/@vitest-runner-npm-1.5.2-c6689dee82-9fc3e66881.zip differ diff --git a/.yarn/cache/@vitest-snapshot-npm-1.5.1-87cae6bf67-d3d769873b.zip b/.yarn/cache/@vitest-snapshot-npm-1.5.2-791e3d9f82-67ae235e59.zip similarity index 99% rename from .yarn/cache/@vitest-snapshot-npm-1.5.1-87cae6bf67-d3d769873b.zip rename to .yarn/cache/@vitest-snapshot-npm-1.5.2-791e3d9f82-67ae235e59.zip index 6d143ca..d6ba201 100644 Binary files a/.yarn/cache/@vitest-snapshot-npm-1.5.1-87cae6bf67-d3d769873b.zip and b/.yarn/cache/@vitest-snapshot-npm-1.5.2-791e3d9f82-67ae235e59.zip differ diff --git a/.yarn/cache/@vitest-spy-npm-1.5.1-9ec8baf765-865b94bc99.zip b/.yarn/cache/@vitest-spy-npm-1.5.2-b9c126ac34-d66de2873f.zip similarity index 99% rename from .yarn/cache/@vitest-spy-npm-1.5.1-9ec8baf765-865b94bc99.zip rename to .yarn/cache/@vitest-spy-npm-1.5.2-b9c126ac34-d66de2873f.zip index 918de04..52e5529 100644 Binary files a/.yarn/cache/@vitest-spy-npm-1.5.1-9ec8baf765-865b94bc99.zip and b/.yarn/cache/@vitest-spy-npm-1.5.2-b9c126ac34-d66de2873f.zip differ diff --git a/.yarn/cache/@vitest-ui-npm-1.5.1-18a33515ae-efba22a08b.zip b/.yarn/cache/@vitest-ui-npm-1.5.2-b335b96316-85fc78e0b3.zip similarity index 99% rename from .yarn/cache/@vitest-ui-npm-1.5.1-18a33515ae-efba22a08b.zip rename to .yarn/cache/@vitest-ui-npm-1.5.2-b335b96316-85fc78e0b3.zip index 61aca48..6fa4f4f 100644 Binary files a/.yarn/cache/@vitest-ui-npm-1.5.1-18a33515ae-efba22a08b.zip and b/.yarn/cache/@vitest-ui-npm-1.5.2-b335b96316-85fc78e0b3.zip differ diff --git a/.yarn/cache/@vitest-utils-npm-1.5.1-e51d68286e-45bef3c3c5.zip b/.yarn/cache/@vitest-utils-npm-1.5.2-7cf804c58e-019eeac016.zip similarity index 99% rename from .yarn/cache/@vitest-utils-npm-1.5.1-e51d68286e-45bef3c3c5.zip rename to .yarn/cache/@vitest-utils-npm-1.5.2-7cf804c58e-019eeac016.zip index 2b634a5..682dce4 100644 Binary files a/.yarn/cache/@vitest-utils-npm-1.5.1-e51d68286e-45bef3c3c5.zip and b/.yarn/cache/@vitest-utils-npm-1.5.2-7cf804c58e-019eeac016.zip differ diff --git a/.yarn/cache/@xmldom-xmldom-npm-0.8.10-c1bd991e61-c7647c4425.zip b/.yarn/cache/@xmldom-xmldom-npm-0.8.10-c1bd991e61-c7647c4425.zip deleted file mode 100644 index 21c4314..0000000 Binary files a/.yarn/cache/@xmldom-xmldom-npm-0.8.10-c1bd991e61-c7647c4425.zip and /dev/null differ diff --git a/.yarn/cache/cacheable-lookup-npm-7.0.0-b6cd95c14a-63a9c144c5.zip b/.yarn/cache/cacheable-lookup-npm-7.0.0-b6cd95c14a-63a9c144c5.zip new file mode 100644 index 0000000..c0bc5de Binary files /dev/null and b/.yarn/cache/cacheable-lookup-npm-7.0.0-b6cd95c14a-63a9c144c5.zip differ diff --git a/.yarn/cache/cacheable-request-npm-10.2.14-fd919b07d7-41b6658db3.zip b/.yarn/cache/cacheable-request-npm-10.2.14-fd919b07d7-41b6658db3.zip new file mode 100644 index 0000000..112b012 Binary files /dev/null and b/.yarn/cache/cacheable-request-npm-10.2.14-fd919b07d7-41b6658db3.zip differ diff --git a/.yarn/cache/camelize-npm-1.0.1-d86ebe085a-4c9ac55efd.zip b/.yarn/cache/camelize-npm-1.0.1-d86ebe085a-4c9ac55efd.zip deleted file mode 100644 index ba4735a..0000000 Binary files a/.yarn/cache/camelize-npm-1.0.1-d86ebe085a-4c9ac55efd.zip and /dev/null differ diff --git a/.yarn/cache/charenc-npm-0.0.2-aca0c2f207-a45ec39363.zip b/.yarn/cache/charenc-npm-0.0.2-aca0c2f207-a45ec39363.zip new file mode 100644 index 0000000..10ef15c Binary files /dev/null and b/.yarn/cache/charenc-npm-0.0.2-aca0c2f207-a45ec39363.zip differ diff --git a/.yarn/cache/cookie-npm-0.4.2-7761894d5f-beab41fbd7.zip b/.yarn/cache/cookie-npm-0.4.2-7761894d5f-beab41fbd7.zip deleted file mode 100644 index 9c19a61..0000000 Binary files a/.yarn/cache/cookie-npm-0.4.2-7761894d5f-beab41fbd7.zip and /dev/null differ diff --git a/.yarn/cache/crypt-npm-0.0.2-033627d94f-adbf263441.zip b/.yarn/cache/crypt-npm-0.0.2-033627d94f-adbf263441.zip new file mode 100644 index 0000000..0de38b1 Binary files /dev/null and b/.yarn/cache/crypt-npm-0.0.2-033627d94f-adbf263441.zip differ diff --git a/.yarn/cache/css-color-keywords-npm-1.0.0-fc176df58b-af205a86c6.zip b/.yarn/cache/css-color-keywords-npm-1.0.0-fc176df58b-af205a86c6.zip deleted file mode 100644 index cc088c1..0000000 Binary files a/.yarn/cache/css-color-keywords-npm-1.0.0-fc176df58b-af205a86c6.zip and /dev/null differ diff --git a/.yarn/cache/css-to-react-native-npm-3.2.0-46e31a25e3-fde850a511.zip b/.yarn/cache/css-to-react-native-npm-3.2.0-46e31a25e3-fde850a511.zip deleted file mode 100644 index 974f7d0..0000000 Binary files a/.yarn/cache/css-to-react-native-npm-3.2.0-46e31a25e3-fde850a511.zip and /dev/null differ diff --git a/.yarn/cache/csstype-npm-3.1.2-cead7d99b2-32c038af25.zip b/.yarn/cache/csstype-npm-3.1.2-cead7d99b2-32c038af25.zip deleted file mode 100644 index edf361b..0000000 Binary files a/.yarn/cache/csstype-npm-3.1.2-cead7d99b2-32c038af25.zip and /dev/null differ diff --git a/.yarn/cache/cuid-npm-3.0.0-66e229f427-e1cac04b8d.zip b/.yarn/cache/cuid-npm-3.0.0-66e229f427-e1cac04b8d.zip deleted file mode 100644 index d5c35ca..0000000 Binary files a/.yarn/cache/cuid-npm-3.0.0-66e229f427-e1cac04b8d.zip and /dev/null differ diff --git a/.yarn/cache/date-fns-npm-2.30.0-895c790e0f-e4b521fbf2.zip b/.yarn/cache/date-fns-npm-2.30.0-895c790e0f-e4b521fbf2.zip new file mode 100644 index 0000000..28d87e1 Binary files /dev/null and b/.yarn/cache/date-fns-npm-2.30.0-895c790e0f-e4b521fbf2.zip differ diff --git a/.yarn/cache/depd-npm-1.1.2-b0c8414da7-acb24aaf93.zip b/.yarn/cache/depd-npm-1.1.2-b0c8414da7-acb24aaf93.zip new file mode 100644 index 0000000..73a0240 Binary files /dev/null and b/.yarn/cache/depd-npm-1.1.2-b0c8414da7-acb24aaf93.zip differ diff --git a/.yarn/cache/events-npm-3.3.0-c280bc7e48-d6b6f2adbc.zip b/.yarn/cache/events-npm-3.3.0-c280bc7e48-d6b6f2adbc.zip deleted file mode 100644 index 4a41e81..0000000 Binary files a/.yarn/cache/events-npm-3.3.0-c280bc7e48-d6b6f2adbc.zip and /dev/null differ diff --git a/.yarn/cache/form-data-encoder-npm-4.0.2-aa021c3f21-559d3130e2.zip b/.yarn/cache/form-data-encoder-npm-4.0.2-aa021c3f21-559d3130e2.zip new file mode 100644 index 0000000..70c100c Binary files /dev/null and b/.yarn/cache/form-data-encoder-npm-4.0.2-aa021c3f21-559d3130e2.zip differ diff --git a/.yarn/cache/got-npm-14.2.1-e13379605e-6592f70d57.zip b/.yarn/cache/got-npm-14.2.1-e13379605e-6592f70d57.zip new file mode 100644 index 0000000..cbea23b Binary files /dev/null and b/.yarn/cache/got-npm-14.2.1-e13379605e-6592f70d57.zip differ diff --git a/.yarn/cache/graphql-scalars-npm-1.23.0-afcf92cba2-7666c305b8.zip b/.yarn/cache/graphql-scalars-npm-1.23.0-afcf92cba2-7666c305b8.zip new file mode 100644 index 0000000..ab86c45 Binary files /dev/null and b/.yarn/cache/graphql-scalars-npm-1.23.0-afcf92cba2-7666c305b8.zip differ diff --git a/.yarn/cache/graphql-transform-scalars-npm-1.2.1-419c342fcf-d170e808a2.zip b/.yarn/cache/graphql-transform-scalars-npm-1.2.1-419c342fcf-d170e808a2.zip new file mode 100644 index 0000000..884bada Binary files /dev/null and b/.yarn/cache/graphql-transform-scalars-npm-1.2.1-419c342fcf-d170e808a2.zip differ diff --git a/.yarn/cache/headers-polyfill-npm-3.2.5-5873ac13a0-10202f4ebf.zip b/.yarn/cache/headers-polyfill-npm-3.2.5-5873ac13a0-10202f4ebf.zip deleted file mode 100644 index a80a3d6..0000000 Binary files a/.yarn/cache/headers-polyfill-npm-3.2.5-5873ac13a0-10202f4ebf.zip and /dev/null differ diff --git a/.yarn/cache/hoist-non-react-statics-npm-3.3.2-e7b709e6c1-fe0889169e.zip b/.yarn/cache/hoist-non-react-statics-npm-3.3.2-e7b709e6c1-fe0889169e.zip deleted file mode 100644 index 5f7b8a8..0000000 Binary files a/.yarn/cache/hoist-non-react-statics-npm-3.3.2-e7b709e6c1-fe0889169e.zip and /dev/null differ diff --git a/.yarn/cache/http2-wrapper-npm-2.2.1-c033aaabde-7207201d3c.zip b/.yarn/cache/http2-wrapper-npm-2.2.1-c033aaabde-7207201d3c.zip new file mode 100644 index 0000000..fb0c8f5 Binary files /dev/null and b/.yarn/cache/http2-wrapper-npm-2.2.1-c033aaabde-7207201d3c.zip differ diff --git a/.yarn/cache/is-buffer-npm-1.1.6-08199d9ccc-ae18aa0b6e.zip b/.yarn/cache/is-buffer-npm-1.1.6-08199d9ccc-ae18aa0b6e.zip new file mode 100644 index 0000000..082d5a6 Binary files /dev/null and b/.yarn/cache/is-buffer-npm-1.1.6-08199d9ccc-ae18aa0b6e.zip differ diff --git a/.yarn/cache/js-levenshtein-npm-1.1.6-ab883e61a3-1404573532.zip b/.yarn/cache/js-levenshtein-npm-1.1.6-ab883e61a3-1404573532.zip deleted file mode 100644 index 4776ca8..0000000 Binary files a/.yarn/cache/js-levenshtein-npm-1.1.6-ab883e61a3-1404573532.zip and /dev/null differ diff --git a/.yarn/cache/jwt-decode-npm-4.0.0-4cd8e89909-de75bbf892.zip b/.yarn/cache/jwt-decode-npm-4.0.0-4cd8e89909-de75bbf892.zip new file mode 100644 index 0000000..a0523c1 Binary files /dev/null and b/.yarn/cache/jwt-decode-npm-4.0.0-4cd8e89909-de75bbf892.zip differ diff --git a/.yarn/cache/lowercase-keys-npm-3.0.0-f8c4730215-ef62b9fa56.zip b/.yarn/cache/lowercase-keys-npm-3.0.0-f8c4730215-ef62b9fa56.zip new file mode 100644 index 0000000..bda5d66 Binary files /dev/null and b/.yarn/cache/lowercase-keys-npm-3.0.0-f8c4730215-ef62b9fa56.zip differ diff --git a/.yarn/cache/md5-npm-2.3.0-86c49d3915-14a21d597d.zip b/.yarn/cache/md5-npm-2.3.0-86c49d3915-14a21d597d.zip new file mode 100644 index 0000000..6770dd3 Binary files /dev/null and b/.yarn/cache/md5-npm-2.3.0-86c49d3915-14a21d597d.zip differ diff --git a/.yarn/cache/merge-descriptors-npm-1.0.3-10b44ad75c-866b7094af.zip b/.yarn/cache/merge-descriptors-npm-1.0.3-10b44ad75c-866b7094af.zip new file mode 100644 index 0000000..c55a6d3 Binary files /dev/null and b/.yarn/cache/merge-descriptors-npm-1.0.3-10b44ad75c-866b7094af.zip differ diff --git a/.yarn/cache/mimic-response-npm-4.0.0-c080547e26-761d788d26.zip b/.yarn/cache/mimic-response-npm-4.0.0-c080547e26-761d788d26.zip new file mode 100644 index 0000000..e4d2c2d Binary files /dev/null and b/.yarn/cache/mimic-response-npm-4.0.0-c080547e26-761d788d26.zip differ diff --git a/.yarn/cache/mock-jwks-patch-9a7688505b-678cdce347.zip b/.yarn/cache/mock-jwks-patch-9a7688505b-678cdce347.zip new file mode 100644 index 0000000..4949bab Binary files /dev/null and b/.yarn/cache/mock-jwks-patch-9a7688505b-678cdce347.zip differ diff --git a/.yarn/cache/msw-npm-1.3.3-7cd6e8f445-0c63b282a5.zip b/.yarn/cache/msw-npm-1.3.3-7cd6e8f445-0c63b282a5.zip deleted file mode 100644 index 0abfad9..0000000 Binary files a/.yarn/cache/msw-npm-1.3.3-7cd6e8f445-0c63b282a5.zip and /dev/null differ diff --git a/.yarn/cache/node-mocks-http-npm-1.14.1-92277e4de4-bd091ea1de.zip b/.yarn/cache/node-mocks-http-npm-1.14.1-92277e4de4-bd091ea1de.zip new file mode 100644 index 0000000..e2ed805 Binary files /dev/null and b/.yarn/cache/node-mocks-http-npm-1.14.1-92277e4de4-bd091ea1de.zip differ diff --git a/.yarn/cache/normalize-url-npm-8.0.1-c87adbf3f1-eb439231c4.zip b/.yarn/cache/normalize-url-npm-8.0.1-c87adbf3f1-eb439231c4.zip new file mode 100644 index 0000000..7f06232 Binary files /dev/null and b/.yarn/cache/normalize-url-npm-8.0.1-c87adbf3f1-eb439231c4.zip differ diff --git a/.yarn/cache/p-cancelable-npm-4.0.1-759b614353-12636623f4.zip b/.yarn/cache/p-cancelable-npm-4.0.1-759b614353-12636623f4.zip new file mode 100644 index 0000000..e4e3c23 Binary files /dev/null and b/.yarn/cache/p-cancelable-npm-4.0.1-759b614353-12636623f4.zip differ diff --git a/.yarn/cache/postcss-npm-8.4.31-385051a82b-748b82e6e5.zip b/.yarn/cache/postcss-npm-8.4.31-385051a82b-748b82e6e5.zip deleted file mode 100644 index d814012..0000000 Binary files a/.yarn/cache/postcss-npm-8.4.31-385051a82b-748b82e6e5.zip and /dev/null differ diff --git a/.yarn/cache/remix-auth-auth0-npm-1.10.0-d618cd38cb-86d0170c80.zip b/.yarn/cache/remix-auth-auth0-npm-1.10.0-d618cd38cb-86d0170c80.zip new file mode 100644 index 0000000..902f1be Binary files /dev/null and b/.yarn/cache/remix-auth-auth0-npm-1.10.0-d618cd38cb-86d0170c80.zip differ diff --git a/.yarn/cache/remix-auth-npm-3.6.0-c96fab9c4d-2b9d9f5ad0.zip b/.yarn/cache/remix-auth-npm-3.6.0-c96fab9c4d-2b9d9f5ad0.zip new file mode 100644 index 0000000..a7ade23 Binary files /dev/null and b/.yarn/cache/remix-auth-npm-3.6.0-c96fab9c4d-2b9d9f5ad0.zip differ diff --git a/.yarn/cache/remix-auth-oauth2-npm-1.10.0-ac7ff3e733-88d7f0da60.zip b/.yarn/cache/remix-auth-oauth2-npm-1.10.0-ac7ff3e733-88d7f0da60.zip new file mode 100644 index 0000000..89df85e Binary files /dev/null and b/.yarn/cache/remix-auth-oauth2-npm-1.10.0-ac7ff3e733-88d7f0da60.zip differ diff --git a/.yarn/cache/remix-auth-oauth2-npm-1.11.2-8879fabf71-382cfcc05d.zip b/.yarn/cache/remix-auth-oauth2-npm-1.11.2-8879fabf71-382cfcc05d.zip new file mode 100644 index 0000000..19b402d Binary files /dev/null and b/.yarn/cache/remix-auth-oauth2-npm-1.11.2-8879fabf71-382cfcc05d.zip differ diff --git a/.yarn/cache/remix-flat-routes-npm-0.6.4-7e2639fc72-84a2c19be9.zip b/.yarn/cache/remix-flat-routes-npm-0.6.4-7e2639fc72-84a2c19be9.zip new file mode 100644 index 0000000..25983a8 Binary files /dev/null and b/.yarn/cache/remix-flat-routes-npm-0.6.4-7e2639fc72-84a2c19be9.zip differ diff --git a/.yarn/cache/responselike-npm-3.0.0-9ab07af81f-8af27153f7.zip b/.yarn/cache/responselike-npm-3.0.0-9ab07af81f-8af27153f7.zip new file mode 100644 index 0000000..a88bd09 Binary files /dev/null and b/.yarn/cache/responselike-npm-3.0.0-9ab07af81f-8af27153f7.zip differ diff --git a/.yarn/cache/shallowequal-npm-1.1.0-6688d419cb-b926efb51c.zip b/.yarn/cache/shallowequal-npm-1.1.0-6688d419cb-b926efb51c.zip deleted file mode 100644 index b4686dc..0000000 Binary files a/.yarn/cache/shallowequal-npm-1.1.0-6688d419cb-b926efb51c.zip and /dev/null differ diff --git a/.yarn/cache/strict-event-emitter-npm-0.2.8-e8b9131760-6891e19fea.zip b/.yarn/cache/strict-event-emitter-npm-0.2.8-e8b9131760-6891e19fea.zip deleted file mode 100644 index 70e65f5..0000000 Binary files a/.yarn/cache/strict-event-emitter-npm-0.2.8-e8b9131760-6891e19fea.zip and /dev/null differ diff --git a/.yarn/cache/strict-event-emitter-npm-0.4.6-b845d23c7d-d0231ef081.zip b/.yarn/cache/strict-event-emitter-npm-0.4.6-b845d23c7d-d0231ef081.zip deleted file mode 100644 index b176dc0..0000000 Binary files a/.yarn/cache/strict-event-emitter-npm-0.4.6-b845d23c7d-d0231ef081.zip and /dev/null differ diff --git a/.yarn/cache/styled-components-npm-6.1.8-ae8d84c2da-fafe4b9198.zip b/.yarn/cache/styled-components-npm-6.1.8-ae8d84c2da-fafe4b9198.zip deleted file mode 100644 index f10649e..0000000 Binary files a/.yarn/cache/styled-components-npm-6.1.8-ae8d84c2da-fafe4b9198.zip and /dev/null differ diff --git a/.yarn/cache/stylis-npm-4.3.1-df21265105-33e8ebd2bf.zip b/.yarn/cache/stylis-npm-4.3.1-df21265105-33e8ebd2bf.zip deleted file mode 100644 index 89db3b8..0000000 Binary files a/.yarn/cache/stylis-npm-4.3.1-df21265105-33e8ebd2bf.zip and /dev/null differ diff --git a/.yarn/cache/tslib-npm-2.5.0-bb364efebd-e32fc99cc7.zip b/.yarn/cache/tslib-npm-2.5.0-bb364efebd-e32fc99cc7.zip deleted file mode 100644 index 90604d9..0000000 Binary files a/.yarn/cache/tslib-npm-2.5.0-bb364efebd-e32fc99cc7.zip and /dev/null differ diff --git a/.yarn/cache/type-fest-npm-2.19.0-918b953248-a5a7ecf2e6.zip b/.yarn/cache/type-fest-npm-2.19.0-918b953248-a5a7ecf2e6.zip deleted file mode 100644 index 788d393..0000000 Binary files a/.yarn/cache/type-fest-npm-2.19.0-918b953248-a5a7ecf2e6.zip and /dev/null differ diff --git a/.yarn/cache/type-fest-npm-4.17.0-e154bcb7a2-7c474dca23.zip b/.yarn/cache/type-fest-npm-4.17.0-e154bcb7a2-7c474dca23.zip new file mode 100644 index 0000000..7af7d87 Binary files /dev/null and b/.yarn/cache/type-fest-npm-4.17.0-e154bcb7a2-7c474dca23.zip differ diff --git a/.yarn/cache/uuid-npm-8.3.2-eca0baba53-bcbb807a91.zip b/.yarn/cache/uuid-npm-8.3.2-eca0baba53-bcbb807a91.zip new file mode 100644 index 0000000..ea304f8 Binary files /dev/null and b/.yarn/cache/uuid-npm-8.3.2-eca0baba53-bcbb807a91.zip differ diff --git a/.yarn/cache/vite-node-npm-1.5.1-fd703ad005-d3591d9c30.zip b/.yarn/cache/vite-node-npm-1.5.2-3f4f4e44d5-a5e90ae2b3.zip similarity index 99% rename from .yarn/cache/vite-node-npm-1.5.1-fd703ad005-d3591d9c30.zip rename to .yarn/cache/vite-node-npm-1.5.2-3f4f4e44d5-a5e90ae2b3.zip index 5743865..73f46c4 100644 Binary files a/.yarn/cache/vite-node-npm-1.5.1-fd703ad005-d3591d9c30.zip and b/.yarn/cache/vite-node-npm-1.5.2-3f4f4e44d5-a5e90ae2b3.zip differ diff --git a/.yarn/cache/vitest-npm-1.5.1-da8c0fa81f-85f6b9250c.zip b/.yarn/cache/vitest-npm-1.5.2-db4ab193ee-1ad3a33d3a.zip similarity index 99% rename from .yarn/cache/vitest-npm-1.5.1-da8c0fa81f-85f6b9250c.zip rename to .yarn/cache/vitest-npm-1.5.2-db4ab193ee-1ad3a33d3a.zip index 52b29ed..d24d585 100644 Binary files a/.yarn/cache/vitest-npm-1.5.1-da8c0fa81f-85f6b9250c.zip and b/.yarn/cache/vitest-npm-1.5.2-db4ab193ee-1ad3a33d3a.zip differ diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index ad29ca7..d937ab1 100644 Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ diff --git a/.yarn/patches/mock-jwks-npm-3.1.0-131e3bbc29.patch b/.yarn/patches/mock-jwks-npm-3.1.0-131e3bbc29.patch new file mode 100644 index 0000000..c0dd490 --- /dev/null +++ b/.yarn/patches/mock-jwks-npm-3.1.0-131e3bbc29.patch @@ -0,0 +1,61 @@ +diff --git a/build/index.d.ts b/build/index.d.ts +index 575dc0e00c51ac7dac66c4e4885c2414ee98fa91..50717f586aba777a4239b726a90347d9c3dcea45 100644 +--- a/build/index.d.ts ++++ b/build/index.d.ts +@@ -1,5 +1,8 @@ + import { JwtPayload } from 'jsonwebtoken'; ++import { HttpHandler } from 'msw'; ++ + declare const createJWKSMock: (jwksBase: string, jwksPath?: string) => { ++ handler: HttpHandler + start: () => void; + stop: () => void; + kid: () => string; +diff --git a/build/index.js b/build/index.js +index 289a2dac6cd569eef5dbc9329914a7517b442829..bfe7abde0ad358d21b707cc2fa69f721b02b8955 100644 +--- a/build/index.js ++++ b/build/index.js +@@ -1,13 +1,20 @@ + import { createJWKS, createKeyPair, signJwt } from './tools.js'; + import { setupServer } from 'msw/node'; +-import { rest } from 'msw'; ++import { http, HttpResponse } from 'msw'; ++ + const createJWKSMock = (jwksBase, jwksPath = '/.well-known/jwks.json') => { + const keypair = createKeyPair(); + const JWKS = createJWKS({ + ...keypair, + jwksOrigin: jwksBase, + }); +- const server = setupServer(rest.get(new URL(jwksPath, jwksBase).href, (_, res, ctx) => res(ctx.status(200), ctx.json(JWKS)))); ++ ++ // we patch & expose the actual msw handler so we can plug it into our own server rather than ++ // creating a conflicting instance. we also bump the msw version to match our own to avoid any ++ // compatibility issues. ++ const handler = http.get(new URL(jwksPath, jwksBase).href, () => HttpResponse.json(JWKS)); ++ ++ const server = setupServer(handler); + const kid = () => JWKS.keys[0].kid; + const start = () => { + server.listen({ onUnhandledRequest: 'bypass' }); +@@ -17,6 +24,7 @@ const createJWKSMock = (jwksBase, jwksPath = '/.well-known/jwks.json') => { + }; + const token = (token = {}) => signJwt(keypair.privateKey, token, kid()); + return { ++ handler, + start, + stop, + kid, +diff --git a/package.json b/package.json +index e5a5c2fc6b6b5dfec0c88bbf2adf4a88ba33e18b..412355319913b9b7a3743974c47d29fb834c9a93 100644 +--- a/package.json ++++ b/package.json +@@ -91,7 +91,7 @@ + "dependencies": { + "base64-url": "^2.3.3", + "jsonwebtoken": "^9.0.0", +- "msw": "^1.2.2", ++ "msw": "2.2.14", + "node-forge": "^1.3.1", + "node-rsa": "^1.1.1" + }, diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..0ad25db --- /dev/null +++ b/COPYING @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d1214e2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,15 @@ +Copyright 2024–present Chrononomicon + +The Chrononomicon application ("The Software") is distributed under the +GNU AFFERO GENERAL PUBLIC LICENSE ("AGPL"), Version 3.0 and is also available +under alternative licenses negotiated directly with Chrononomicon the organization +("The Company"). If you obtained Chrononomicon under the AGPL, then the GPL applies to +all loadable modules used in conjunction with The Software on your system as well, +except as defined below. The GPL (version 3) is included in this source tree in +the file COPYING. + +Chrononomicon holds copyright and/or sufficient licenses to all components of +The Software, and therefore can grant, at its sole discretion, the ability +for organizations, individuals, or other legal entities to alternative licenses +(even if not GPL) to The Software and/or modules which may be used in conjunction +with The Software. diff --git a/README.md b/README.md index bdf22de..0979763 100644 --- a/README.md +++ b/README.md @@ -1,76 +1 @@ -# Campaign - - - -✨ **This workspace has been generated by [Nx, Smart Monorepos · Fast CI.](https://nx.dev)** ✨ - -## Integrate with editors - -Enhance your Nx experience by installing [Nx Console](https://nx.dev/nx-console) for your favorite editor. Nx Console -provides an interactive UI to view your projects, run tasks, generate code, and more! Available for VSCode, IntelliJ and -comes with a LSP for Vim users. - -## Nx plugins and code generators - -Add Nx plugins to leverage their code generators and automated, inferred tasks. - -``` -# Add plugin -npx nx add @nx/react - -# Use code generator -npx nx generate @nx/react:app demo - -# Run development server -npx nx serve demo - -# View project details -npx nx show project demo --web -``` - -Run `npx nx list` to get a list of available plugins and whether they have generators. Then run `npx nx list ` to see what generators are available. - -Learn more about [code generators](https://nx.dev/features/generate-code) and [inferred tasks](https://nx.dev/concepts/inferred-tasks) in the docs. - -## Running tasks - -To execute tasks with Nx use the following syntax: - -``` -npx nx <...options> -``` - -You can also run multiple targets: - -``` -npx nx run-many -t -``` - -..or add `-p` to filter specific projects - -``` -npx nx run-many -t -p -``` - -Targets can be defined in the `package.json` or `projects.json`. Learn more [in the docs](https://nx.dev/features/run-tasks). - -## Set up CI! - -Nx comes with local caching already built-in (check your `nx.json`). On CI you might want to go a step further. - -- [Set up remote caching](https://nx.dev/features/share-your-cache) -- [Set up task distribution across multiple machines](https://nx.dev/nx-cloud/features/distribute-task-execution) -- [Learn more how to setup CI](https://nx.dev/recipes/ci) - -## Explore the project graph - -Run `npx nx graph` to show the graph of the workspace. -It will show tasks that you can run with Nx. - -- [Learn more about Exploring the Project Graph](https://nx.dev/core-features/explore-graph) - -## Connect with us! - -- [Join the community](https://nx.dev/community) -- [Subscribe to the Nx Youtube Channel](https://www.youtube.com/@nxdevtools) -- [Follow us on Twitter](https://twitter.com/nxdevtools) +# chrononomicon diff --git a/codegen.ts b/codegen.ts index c480853..4cb4872 100644 --- a/codegen.ts +++ b/codegen.ts @@ -14,13 +14,12 @@ const config: CodegenConfig = { plugins: ['schema-ast'], }, }, - // TODO: enable when introducing graphql-scalars - // config: { - // scalars: { - // UUID: 'string', - // DateTime: 'Date', - // }, - // }, + config: { + scalars: { + Date: 'Date', + DateTime: 'Date', + }, + }, }; export default config; diff --git a/docker-compose.yml b/docker-compose.yml index 9a298d9..61b5752 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,7 @@ services: environment: - POSTGRES_USER=admin - POSTGRES_PASSWORD=password - - POSTGRES_DB=campaign + - POSTGRES_DB=chrononomicon - PGPORT=5433 volumes: - postgres:/var/lib/postgresql/data diff --git a/eslint.config.cjs b/eslint.config.cjs index db2fcca..b8a4404 100644 --- a/eslint.config.cjs +++ b/eslint.config.cjs @@ -24,6 +24,13 @@ module.exports = tseslint.config( // }, rules: { + '@typescript-eslint/no-unused-vars': [ + 'error', + { + ignoreRestSiblings: true, + }, + ], + 'unicorn/no-null': 'off', 'unicorn/prevent-abbreviations': 'off', }, diff --git a/lint-staged.config.js b/lint-staged.config.js index 759429d..58801cb 100755 --- a/lint-staged.config.js +++ b/lint-staged.config.js @@ -8,5 +8,6 @@ export default { (files) => `yarn nx affected:lint --files=${files.join(',')}`, (files) => `yarn nx format:write --files=${files.join(',')}`, ], + 'projects/lib-postgres-schema/**/*.ts': ['yarn postgres:migrations-generate'], '**/*.graphql': ['yarn nx format:write'], }; diff --git a/package.json b/package.json index cbd9f5b..e56fd56 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,18 @@ { - "name": "@campaign/source", + "name": "@chrononomicon/source", "version": "0.0.0", - "license": "MIT", + "author": "Geoff Whatley (http://github.com/meatwallace)", + "license": "AGPL-3.0", "private": true, "type": "module", "scripts": { + "clean": "./scripts/clean.sh", "build": "nx run-many -t build", "lint": "nx run-many -t lint", "test": "nx run-many -t test", "typecheck": "nx run-many -t typecheck", "e2e": "nx run-many -t e2e", - "codegen:graphql": "graphql-codegen", + "codegen:graphql": "TS_NODE_PROJECT=tsconfig.base.json graphql-codegen --require tsconfig-paths/register", "postgres:start": "docker-compose -f ./docker-compose.yml up -d", "postgres:migrations-generate": "nx migrations-generate db-postgres", "postgres:migrations-run:dev": "nx migrations-run-dev db-postgres", @@ -19,7 +21,7 @@ "build:app-web": "nx build-remix app-web", "build:service-api": "nx build service-api", "build:service-user": "nx build service-user", - "deploy:app-web": "nx deploy service-api", + "deploy:app-web": "nx deploy app-web", "deploy:service-api": "nx deploy service-api", "deploy:service-user": "nx deploy service-user", "dev:app-web": "nx serve app-web", @@ -45,6 +47,7 @@ "@graphql-codegen/schema-ast": "4.0.2", "@graphql-tools/executor-http": "1.0.9", "@graphql-typed-document-node/core": "3.2.0", + "@mswjs/data": "0.16.1", "@nx/devkit": "18.3.3", "@nx/esbuild": "18.3.3", "@nx/eslint": "18.3.3", @@ -64,20 +67,23 @@ "@swc/core": "1.4.13", "@swc/helpers": "0.5.8", "@testcontainers/postgresql": "10.9.0", + "@testing-library/dom": "10.0.0", "@testing-library/jest-dom": "6.4.2", "@testing-library/react": "14.3.0", + "@testing-library/user-event": "14.5.2", "@types/jsonwebtoken": "9.0.6", "@types/node": "20.12.7", "@types/react": "18.2.75", "@types/react-dom": "18.2.24", "@types/react-is": "18.2.4", - "@types/styled-components": "5.1.34", "@typescript-eslint/eslint-plugin": "7.6.0", "@typescript-eslint/parser": "7.6.0", "@typescript-eslint/utils": "7.7.1", + "@vanilla-extract/vite-plugin": "4.0.9", "@vitejs/plugin-react": "4.2.1", - "@vitest/coverage-v8": "1.5.1", - "@vitest/ui": "1.5.1", + "@vitest/coverage-v8": "1.5.2", + "@vitest/expect": "1.5.2", + "@vitest/ui": "1.5.2", "drizzle-kit": "0.20.17", "esbuild": "0.20.2", "eslint": "9.0.0", @@ -88,34 +94,45 @@ "eslint-plugin-react": "7.34.1", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-unicorn": "52.0.0", + "graphql-transform-scalars": "1.2.1", "happy-dom": "14.7.1", "husky": "9.0.11", "jest-extended": "4.0.2", + "jwt-decode": "4.0.0", "lint-staged": "15.2.2", - "mock-jwks": "3.1.0", + "mock-jwks": "patch:mock-jwks@npm%3A3.1.0#~/.yarn/patches/mock-jwks-npm-3.1.0-131e3bbc29.patch", "msw": "2.2.14", + "node-mocks-http": "1.14.1", "nx": "18.3.3", "playwright": "1.43.0", "prettier": "3.2.5", + "remix-flat-routes": "0.6.4", + "tsconfig-paths": "4.2.0", "tslib": "2.6.2", "tsx": "4.7.3", + "type-fest": "4.17.0", "typescript": "5.4.5", "typescript-eslint": "7.6.0", "vite": "5.2.10", - "vitest": "1.5.1" + "vitest": "1.5.2" }, "dependencies": { "@hono/node-server": "1.10.0", + "@paralleldrive/cuid2": "2.2.2", "@pothos/core": "3.41.1", "@remix-run/node": "2.9.1", "@remix-run/react": "2.9.1", "@remix-run/serve": "2.9.1", + "@remix-run/server-runtime": "2.9.1", + "@vanilla-extract/css": "1.15.1", + "@vanilla-extract/sprinkles": "1.6.1", "auth0": "4.3.1", - "cuid": "3.0.0", "drizzle-orm": "0.30.9", "envalid": "8.0.0", + "got": "14.2.1", "graphql": "16.8.1", "graphql-request": "6.1.0", + "graphql-scalars": "1.23.0", "graphql-yoga": "5.3.0", "hono": "4.2.4", "isbot": "4", @@ -126,9 +143,12 @@ "react-dom": "18.2.0", "react-is": "18.2.0", "react-router-dom": "6.22.3", + "remix-auth": "3.6.0", + "remix-auth-auth0": "1.10.0", + "remix-auth-oauth2": "1.11.2", "remix-hono": "0.0.16", - "styled-components": "6.1.8", - "tiny-invariant": "1.3.3" + "tiny-invariant": "1.3.3", + "uuid": "9.0.1" }, "packageManager": "yarn@4.1.1", "dockerfile": { @@ -137,5 +157,8 @@ }, "workspaces": [ "projects/*" - ] + ], + "resolutions": { + "msw@npm:^1.2.2": "2.2.14" + } } diff --git a/projects/app-web-e2e/playwright.config.ts b/projects/app-web-e2e/playwright.config.ts index c012dc2..4a1fb90 100644 --- a/projects/app-web-e2e/playwright.config.ts +++ b/projects/app-web-e2e/playwright.config.ts @@ -1,4 +1,5 @@ import { fileURLToPath } from 'node:url'; +import path from 'node:path'; import { defineConfig, devices } from '@playwright/test'; import { nxE2EPreset } from '@nx/playwright/preset'; import { workspaceRoot } from '@nx/devkit'; @@ -6,27 +7,30 @@ import { workspaceRoot } from '@nx/devkit'; // patch cjs const __filename = fileURLToPath(import.meta.url); -// For CI, you may want to set BASE_URL to the deployed application. const baseURL = process.env['BASE_URL'] || 'http://localhost:4000'; -/** - * Read environment variables from file. - * https://github.com/motdotla/dotenv - */ -// require('dotenv').config(); +// having a million issues trying to use __dirname to establish a reliable path +// so it's easier to do this to handle the case when this file gets parsed for +// building our nx graph +const projectRoot = process.cwd().includes('app-web-e2e') + ? process.cwd() + : `${process.cwd()}/projects/app-web-e2e`; -/** - * See https://playwright.dev/docs/test-configuration. - */ +const dotEnvFile = path.join(projectRoot, '.env'); + +process.loadEnvFile(dotEnvFile); export default defineConfig({ ...nxE2EPreset(__filename, { testDir: './src' }), - /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + outputDir: '.test-results', + timeout: 60 * 1000, + expect: { + timeout: 10 * 1000, + }, use: { baseURL, - /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ trace: 'on-first-retry', + screenshot: 'only-on-failure', }, - /* Run your local dev server before starting the tests */ webServer: { command: 'yarn dev:app-web', url: 'http://localhost:4000', @@ -45,30 +49,5 @@ export default defineConfig({ name: 'firefox', use: { ...devices['Desktop Firefox'] }, }, - - { - name: 'webkit', - use: { ...devices['Desktop Safari'] }, - }, - - // Uncomment for mobile browsers support - /* { - name: 'Mobile Chrome', - use: { ...devices['Pixel 5'] }, - }, - { - name: 'Mobile Safari', - use: { ...devices['iPhone 12'] }, - }, */ - - // Uncomment for branded browsers - /* { - name: 'Microsoft Edge', - use: { ...devices['Desktop Edge'], channel: 'msedge' }, - }, - { - name: 'Google Chrome', - use: { ...devices['Desktop Chrome'], channel: 'chrome' }, - } */ ], }); diff --git a/projects/app-web-e2e/src/env.ts b/projects/app-web-e2e/src/env.ts new file mode 100755 index 0000000..3a1de9b --- /dev/null +++ b/projects/app-web-e2e/src/env.ts @@ -0,0 +1,13 @@ +import { cleanEnv, str } from 'envalid'; +import { Env } from './types'; + +export const env: Env = cleanEnv(process.env, { + NODE_ENV: str({ choices: ['development', 'test', 'e2e', 'production'] }), + LOGGING: str({ + choices: ['debug', 'info', 'warn', 'error'], + default: 'info', + }), + + TEST_USER_EMAIL: str(), + TEST_USER_PASSWORD: str(), +}); diff --git a/projects/app-web-e2e/src/example.test.ts b/projects/app-web-e2e/src/example.test.ts deleted file mode 100644 index abe155d..0000000 --- a/projects/app-web-e2e/src/example.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { test, expect } from '@playwright/test'; - -test('has title', async ({ page }) => { - await page.goto('/'); - - await expect(page.getByText('hello, world', { exact: true })).toBeVisible(); -}); diff --git a/projects/app-web-e2e/src/sign-up.test.ts b/projects/app-web-e2e/src/sign-up.test.ts new file mode 100644 index 0000000..afb131b --- /dev/null +++ b/projects/app-web-e2e/src/sign-up.test.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test'; +import { env } from './env'; + +test('it signs the user in and welcomes them', async ({ page }) => { + await page.goto('/'); + + await page.getByRole('button', { name: 'Log in' }).click(); + + await expect(page).toHaveURL(/chrononomicon\.us\.auth0\.com\/u\/login/); + + await page.getByLabel('Email address').fill(env.TEST_USER_EMAIL); + await page.getByLabel('Password').fill(env.TEST_USER_PASSWORD); + await page.getByRole('button', { name: 'Continue', exact: true }).click(); + + await expect(page).toHaveURL(/localhost:4000/); + + await expect(page.getByText('Hello, Test User')).toBeVisible(); +}); diff --git a/projects/app-web-e2e/src/types.ts b/projects/app-web-e2e/src/types.ts new file mode 100755 index 0000000..41964ed --- /dev/null +++ b/projects/app-web-e2e/src/types.ts @@ -0,0 +1,11 @@ +export type Env = { + LOGGING: 'debug' | 'info' | 'warn' | 'error'; + NODE_ENV: 'development' | 'test' | 'e2e' | 'production'; + + TEST_USER_EMAIL: string; + TEST_USER_PASSWORD: string; + + // utils + isProduction: boolean; + isDevelopment: boolean; +}; diff --git a/projects/app-web-e2e/tsconfig.json b/projects/app-web-e2e/tsconfig.json index 1f228cb..120b1ca 100644 --- a/projects/app-web-e2e/tsconfig.json +++ b/projects/app-web-e2e/tsconfig.json @@ -1,17 +1,15 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "allowJs": true, - "outDir": "../../dist/out-tsc", - "module": "esnext", - "sourceMap": false + "module": "ESNext", + "types": ["node"], + "sourceMap": false, + "esModuleInterop": true }, "include": [ "**/*.ts", - "**/*.js", "playwright.config.ts", "src/**/*.test.ts", - "src/**/*.test.js", "src/**/*.d.ts" ] } diff --git a/projects/app-web/.env.development b/projects/app-web/.env.development index 0d97b9f..2faed26 100644 --- a/projects/app-web/.env.development +++ b/projects/app-web/.env.development @@ -1,2 +1,11 @@ +VITE_DOMAIN=localhost VITE_API_URL=http://localhost:3000/graphql -VITE_ENABLE_MSW=true \ No newline at end of file + +VITE_AUTH0_AUDIENCE="http://localhost:3000/" +VITE_AUTH0_CALLBACK_URL="http://localhost:4000/auth/callback" +VITE_AUTH0_CLIENT_ID="F7PgBpbgFpgNmkXdlbDIiAnugC0Lggb0" +VITE_AUTH0_DOMAIN="chrononomicon.us.auth0.com" +VITE_AUTH0_LOGOUT_URL="https://chrononomicon.us.auth0.com/v2/logout" +VITE_AUTH0_RETURN_URL="http://localhost:4000" + +VITE_ENABLE_MSW=true diff --git a/projects/app-web/.env.production b/projects/app-web/.env.production index 8fd9680..c44bf9f 100644 --- a/projects/app-web/.env.production +++ b/projects/app-web/.env.production @@ -1,2 +1,11 @@ -VITE_API_URL=https://service-api.fly.dev/graphql -VITE_ENABLE_MSW=false \ No newline at end of file +VITE_DOMAIN="app-web.fly.dev" +VITE_API_URL="https://service-api.fly.dev/graphql" + +VITE_AUTH0_AUDIENCE="https://service-api.fly.dev/" +VITE_AUTH0_CALLBACK_URL="https://app-web.fly.dev/auth/callback" +VITE_AUTH0_CLIENT_ID="F7PgBpbgFpgNmkXdlbDIiAnugC0Lggb0" +VITE_AUTH0_DOMAIN="chrononomicon.us.auth0.com" +VITE_AUTH0_LOGOUT_URL="https://chrononomicon.us.auth0.com/v2/logout" +VITE_AUTH0_RETURN_URL="https://app-web.fly.dev" + +VITE_ENABLE_MSW="false" \ No newline at end of file diff --git a/projects/app-web/.env.test b/projects/app-web/.env.test index 0d97b9f..f930b30 100644 --- a/projects/app-web/.env.test +++ b/projects/app-web/.env.test @@ -1,2 +1,9 @@ -VITE_API_URL=http://localhost:3000/graphql -VITE_ENABLE_MSW=true \ No newline at end of file +VITE_DOMAIN=test.com +VITE_API_URL=https://test.com/graphql +VITE_AUTH0_AUDIENCE="https://test.com/" +VITE_AUTH0_CALLBACK_URL="https://test.com/auth/callback" +VITE_AUTH0_CLIENT_ID="auth0_client_id" +VITE_AUTH0_DOMAIN="auth0domain.com" +VITE_AUTH0_LOGOUT_URL="https://auth0.com/v2/logout" +VITE_AUTH0_RETURN_URL="https://test.com" +VITE_ENABLE_MSW=true diff --git a/projects/app-web/Dockerfile b/projects/app-web/Dockerfile index 678a131..9a5bbf1 100644 --- a/projects/app-web/Dockerfile +++ b/projects/app-web/Dockerfile @@ -5,7 +5,7 @@ ARG NODE_VERSION=20.12.2 FROM node:${NODE_VERSION}-slim as build # Node.js app lives here -WORKDIR /app +WORKDIR /not_app # Set production environment ENV NODE_ENV="production" @@ -19,7 +19,6 @@ RUN \ # issue does not exist outside of docker - cannot be bothered spending any more time working out why. rm -f projects/app-web/.env.development && \ rm -f projects/app-web/.env.test && \ - ls -a projects/app-web && \ # build application yarn build:app-web --mode production && \ # clean up msw @@ -42,9 +41,9 @@ WORKDIR /app ENV NODE_ENV="production" # Copy built application -COPY --from=build /app/projects/app-web/package.json /app/projects/app-web/server.mjs /app/ -COPY --from=build /app/projects/app-web/node_modules /app/node_modules -COPY --from=build /app/projects/app-web/build /app/build +COPY --from=build /not_app/projects/app-web/package.json /not_app/projects/app-web/server.mjs /app/ +COPY --from=build /not_app/projects/app-web/node_modules /app/node_modules +COPY --from=build /not_app/projects/app-web/build /app/build # Start the server by default, this can be overwritten at runtime EXPOSE 3000 diff --git a/projects/app-web/app/app.css.ts b/projects/app-web/app/app.css.ts new file mode 100644 index 0000000..10ecb06 --- /dev/null +++ b/projects/app-web/app/app.css.ts @@ -0,0 +1,22 @@ +import { globalStyle } from '@vanilla-extract/css'; + +// primary - #095191 +// dark - #181b26 +// light - #76a5ce +// foreground - #ddefff +// background - #07080b + +globalStyle('html, body', { + all: 'unset', + boxSizing: 'border-box', + display: 'block', + height: '100%', +}); + +globalStyle('html', { + // +}); + +globalStyle('body', { + backgroundColor: '#07080b;', +}); diff --git a/projects/app-web/app/authenticator.server.ts b/projects/app-web/app/authenticator.server.ts new file mode 100644 index 0000000..0f74882 --- /dev/null +++ b/projects/app-web/app/authenticator.server.ts @@ -0,0 +1,80 @@ +import { Authenticator } from 'remix-auth'; +import { + Auth0Strategy, + Auth0Profile, + Auth0ExtraParams, +} from 'remix-auth-auth0'; +import { OAuth2StrategyVerifyParams } from 'remix-auth-oauth2'; +import invariant from 'tiny-invariant'; +import { client } from './client'; +import { graphql } from './gql'; +import { User } from './gql/graphql'; +import { sessionStorage } from './session-storage.server'; +import { isMutationError } from './utils'; + +export const authenticator = new Authenticator(sessionStorage, { + sessionKey: 'userID', +}); + +invariant(process.env.AUTH0_CLIENT_SECRET, '$AUTH0_CLIENT_SECRET is required'); + +const config = { + callbackURL: import.meta.env.VITE_AUTH0_CALLBACK_URL, + clientID: import.meta.env.VITE_AUTH0_CLIENT_ID, + clientSecret: process.env.AUTH0_CLIENT_SECRET, + domain: import.meta.env.VITE_AUTH0_DOMAIN, + audience: import.meta.env.VITE_AUTH0_AUDIENCE, +}; + +const auth0Strategy = new Auth0Strategy(config, handleVerifySuccess); + +const GetOrCreateUser = graphql(/* GraphQL */ ` + mutation GetOrCreateUser($input: GetOrCreateUserInput!) { + getOrCreateUser(input: $input) { + ... on User { + id + name + firstName + email + emailVerified + createdAt + } + + ... on MutationErrorPayload { + error { + title + message + } + } + } + } +`); + +async function handleVerifySuccess( + params: OAuth2StrategyVerifyParams, +): Promise> { + client.setHeader('authorization', `Bearer ${params.accessToken}`); + + const email = params.profile.emails?.[0].value; + + invariant(email, 'email is required'); + + const { getOrCreateUser } = await client.request(GetOrCreateUser, { + input: { email }, + }); + + if (isMutationError(getOrCreateUser)) { + const error = new Error(getOrCreateUser.error.message); + + error.name = getOrCreateUser.error.title; + + // TODO(#16): capture via Sentry + throw error; + } + + const { __typename, ...user } = getOrCreateUser; + + return user; +} + +authenticator.use(auth0Strategy); diff --git a/projects/app-web/app/components/button.css.ts b/projects/app-web/app/components/button.css.ts new file mode 100644 index 0000000..1e31f38 --- /dev/null +++ b/projects/app-web/app/components/button.css.ts @@ -0,0 +1,41 @@ +import { style, styleVariants } from '@vanilla-extract/css'; + +const buttonBase = style({ + borderRadius: '4px', + display: 'flex', + fontFamily: 'Josefin Slab Bold, sans-serif', + fontSize: '18px', + justifyContent: 'center', + marginBottom: '8px', + minWidth: '160px', + padding: '13px 16px 8px', + textAlign: 'center', + textTransform: 'uppercase', +}); + +export const buttonVariants = styleVariants({ + primary: [ + buttonBase, + { + backgroundColor: '#0087ff', + border: 'none', + color: '#ddefff', + }, + ], + secondary: [ + buttonBase, + { + backgroundColor: '#ffffff0d', + border: '1px solid #0087ff', + color: '#0087ff', + }, + ], + transparent: [ + buttonBase, + { + backgroundColor: '#ffffff0d', + border: '1px solid #0087ff', + color: '#0087ff', + }, + ], +}); diff --git a/projects/app-web/app/components/button.tsx b/projects/app-web/app/components/button.tsx new file mode 100644 index 0000000..f0098e3 --- /dev/null +++ b/projects/app-web/app/components/button.tsx @@ -0,0 +1,15 @@ +import * as styles from './button.css.ts'; + +type Props = { + children: React.ReactNode; + variant?: 'primary' | 'secondary' | 'transparent'; +}; + +export function Button(props: Props) { + return ( + + + ); +} diff --git a/projects/app-web/app/components/log-out-button.test.tsx b/projects/app-web/app/components/log-out-button.test.tsx new file mode 100644 index 0000000..20f622e --- /dev/null +++ b/projects/app-web/app/components/log-out-button.test.tsx @@ -0,0 +1,34 @@ +import { render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { LogOutButton } from './log-out-button'; +import { createRemixStub } from '@remix-run/testing'; +import { Routes } from '../types'; + +function ExpectedRoute() { + return 'Logged out'; +} + +function setupTest() { + const user = userEvent.setup(); + + const LogOutButtonStub = createRemixStub([ + { path: Routes.Index, Component: LogOutButton }, + { path: Routes.AuthLogout, Component: ExpectedRoute, action: () => null }, + ]); + + render(); + + return { user }; +} + +test('it renders a log out button that redirects to the log out route when pressed', async () => { + const { user } = setupTest(); + + const logOutButton = await screen.findByRole('button', { name: 'Log out' }); + + await waitFor(() => user.click(logOutButton)); + + const loggedOutMessage = await screen.findByText('Logged out'); + + expect(loggedOutMessage).toBeInTheDocument(); +}); diff --git a/projects/app-web/app/components/log-out-button.tsx b/projects/app-web/app/components/log-out-button.tsx new file mode 100644 index 0000000..ec0d8b5 --- /dev/null +++ b/projects/app-web/app/components/log-out-button.tsx @@ -0,0 +1,12 @@ +import { Form } from '@remix-run/react'; +import { Button } from './button'; + +export function LogOutButton() { + return ( + <> +
+ +
+ + ); +} diff --git a/projects/app-web/app/components/sign-up-button.test.tsx b/projects/app-web/app/components/sign-up-button.test.tsx new file mode 100644 index 0000000..daa2a6a --- /dev/null +++ b/projects/app-web/app/components/sign-up-button.test.tsx @@ -0,0 +1,34 @@ +import { render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { SignUpButton } from './sign-up-button'; +import { createRemixStub } from '@remix-run/testing'; +import { Routes } from '../types'; + +function ExpectedRoute() { + return 'Auth0'; +} + +function setupTest() { + const user = userEvent.setup(); + + const SignUpButtonStub = createRemixStub([ + { path: Routes.Index, Component: SignUpButton }, + { path: Routes.AuthAuth0, Component: ExpectedRoute, action: () => null }, + ]); + + render(); + + return { user }; +} + +test('it renders a sign up button that redirects to auth0 when pressed', async () => { + const { user } = setupTest(); + + const signUpButton = await screen.findByRole('button', { name: 'Sign up' }); + + await waitFor(() => user.click(signUpButton)); + + const auth0Page = await screen.findByText('Auth0'); + + expect(auth0Page).toBeInTheDocument(); +}); diff --git a/projects/app-web/app/components/sign-up-button.tsx b/projects/app-web/app/components/sign-up-button.tsx new file mode 100644 index 0000000..a1e3938 --- /dev/null +++ b/projects/app-web/app/components/sign-up-button.tsx @@ -0,0 +1,12 @@ +import { Form } from '@remix-run/react'; +import { Button } from './button'; + +export function SignUpButton() { + return ( + <> +
+ +
+ + ); +} diff --git a/projects/app-web/app/entry.server.tsx b/projects/app-web/app/entry.server.tsx index 7c1b2c8..83e8530 100644 --- a/projects/app-web/app/entry.server.tsx +++ b/projects/app-web/app/entry.server.tsx @@ -19,6 +19,11 @@ if (!import.meta.env.PROD && import.meta.env.VITE_ENABLE_MSW === 'true') { server.listen(); } +// if we're in dev mode, load our local environment variables which should include our server secrets +if (!import.meta.env.PROD) { + process.loadEnvFile('.env.development.local'); +} + export default function handleRequest( request: Request, responseStatusCode: number, diff --git a/projects/app-web/app/gql/gql.ts b/projects/app-web/app/gql/gql.ts index 0d082fb..94dd539 100644 --- a/projects/app-web/app/gql/gql.ts +++ b/projects/app-web/app/gql/gql.ts @@ -13,7 +13,10 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/ * Therefore it is highly recommended to use the babel or swc plugin for production. */ const documents = { - '\n query GetHelloWorld {\n hello\n }\n': types.GetHelloWorldDocument, + '\n mutation GetOrCreateUser($input: GetOrCreateUserInput!) {\n getOrCreateUser(input: $input) {\n ... on User {\n id\n name\n firstName\n email\n emailVerified\n createdAt\n }\n\n ... on MutationErrorPayload {\n error {\n title\n message\n }\n }\n }\n }\n': + types.GetOrCreateUserDocument, + '\n query GetCurrentUser {\n getCurrentUser {\n id\n name\n }\n }\n': + types.GetCurrentUserDocument, }; /** @@ -34,8 +37,14 @@ export function graphql(source: string): unknown; * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql( - source: '\n query GetHelloWorld {\n hello\n }\n', -): (typeof documents)['\n query GetHelloWorld {\n hello\n }\n']; + source: '\n mutation GetOrCreateUser($input: GetOrCreateUserInput!) {\n getOrCreateUser(input: $input) {\n ... on User {\n id\n name\n firstName\n email\n emailVerified\n createdAt\n }\n\n ... on MutationErrorPayload {\n error {\n title\n message\n }\n }\n }\n }\n', +): (typeof documents)['\n mutation GetOrCreateUser($input: GetOrCreateUserInput!) {\n getOrCreateUser(input: $input) {\n ... on User {\n id\n name\n firstName\n email\n emailVerified\n createdAt\n }\n\n ... on MutationErrorPayload {\n error {\n title\n message\n }\n }\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query GetCurrentUser {\n getCurrentUser {\n id\n name\n }\n }\n', +): (typeof documents)['\n query GetCurrentUser {\n getCurrentUser {\n id\n name\n }\n }\n']; export function graphql(source: string) { return (documents as any)[source] ?? {}; diff --git a/projects/app-web/app/gql/graphql.ts b/projects/app-web/app/gql/graphql.ts index 4c07ba5..257145f 100644 --- a/projects/app-web/app/gql/graphql.ts +++ b/projects/app-web/app/gql/graphql.ts @@ -27,32 +27,214 @@ export type Scalars = { Boolean: { input: boolean; output: boolean }; Int: { input: number; output: number }; Float: { input: number; output: number }; + /** A date string, such as 2007-12-03, compliant with the `full-date` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. */ + Date: { input: Date; output: Date }; + /** A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. */ + DateTime: { input: Date; output: Date }; +}; + +export type GetOrCreateUserInput = { + email: Scalars['String']['input']; +}; + +export type GetOrCreateUserPayload = MutationErrorPayload | User; + +export type Mutation = { + __typename?: 'Mutation'; + getOrCreateUser: GetOrCreateUserPayload; +}; + +export type MutationGetOrCreateUserArgs = { + input: GetOrCreateUserInput; +}; + +export type MutationError = { + __typename?: 'MutationError'; + message: Scalars['String']['output']; + title: Scalars['String']['output']; +}; + +export type MutationErrorPayload = { + __typename?: 'MutationErrorPayload'; + error: MutationError; }; export type Query = { __typename?: 'Query'; - hello: Scalars['String']['output']; + getCurrentUser: User; }; -export type QueryHelloArgs = { - name?: InputMaybe; +export type User = { + __typename?: 'User'; + createdAt: Scalars['DateTime']['output']; + email: Scalars['String']['output']; + emailVerified: Scalars['Boolean']['output']; + firstName?: Maybe; + id: Scalars['ID']['output']; + name: Scalars['String']['output']; }; -export type GetHelloWorldQueryVariables = Exact<{ [key: string]: never }>; +export type GetOrCreateUserMutationVariables = Exact<{ + input: GetOrCreateUserInput; +}>; + +export type GetOrCreateUserMutation = { + __typename?: 'Mutation'; + getOrCreateUser: + | { + __typename?: 'MutationErrorPayload'; + error: { __typename?: 'MutationError'; title: string; message: string }; + } + | { + __typename?: 'User'; + id: string; + name: string; + firstName?: string | null; + email: string; + emailVerified: boolean; + createdAt: Date; + }; +}; -export type GetHelloWorldQuery = { __typename?: 'Query'; hello: string }; +export type GetCurrentUserQueryVariables = Exact<{ [key: string]: never }>; -export const GetHelloWorldDocument = { +export type GetCurrentUserQuery = { + __typename?: 'Query'; + getCurrentUser: { __typename?: 'User'; id: string; name: string }; +}; + +export const GetOrCreateUserDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'mutation', + name: { kind: 'Name', value: 'GetOrCreateUser' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { + kind: 'Variable', + name: { kind: 'Name', value: 'input' }, + }, + type: { + kind: 'NonNullType', + type: { + kind: 'NamedType', + name: { kind: 'Name', value: 'GetOrCreateUserInput' }, + }, + }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'getOrCreateUser' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'input' }, + value: { + kind: 'Variable', + name: { kind: 'Name', value: 'input' }, + }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'InlineFragment', + typeCondition: { + kind: 'NamedType', + name: { kind: 'Name', value: 'User' }, + }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'name' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'firstName' }, + }, + { kind: 'Field', name: { kind: 'Name', value: 'email' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'emailVerified' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'createdAt' }, + }, + ], + }, + }, + { + kind: 'InlineFragment', + typeCondition: { + kind: 'NamedType', + name: { kind: 'Name', value: 'MutationErrorPayload' }, + }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'error' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'title' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'message' }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode< + GetOrCreateUserMutation, + GetOrCreateUserMutationVariables +>; +export const GetCurrentUserDocument = { kind: 'Document', definitions: [ { kind: 'OperationDefinition', operation: 'query', - name: { kind: 'Name', value: 'GetHelloWorld' }, + name: { kind: 'Name', value: 'GetCurrentUser' }, selectionSet: { kind: 'SelectionSet', - selections: [{ kind: 'Field', name: { kind: 'Name', value: 'hello' } }], + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'getCurrentUser' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'name' } }, + ], + }, + }, + ], }, }, ], -} as unknown as DocumentNode; +} as unknown as DocumentNode; diff --git a/projects/app-web/app/mocks/db.ts b/projects/app-web/app/mocks/db.ts new file mode 100644 index 0000000..260ef92 --- /dev/null +++ b/projects/app-web/app/mocks/db.ts @@ -0,0 +1,13 @@ +import { factory, primaryKey } from '@mswjs/data'; + +export const db = factory({ + user: { + id: primaryKey(() => 'test_id'), + auth0ID: () => 'auth0|test_id', + email: () => 'user@test.com', + emailVerified: () => true, + name: () => 'Test User', + firstName: () => 'John', + createdAt: () => new Date(), + }, +}); diff --git a/projects/app-web/app/mocks/handlers.ts b/projects/app-web/app/mocks/handlers.ts deleted file mode 100644 index b25eb58..0000000 --- a/projects/app-web/app/mocks/handlers.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { graphql, HttpResponse } from 'msw'; - -export const handlers = [ - graphql.query('GetHelloWorld', () => { - return HttpResponse.json({ - data: { - hello: 'hello, world', - }, - }); - }), -]; diff --git a/projects/app-web/app/mocks/handlers/gql/get-current-user.ts b/projects/app-web/app/mocks/handlers/gql/get-current-user.ts new file mode 100644 index 0000000..2798f27 --- /dev/null +++ b/projects/app-web/app/mocks/handlers/gql/get-current-user.ts @@ -0,0 +1,65 @@ +import { graphql, HttpResponse } from 'msw'; +import { jwtDecode } from 'jwt-decode'; +import { db } from '../../db'; +import { MutationResponse } from './types'; + +type GetCurrentUserResponse = MutationResponse<{ + getCurrentUser: { + id: string; + auth0ID: string; + email: string; + emailVerified: boolean; + name: string; + firstName?: string; + createdAt: Date; + }; +}>; + +type GetOrCreateUserVariables = { + // +}; + +export const GetCurrentUser = graphql.query< + GetCurrentUserResponse, + GetOrCreateUserVariables +>('GetCurrentUser', async ({ request }) => { + const authHeader = request.headers.get('authorization'); + + if (!authHeader) { + return HttpResponse.json({ + data: { + getCurrentUser: { + error: { + title: 'Unauthorized', + message: 'Access token not provided', + }, + }, + }, + }); + } + + const token = authHeader.replace('Bearer ', ''); + const payload = jwtDecode(token); + const user = db.user.findFirst({ + where: { auth0ID: { equals: payload.sub } }, + }); + + if (!user) { + return HttpResponse.json({ + data: { + getCurrentUser: { + error: { + title: 'Not found', + message: 'User not found', + }, + }, + }, + }); + } + + return HttpResponse.json({ + data: { + getCurrentUser: user, + }, + }); +}); diff --git a/projects/app-web/app/mocks/handlers/gql/get-or-create-user.ts b/projects/app-web/app/mocks/handlers/gql/get-or-create-user.ts new file mode 100644 index 0000000..d6c4b4a --- /dev/null +++ b/projects/app-web/app/mocks/handlers/gql/get-or-create-user.ts @@ -0,0 +1,70 @@ +import { graphql, HttpResponse } from 'msw'; +import { jwtDecode } from 'jwt-decode'; +import { createId } from '@paralleldrive/cuid2'; +import { db } from '../../db'; +import { MutationResponse } from './types'; + +type GetOrCreateUserResponse = MutationResponse<{ + getOrCreateUser: { + id: string; + auth0ID: string; + email: string; + emailVerified: boolean; + name: string; + firstName?: string; + createdAt: Date; + }; +}>; + +type GetOrCreateUserVariables = { + input: { + email: string; + }; +}; + +export const GetOrCreateUser = graphql.mutation< + GetOrCreateUserResponse, + GetOrCreateUserVariables +>('GetOrCreateUser', async ({ request, variables }) => { + const authHeader = request.headers.get('authorization'); + + if (!authHeader) { + return HttpResponse.json({ + data: { + getOrCreateUser: { + error: { + title: 'Unauthorized', + message: 'Access token not provided', + }, + }, + }, + }); + } + + const token = authHeader.replace('Bearer ', ''); + const payload = jwtDecode(token); + + const existingUser = db.user.findFirst({ + where: { email: { equals: variables.input.email } }, + }); + + if (existingUser) { + return HttpResponse.json({ + data: { + getOrCreateUser: existingUser, + }, + }); + } + + const user = db.user.create({ + id: createId(), + auth0ID: payload.sub, + email: variables.input.email, + }); + + return HttpResponse.json({ + data: { + getOrCreateUser: user, + }, + }); +}); diff --git a/projects/app-web/app/mocks/handlers/gql/index.ts b/projects/app-web/app/mocks/handlers/gql/index.ts new file mode 100644 index 0000000..46b6e3d --- /dev/null +++ b/projects/app-web/app/mocks/handlers/gql/index.ts @@ -0,0 +1,4 @@ +import { GetCurrentUser } from './get-current-user'; +import { GetOrCreateUser } from './get-or-create-user'; + +export const handlers = [GetCurrentUser, GetOrCreateUser]; diff --git a/projects/app-web/app/mocks/handlers/gql/types.ts b/projects/app-web/app/mocks/handlers/gql/types.ts new file mode 100644 index 0000000..1a4859f --- /dev/null +++ b/projects/app-web/app/mocks/handlers/gql/types.ts @@ -0,0 +1,3 @@ +export type MutationError = { error: { title: string; message: string } }; + +export type MutationResponse = T | { [key in keyof T]: MutationError }; diff --git a/projects/app-web/app/mocks/handlers/index.ts b/projects/app-web/app/mocks/handlers/index.ts new file mode 100644 index 0000000..6929b69 --- /dev/null +++ b/projects/app-web/app/mocks/handlers/index.ts @@ -0,0 +1,3 @@ +import { handlers as gqlHandlers } from './gql'; + +export const handlers = [...gqlHandlers]; diff --git a/projects/app-web/app/root.tsx b/projects/app-web/app/root.tsx index 9445256..7e6ba66 100644 --- a/projects/app-web/app/root.tsx +++ b/projects/app-web/app/root.tsx @@ -1,4 +1,4 @@ -import type { MetaFunction } from '@remix-run/node'; +import type { LinksFunction, MetaFunction } from '@remix-run/node'; import { Links, Meta, @@ -6,12 +6,16 @@ import { Scripts, ScrollRestoration, } from '@remix-run/react'; +import styles from './styles/fonts.css?url'; +import './app.css'; + +export const links: LinksFunction = () => [{ rel: 'stylesheet', href: styles }]; export const meta: MetaFunction = () => [ { // eslint-disable-next-line unicorn/text-encoding-identifier-case charset: 'utf-8', - title: 'New Remix App', + title: 'Chrononomicon', viewport: 'width=device-width,initial-scale=1', }, ]; diff --git a/projects/app-web/app/routes/_index.css.ts b/projects/app-web/app/routes/_index.css.ts new file mode 100644 index 0000000..4d569c0 --- /dev/null +++ b/projects/app-web/app/routes/_index.css.ts @@ -0,0 +1,67 @@ +import { style } from '@vanilla-extract/css'; + +export const container = style({ + margin: '0 auto', + maxWidth: '1140px', + padding: '0 24px', + textAlign: 'center', +}); + +export const brandIcon = style({ + height: '42px', + marginTop: '-2px', + width: '42px', +}); + +export const brandName = style({ + alignSelf: 'center', + color: '#0087ff', + display: 'flex', + fontFamily: 'Josefin Sans Medium, sans-serif', + fontSize: '48px', + fontWeight: 500, + lineHeight: 1, + padding: 0, + textTransform: 'uppercase', +}); + +export const heroSection = style({ + alignItems: 'center', + display: 'flex', + flexFlow: 'column', + justifyContent: 'center', +}); + +export const heroDescriptionContainer = style({ + alignItems: 'center', + display: 'flex', + justifyContent: 'center', +}); + +export const heroDescriptionIcon = style({ + height: '192px', + marginLeft: '-16px', + width: '192px', +}); + +export const heroDescription = style({ + color: '#76a5ce', + fontFamily: 'Karla Bold, sans-serif', + fontSize: '36px', + fontWeight: 600, +}); + +export const authSection = style({ + alignItems: 'center', + display: 'flex', + flexFlow: 'column', + justifyContent: 'center', +}); + +export const existingAccountText = style({ + color: '#ddefff', + fontFamily: 'Karla Regular, sans-serif', + fontSize: '16px', + fontWeight: 400, + marginBottom: '8px', +}); diff --git a/projects/app-web/app/routes/_index.test.tsx b/projects/app-web/app/routes/_index.test.tsx index 010b5a2..4999bec 100644 --- a/projects/app-web/app/routes/_index.test.tsx +++ b/projects/app-web/app/routes/_index.test.tsx @@ -1,21 +1,46 @@ import { render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { createRemixStub } from '@remix-run/testing'; -import IndexRoute, { loader } from './_index'; +import { Index } from './_index'; +import { Routes } from '../types'; + +function ExpectedRoute() { + return 'Auth0'; +} function setupTest() { - const IndexRouteStub = createRemixStub([ - { - path: '/', - Component: IndexRoute, - loader, - }, + const user = userEvent.setup(); + + const IndexStub = createRemixStub([ + { path: '/', Component: Index }, + { path: Routes.AuthAuth0, Component: ExpectedRoute, action: () => null }, ]); - render(); + render(); + + return { user }; } -test('it renders a greeting', async () => { - setupTest(); +test('it renders a sign up button that navigates to auth0 when clicked', async () => { + const { user } = setupTest(); + + const signUpButton = await screen.findByRole('button', { name: 'Sign up' }); + + await waitFor(() => user.click(signUpButton)); + + const loggedOutMessage = await screen.findByText('Auth0'); + + expect(loggedOutMessage).toBeInTheDocument(); +}); + +test('it renders a log in button that navigates to auth0 when clicked', async () => { + const { user } = setupTest(); + + const logInButton = await screen.findByRole('button', { name: 'Log in' }); + + await waitFor(() => user.click(logInButton)); + + const loggedOutMessage = await screen.findByText('Auth0'); - await waitFor(() => screen.findByText('hello, world')); + expect(loggedOutMessage).toBeInTheDocument(); }); diff --git a/projects/app-web/app/routes/_index.tsx b/projects/app-web/app/routes/_index.tsx index 7340bb5..f46dd28 100644 --- a/projects/app-web/app/routes/_index.tsx +++ b/projects/app-web/app/routes/_index.tsx @@ -1,19 +1,6 @@ -import { useLoaderData, json } from '@remix-run/react'; import { MetaFunction } from '@remix-run/node'; -import { client } from '../client'; -import { graphql } from '../gql'; - -const GetHelloWorld = graphql(/* GraphQL */ ` - query GetHelloWorld { - hello - } -`); - -export const loader = async () => { - const { hello } = await client.request(GetHelloWorld); - - return json({ hello }); -}; +import { LogInButton, SignUpButton } from '../components'; +import * as styles from './_index.css.ts'; export const meta: MetaFunction = () => [ { @@ -22,8 +9,40 @@ export const meta: MetaFunction = () => [ }, ]; -export default function Index() { - const { hello } = useLoaderData(); - - return
{hello}
; +export function Index() { + return ( + <> +
+
+

+ Chron + Chrononomicon brand icon + nomicon +

+ Book icon +

+ Create immersive worlds and run your tabletop chrononomicons with + ease. +

+
+
+
+ + + Already have an account? + + +
+ + ); } + +export default Index; diff --git a/projects/app-web/app/routes/auth+/auth0.test.tsx b/projects/app-web/app/routes/auth+/auth0.test.tsx new file mode 100644 index 0000000..ee4ef3e --- /dev/null +++ b/projects/app-web/app/routes/auth+/auth0.test.tsx @@ -0,0 +1,34 @@ +import { redirect } from '@remix-run/node'; +import { loader, action } from './auth0'; + +const { authenticateMock } = vi.hoisted(() => ({ + authenticateMock: vi.fn(), +})); + +vi.mock('../../authenticator.server', async (importOriginal) => { + const original = + await importOriginal(); + + const authenticator = { + ...original.authenticator, + authenticate: authenticateMock, + }; + + return { authenticator }; +}); + +test('it authenticates the user', async () => { + const request = new Request('https://test.com/'); + const params = {}; + const context = {}; + + await action({ request, params, context }); + + expect(authenticateMock).toBeCalled(); +}); + +test('it redirects to the login page', () => { + const response = loader(); + + expect(response).toEqual(redirect('/login')); +}); diff --git a/projects/app-web/app/routes/auth+/auth0.tsx b/projects/app-web/app/routes/auth+/auth0.tsx new file mode 100644 index 0000000..6383c86 --- /dev/null +++ b/projects/app-web/app/routes/auth+/auth0.tsx @@ -0,0 +1,10 @@ +import { ActionFunctionArgs, redirect } from '@remix-run/node'; +import { authenticator } from '../../authenticator.server'; + +export const loader = () => redirect('/login'); + +export const action = async ({ request }: ActionFunctionArgs) => { + return authenticator.authenticate('auth0', request, { + throwOnError: true, + }); +}; diff --git a/projects/app-web/app/routes/auth+/callback.test.tsx b/projects/app-web/app/routes/auth+/callback.test.tsx new file mode 100644 index 0000000..709f1c5 --- /dev/null +++ b/projects/app-web/app/routes/auth+/callback.test.tsx @@ -0,0 +1,29 @@ +import { redirect } from '@remix-run/node'; +import { loader } from './callback'; + +const { authenticateMock } = vi.hoisted(() => ({ + authenticateMock: vi.fn(async () => ({ id: 'test_id' })), +})); + +vi.mock('../../authenticator.server', async (importOriginal) => { + const original = + await importOriginal(); + + const authenticator = { + ...original.authenticator, + authenticate: authenticateMock, + }; + + return { authenticator }; +}); + +test('it redirects to the dashboard with the correct headers', async () => { + const request = new Request('https://test.com/'); + const params = {}; + const context = {}; + + const response = await loader({ request, params, context }); + + expect(request.headers.get('set-cookie')).toBeNull(); + expect(response).toEqual(redirect('/dashboard')); +}); diff --git a/projects/app-web/app/routes/auth+/callback.tsx b/projects/app-web/app/routes/auth+/callback.tsx new file mode 100644 index 0000000..0ddf4dd --- /dev/null +++ b/projects/app-web/app/routes/auth+/callback.tsx @@ -0,0 +1,37 @@ +import { LoaderFunctionArgs, redirect } from '@remix-run/node'; +import { AuthorizationError } from 'remix-auth'; +import { authenticator } from '../../authenticator.server'; +import { sessionStorage } from '../../session-storage.server'; + +export const loader = async ({ request }: LoaderFunctionArgs) => { + try { + const user = await authenticator.authenticate('auth0', request, { + throwOnError: true, + }); + + const session = await sessionStorage.getSession( + request.headers.get('cookie'), + ); + + session.set(authenticator.sessionKey, user.id); + + const headers = new Headers({ + 'set-cookie': await sessionStorage.commitSession(session), + }); + + return redirect('/dashboard', { headers }); + } catch (error: unknown) { + if (error instanceof Response) { + return error; + } + + // TODO(#15): handle auth errors + if (error instanceof AuthorizationError) { + // TODO(#16): capture via Sentry + throw error; + } + + // TODO(#16): capture via Sentry + throw error; + } +}; diff --git a/projects/app-web/app/routes/auth+/logout.test.tsx b/projects/app-web/app/routes/auth+/logout.test.tsx new file mode 100644 index 0000000..ac34be4 --- /dev/null +++ b/projects/app-web/app/routes/auth+/logout.test.tsx @@ -0,0 +1,25 @@ +import { redirect } from '@remix-run/node'; +import { action } from './logout'; +import { sessionStorage } from '../../session-storage.server'; +import { authenticator } from '../../authenticator.server'; + +test('it redirects to the logout URL with the correct headers', async () => { + const request = new Request('https://test.com/'); + const params = {}; + const context = {}; + + request.headers.set('cookie', 'session=1'); + + const session = await sessionStorage.getSession('session=1'); + + session.set(authenticator.sessionKey, '1'); + + const response = await action({ request, params, context }); + + expect(request.headers.get('set-cookie')).toBeNull(); + expect(response).toEqual( + redirect( + 'https://auth0.com/v2/logout?client_id=auth0_client_id&returnTo=https%3A%2F%2Ftest.com', + ), + ); +}); diff --git a/projects/app-web/app/routes/auth+/logout.ts b/projects/app-web/app/routes/auth+/logout.ts new file mode 100644 index 0000000..1b69a1f --- /dev/null +++ b/projects/app-web/app/routes/auth+/logout.ts @@ -0,0 +1,19 @@ +import { ActionFunctionArgs, redirect } from '@remix-run/node'; +import { sessionStorage } from '../../session-storage.server'; + +export const action = async ({ request }: ActionFunctionArgs) => { + const logoutURL = new URL(import.meta.env.VITE_AUTH0_LOGOUT_URL); + + logoutURL.searchParams.set('client_id', import.meta.env.VITE_AUTH0_CLIENT_ID); + logoutURL.searchParams.set('returnTo', import.meta.env.VITE_AUTH0_RETURN_URL); + + const session = await sessionStorage.getSession( + request.headers.get('cookie'), + ); + + return redirect(logoutURL.toString(), { + headers: { + 'set-cookie': await sessionStorage.destroySession(session), + }, + }); +}; diff --git a/projects/app-web/app/routes/dashboard.test.tsx b/projects/app-web/app/routes/dashboard.test.tsx new file mode 100644 index 0000000..59e99ed --- /dev/null +++ b/projects/app-web/app/routes/dashboard.test.tsx @@ -0,0 +1,59 @@ +import { render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { createRemixStub } from '@remix-run/testing'; +import { Dashboard, loader } from './dashboard'; +import { Routes } from '../types'; +import { db } from '../mocks/db'; +import { client } from '../client'; +import { drop } from '@mswjs/data'; + +function ExpectedRoute() { + return 'Logged out'; +} + +const MOCK_TOKEN = `eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ0ZXN0IiwiaWF0IjoxNzE0NDA5NTMxLCJleHAiOjE3NDU5NDU1MzEsImF1ZCI6Ind3dy50ZXN0LmNvbSIsInN1YiI6ImF1dGgwfHRlc3RfaWQifQ.Drta5B74QNaMfKpZtFyCde5YG-e1eTU6tySwknytnig`; + +function setupTest() { + const user = userEvent.setup(); + + const DashboardStub = createRemixStub([ + { path: '/', Component: Dashboard, loader }, + { path: Routes.AuthLogout, Component: ExpectedRoute, action: () => null }, + ]); + + client.setHeader('authorization', MOCK_TOKEN); + db.user.create({ auth0ID: 'auth0|test_id', name: 'Test User' }); + + render(); + + return { user }; +} + +function teardownTest() { + drop(db); + client.setHeader('authorization', ''); +} + +test('it renders a greeting from the server', async () => { + setupTest(); + + const greeting = await screen.findByText('Hello, Test User'); + + expect(greeting).toBeInTheDocument(); + + teardownTest(); +}); + +test('it renders a log out button that navigates to the logout route when clicked', async () => { + const { user } = setupTest(); + + const logOutButton = await screen.findByRole('button', { name: 'Log out' }); + + await waitFor(() => user.click(logOutButton)); + + const loggedOutMessage = await screen.findByText('Logged out'); + + expect(loggedOutMessage).toBeInTheDocument(); + + teardownTest(); +}); diff --git a/projects/app-web/app/routes/dashboard.tsx b/projects/app-web/app/routes/dashboard.tsx new file mode 100644 index 0000000..c9abfd7 --- /dev/null +++ b/projects/app-web/app/routes/dashboard.tsx @@ -0,0 +1,40 @@ +import { useLoaderData, json } from '@remix-run/react'; +import { MetaFunction } from '@remix-run/node'; +import { client } from '../client'; +import { graphql } from '../gql'; +import { LogOutButton } from '../components'; + +const GetCurrentUser = graphql(/* GraphQL */ ` + query GetCurrentUser { + getCurrentUser { + id + name + } + } +`); + +export const loader = async () => { + const { getCurrentUser } = await client.request(GetCurrentUser); + + return json({ user: getCurrentUser }); +}; + +export const meta: MetaFunction = () => [ + { + title: '', + description: '', + }, +]; + +export function Dashboard() { + const { user } = useLoaderData(); + + return ( + <> +
Hello, {user.name}
+ + + ); +} + +export default Dashboard; diff --git a/projects/app-web/app/session-storage.server.ts b/projects/app-web/app/session-storage.server.ts new file mode 100644 index 0000000..6e63632 --- /dev/null +++ b/projects/app-web/app/session-storage.server.ts @@ -0,0 +1,31 @@ +import invariant from 'tiny-invariant'; +import { createCookieSessionStorage } from '@remix-run/node'; + +type SessionData = { + [key: string]: string; +}; + +type SessionFlashData = { + error: string; +}; + +invariant(process.env.SESSION_SECRET, '$SESSION_SECRET is required'); + +export const sessionStorage = createCookieSessionStorage< + SessionData, + SessionFlashData +>({ + cookie: { + name: '__session', + domain: import.meta.env.VITE_DOMAIN, + httpOnly: true, + maxAge: 60, + path: '/', + sameSite: 'lax', + secrets: [process.env.SESSION_SECRET], + + // only use secure cookies in prod because Safari doesn't allow setting secure cookies + // for HTTP requests i.e. localhost which breaks our e2e + secure: import.meta.env.PROD, + }, +}); diff --git a/projects/app-web/app/styles/fonts.css b/projects/app-web/app/styles/fonts.css new file mode 100644 index 0000000..ff1034c --- /dev/null +++ b/projects/app-web/app/styles/fonts.css @@ -0,0 +1,44 @@ +@font-face { + font-family: 'Josefin Sans Medium'; + src: + url('/assets/fonts/josefin-sans-semi-bold.woff2') format('woff2'), + url('/assets/fonts/josefin-sans-semi-bold.woff') format('woff'); + font-weight: 500; + font-style: normal; +} + +@font-face { + font-family: 'Josefin Slab Bold'; + src: + url('/assets/fonts/josefin-slab-bold.woff2') format('woff2'), + url('/assets/fonts/josefin-slab-bold.woff') format('woff'); + font-weight: 700; + font-style: normal; +} + +@font-face { + font-family: 'Karla Light'; + src: + url('/assets/fonts/karla-light.woff2') format('woff2'), + url('/assets/fonts/karla-light.woff') format('woff'); + font-weight: 200; + font-style: normal; +} + +@font-face { + font-family: 'Karla Regular'; + src: + url('/assets/fonts/karla-regular.woff2') format('woff2'), + url('/assets/fonts/karla-regular.woff') format('woff'); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family: 'Karla Bold'; + src: + url('/assets/fonts/karla-bold.woff2') format('woff2'), + url('/assets/fonts/karla-bold.woff') format('woff'); + font-weight: 600; + font-style: normal; +} diff --git a/projects/app-web/app/types.ts b/projects/app-web/app/types.ts new file mode 100644 index 0000000..e36ecd8 --- /dev/null +++ b/projects/app-web/app/types.ts @@ -0,0 +1,9 @@ +export enum Routes { + Index = '/', + + AuthAuth0 = '/auth/auth0', + AuthCallback = '/auth/callback', + AuthLogout = '/auth/logout', + + Dashboard = '/dashboard', +} diff --git a/projects/app-web/app/utils/index.ts b/projects/app-web/app/utils/index.ts new file mode 100644 index 0000000..e91593e --- /dev/null +++ b/projects/app-web/app/utils/index.ts @@ -0,0 +1 @@ +export { isMutationError } from './is-mutation-error'; diff --git a/projects/app-web/app/utils/is-mutation-error.test.ts b/projects/app-web/app/utils/is-mutation-error.test.ts new file mode 100644 index 0000000..4303427 --- /dev/null +++ b/projects/app-web/app/utils/is-mutation-error.test.ts @@ -0,0 +1,21 @@ +import { isMutationError } from './is-mutation-error'; + +test('it returns true if the provided data is a mutation error', () => { + const result = isMutationError({ + error: { + message: 'Test error', + }, + }); + + expect(result).toBeTrue(); +}); + +test('it returns false if the provided data is not a mutation error', () => { + const result = isMutationError({ + data: { + test: true, + }, + }); + + expect(result).toBeFalse(); +}); diff --git a/projects/app-web/app/utils/is-mutation-error.ts b/projects/app-web/app/utils/is-mutation-error.ts new file mode 100644 index 0000000..c8f8b48 --- /dev/null +++ b/projects/app-web/app/utils/is-mutation-error.ts @@ -0,0 +1,7 @@ +import { MutationErrorPayload } from '../gql/graphql'; + +export function isMutationError( + payload: T | MutationErrorPayload, +): payload is MutationErrorPayload { + return 'error' in payload; +} diff --git a/projects/app-web/app/vite-env.d.ts b/projects/app-web/app/vite-env.d.ts new file mode 100644 index 0000000..48b7281 --- /dev/null +++ b/projects/app-web/app/vite-env.d.ts @@ -0,0 +1,18 @@ +/// + +interface ImportMetaEnv { + readonly VITE_API_URL: string; + + readonly VITE_AUTH0_AUDIENCE: string; + readonly VITE_AUTH0_CALLBACK_URL: string; + readonly VITE_AUTH0_CLIENT_ID: string; + readonly VITE_AUTH0_DOMAIN: string; + readonly VITE_AUTH0_LOGOUT_URL: string; + readonly VITE_AUTH0_RETURN_URL: string; + + readonly VITE_ENABLE_MSW: string; +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} diff --git a/projects/app-web/app/vitest.d.ts b/projects/app-web/app/vitest.d.ts new file mode 100644 index 0000000..fa5faba --- /dev/null +++ b/projects/app-web/app/vitest.d.ts @@ -0,0 +1,13 @@ +import * as matchers from '@testing-library/jest-dom/matchers'; +import { expect } from 'vitest'; + +expect.extend(matchers); + +// vitest instead `@vitest/expect` +declare module 'vitest' { + interface JestAssertion + extends matchers.TestingLibraryMatchers< + ReturnType, + T + > {} +} diff --git a/projects/app-web/package.json b/projects/app-web/package.json index a860b99..679416e 100644 --- a/projects/app-web/package.json +++ b/projects/app-web/package.json @@ -11,34 +11,50 @@ "@hono/node-server": "1.11.0", "@remix-run/node": "2.9.1", "@remix-run/react": "2.9.1", + "@remix-run/server-runtime": "2.9.1", + "@vanilla-extract/css": "1.15.1", + "@vanilla-extract/sprinkles": "1.6.1", "graphql-request": "6.1.0", "hono": "4.2.4", "isbot": "4", "msw": "2.2.14", "react": "18.2.0", "react-dom": "18.2.0", - "remix-hono": "0.0.16" + "remix-auth": "3.6.0", + "remix-auth-auth0": "1.10.0", + "remix-auth-oauth2": "1.11.2", + "remix-hono": "0.0.16", + "tiny-invariant": "1.3.3" }, "devDependencies": { "@graphql-typed-document-node/core": "3.2.0", + "@mswjs/data": "0.16.1", "@nx/vite": "18.3.3", + "@paralleldrive/cuid2": "2.2.2", "@remix-run/dev": "2.9.1", "@remix-run/testing": "2.9.1", + "@testing-library/dom": "10.0.0", "@testing-library/jest-dom": "6.4.2", "@testing-library/react": "14.3.0", + "@testing-library/user-event": "14.5.2", "@types/node": "20.12.7", "@types/react": "18.2.75", "@types/react-dom": "18.2.24", + "@vanilla-extract/vite-plugin": "4.0.9", "@vitejs/plugin-react": "4.2.1", + "@vitest/expect": "1.5.2", "eslint-plugin-jsx-a11y": "6.8.0", "eslint-plugin-react": "7.34.1", "eslint-plugin-react-hooks": "4.6.0", "graphql": "16.8.1", "jest-extended": "4.0.2", + "jwt-decode": "4.0.0", + "remix-flat-routes": "0.6.4", "tslib": "2.6.2", "typescript": "5.4.5", + "uuid": "9.0.1", "vite": "5.2.10", - "vitest": "1.5.1" + "vitest": "1.5.2" }, "engines": { "node": "20.12.2" diff --git a/projects/app-web/public/assets/fonts/josefin-sans-semi-bold.woff b/projects/app-web/public/assets/fonts/josefin-sans-semi-bold.woff new file mode 100644 index 0000000..e29b5b1 Binary files /dev/null and b/projects/app-web/public/assets/fonts/josefin-sans-semi-bold.woff differ diff --git a/projects/app-web/public/assets/fonts/josefin-sans-semi-bold.woff2 b/projects/app-web/public/assets/fonts/josefin-sans-semi-bold.woff2 new file mode 100644 index 0000000..d438cd3 Binary files /dev/null and b/projects/app-web/public/assets/fonts/josefin-sans-semi-bold.woff2 differ diff --git a/projects/app-web/public/assets/fonts/josefin-slab-bold.woff b/projects/app-web/public/assets/fonts/josefin-slab-bold.woff new file mode 100644 index 0000000..6fc3d99 Binary files /dev/null and b/projects/app-web/public/assets/fonts/josefin-slab-bold.woff differ diff --git a/projects/app-web/public/assets/fonts/josefin-slab-bold.woff2 b/projects/app-web/public/assets/fonts/josefin-slab-bold.woff2 new file mode 100644 index 0000000..780717d Binary files /dev/null and b/projects/app-web/public/assets/fonts/josefin-slab-bold.woff2 differ diff --git a/projects/app-web/public/assets/fonts/karla-bold.woff b/projects/app-web/public/assets/fonts/karla-bold.woff new file mode 100644 index 0000000..f956988 Binary files /dev/null and b/projects/app-web/public/assets/fonts/karla-bold.woff differ diff --git a/projects/app-web/public/assets/fonts/karla-bold.woff2 b/projects/app-web/public/assets/fonts/karla-bold.woff2 new file mode 100644 index 0000000..586b473 Binary files /dev/null and b/projects/app-web/public/assets/fonts/karla-bold.woff2 differ diff --git a/projects/app-web/public/assets/fonts/karla-light.woff b/projects/app-web/public/assets/fonts/karla-light.woff new file mode 100644 index 0000000..167c985 Binary files /dev/null and b/projects/app-web/public/assets/fonts/karla-light.woff differ diff --git a/projects/app-web/public/assets/fonts/karla-light.woff2 b/projects/app-web/public/assets/fonts/karla-light.woff2 new file mode 100644 index 0000000..5bec01b Binary files /dev/null and b/projects/app-web/public/assets/fonts/karla-light.woff2 differ diff --git a/projects/app-web/public/assets/fonts/karla-regular.woff b/projects/app-web/public/assets/fonts/karla-regular.woff new file mode 100644 index 0000000..84ef93a Binary files /dev/null and b/projects/app-web/public/assets/fonts/karla-regular.woff differ diff --git a/projects/app-web/public/assets/fonts/karla-regular.woff2 b/projects/app-web/public/assets/fonts/karla-regular.woff2 new file mode 100644 index 0000000..dd48387 Binary files /dev/null and b/projects/app-web/public/assets/fonts/karla-regular.woff2 differ diff --git a/projects/app-web/public/assets/images/brand-icon-dark.png b/projects/app-web/public/assets/images/brand-icon-dark.png new file mode 100644 index 0000000..623fbe8 Binary files /dev/null and b/projects/app-web/public/assets/images/brand-icon-dark.png differ diff --git a/projects/app-web/public/assets/images/brand-icon-light.png b/projects/app-web/public/assets/images/brand-icon-light.png new file mode 100644 index 0000000..8f8e946 Binary files /dev/null and b/projects/app-web/public/assets/images/brand-icon-light.png differ diff --git a/projects/app-web/public/assets/images/icon-book.png b/projects/app-web/public/assets/images/icon-book.png new file mode 100644 index 0000000..94441c3 Binary files /dev/null and b/projects/app-web/public/assets/images/icon-book.png differ diff --git a/projects/app-web/tsconfig.json b/projects/app-web/tsconfig.json index bac1b7c..ac7ec40 100644 --- a/projects/app-web/tsconfig.json +++ b/projects/app-web/tsconfig.json @@ -4,6 +4,8 @@ "allowJs": false, "esModuleInterop": false, "allowSyntheticDefaultImports": true, + "noEmit": true, + "allowImportingTsExtensions": true, "strict": true, "types": ["vitest", "vite/client"] }, diff --git a/projects/app-web/vite.config.ts b/projects/app-web/vite.config.ts index 62930f1..30f236b 100755 --- a/projects/app-web/vite.config.ts +++ b/projects/app-web/vite.config.ts @@ -6,6 +6,8 @@ import { vitePlugin as remix } from '@remix-run/dev'; import { installGlobals } from '@remix-run/node'; import react from '@vitejs/plugin-react'; import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin'; +import { flatRoutes } from 'remix-flat-routes'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @@ -37,8 +39,27 @@ export default defineConfig({ react(), !process.env.VITEST && remix({ - ignoredRouteFiles: ['**/*.test.*'], + ignoredRouteFiles: ['**/*'], + routes: async (defineRoutes) => { + return flatRoutes('routes', defineRoutes, { + // because `nx` builds our project graph from the workspace root, we need to + // adjust the appDir to the correct location of the app-web folder for that case + appDir: + process.cwd() === __dirname ? 'app' : 'projects/app-web/app', + ignoredRouteFiles: [ + '.*', + '**/*.css', + '**/*.test.{ts,tsx}', + '**/__*.*', + // this allows server files to be colocated with routes. use escape brackets to user 'server' or 'client' + // in the filename ex. my-route.[server].tsx + '**/*.server.*', + '**/*.client.*', + ], + }); + }, }), + vanillaExtractPlugin(), nxViteTsPaths(), ], @@ -47,7 +68,13 @@ export default defineConfig({ setupFiles: ['vitest.setup.ts'], globals: true, environment: 'happy-dom', - env: loadEnv('test', process.cwd(), ''), + env: { + ...loadEnv('test', process.cwd(), ''), + + // set secret env vars here so we don't need to load a `.local` env file in tests + SESSION_SECRET: 'secret', + AUTH0_CLIENT_SECRET: 'secret', + }, include: ['app/**/*.test.{ts,tsx}'], reporters: ['default'], coverage: { diff --git a/projects/app-web/vitest.setup.ts b/projects/app-web/vitest.setup.ts index 79d3e28..f1ae48d 100644 --- a/projects/app-web/vitest.setup.ts +++ b/projects/app-web/vitest.setup.ts @@ -1,4 +1,4 @@ -import '@testing-library/jest-dom/matchers'; +import '@testing-library/jest-dom/vitest'; import * as matchers from 'jest-extended'; // import { installGlobals } from '@remix-run/node'; import { server } from './app/mocks/node'; diff --git a/projects/db-postgres/.env.development b/projects/db-postgres/.env.development index 61681c5..2152254 100644 --- a/projects/db-postgres/.env.development +++ b/projects/db-postgres/.env.development @@ -1,2 +1,2 @@ NODE_ENV=development -POSTGRES_URL="postgresql://admin:password@localhost:5433/campaign" \ No newline at end of file +POSTGRES_URL="postgresql://admin:password@localhost:5433/chrononomicon" \ No newline at end of file diff --git a/projects/db-postgres/drizzle.config.ts b/projects/db-postgres/drizzle.config.ts index 3019352..bd2d115 100644 --- a/projects/db-postgres/drizzle.config.ts +++ b/projects/db-postgres/drizzle.config.ts @@ -1,7 +1,7 @@ import type { Config } from 'drizzle-kit'; export default { - schema: './src/schema.ts', + schema: '../lib-postgres-schema/src/index.ts', out: './migrations', driver: 'pg', } satisfies Config; diff --git a/projects/db-postgres/fly.toml b/projects/db-postgres/fly.toml index 84e594b..227da26 100644 --- a/projects/db-postgres/fly.toml +++ b/projects/db-postgres/fly.toml @@ -1,4 +1,4 @@ -app = 'campaign-pg' +app = 'chrononomicon-pg' primary_region = 'syd' [env] @@ -58,6 +58,11 @@ primary_region = 'syd' timeout = '10s' path = '/flycheck/vm' +[[vm]] + memory = '1gb' + cpu_kind = 'shared' + cpus = 1 + [[metrics]] port = 9187 path = '/metrics' diff --git a/projects/db-postgres/migrations/0001_yummy_prodigy.sql b/projects/db-postgres/migrations/0001_yummy_prodigy.sql new file mode 100644 index 0000000..8ae8d9c --- /dev/null +++ b/projects/db-postgres/migrations/0001_yummy_prodigy.sql @@ -0,0 +1,7 @@ +ALTER TABLE "users" ALTER COLUMN "email" SET NOT NULL;--> statement-breakpoint +ALTER TABLE "users" ALTER COLUMN "email_verified" SET NOT NULL;--> statement-breakpoint +ALTER TABLE "users" ALTER COLUMN "name" SET NOT NULL;--> statement-breakpoint +ALTER TABLE "users" ALTER COLUMN "created_at" SET NOT NULL;--> statement-breakpoint +ALTER TABLE "users" ADD COLUMN "auth0_id" text NOT NULL;--> statement-breakpoint +ALTER TABLE "users" ADD COLUMN "first_name" text;--> statement-breakpoint +ALTER TABLE "users" ADD CONSTRAINT "users_auth0_id_unique" UNIQUE("auth0_id"); \ No newline at end of file diff --git a/projects/db-postgres/migrations/meta/0001_snapshot.json b/projects/db-postgres/migrations/meta/0001_snapshot.json new file mode 100644 index 0000000..8bfae7f --- /dev/null +++ b/projects/db-postgres/migrations/meta/0001_snapshot.json @@ -0,0 +1,79 @@ +{ + "id": "b9cd3f67-6398-4e1b-bf34-56edd9c360b7", + "prevId": "ef8f887a-ba0d-4635-96de-08a6d58fb7d7", + "version": "5", + "dialect": "pg", + "tables": { + "users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "auth0_id": { + "name": "auth0_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "email_verified": { + "name": "email_verified", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "first_name": { + "name": "first_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "users_auth0_id_unique": { + "name": "users_auth0_id_unique", + "nullsNotDistinct": false, + "columns": ["auth0_id"] + }, + "users_email_unique": { + "name": "users_email_unique", + "nullsNotDistinct": false, + "columns": ["email"] + } + } + } + }, + "enums": {}, + "schemas": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/projects/db-postgres/migrations/meta/_journal.json b/projects/db-postgres/migrations/meta/_journal.json index 5a0a6fa..704f8c0 100644 --- a/projects/db-postgres/migrations/meta/_journal.json +++ b/projects/db-postgres/migrations/meta/_journal.json @@ -8,6 +8,13 @@ "when": 1714110253584, "tag": "0000_careful_wrecking_crew", "breakpoints": true + }, + { + "idx": 1, + "version": "5", + "when": 1714230768356, + "tag": "0001_yummy_prodigy", + "breakpoints": true } ] } diff --git a/projects/db-postgres/src/db.ts b/projects/db-postgres/src/db.ts index 54f0533..6f85de2 100644 --- a/projects/db-postgres/src/db.ts +++ b/projects/db-postgres/src/db.ts @@ -1,5 +1,5 @@ import { drizzle } from 'drizzle-orm/postgres-js'; -import * as schema from '@campaign/postgres-schema'; +import * as schema from '@chrononomicon/postgres-schema'; import { pg } from './pg'; export const db = drizzle(pg, { schema }); diff --git a/projects/db-postgres/src/types.ts b/projects/db-postgres/src/types.ts index 554ffbb..b332daf 100755 --- a/projects/db-postgres/src/types.ts +++ b/projects/db-postgres/src/types.ts @@ -1,5 +1,5 @@ import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; -import * as schema from '@campaign/postgres-schema'; +import * as schema from '@chrononomicon/postgres-schema'; export type Env = { POSTGRES_URL: string; diff --git a/projects/lib-postgres-schema/src/users.ts b/projects/lib-postgres-schema/src/users.ts index 8f70b1c..ea206f6 100644 --- a/projects/lib-postgres-schema/src/users.ts +++ b/projects/lib-postgres-schema/src/users.ts @@ -1,9 +1,11 @@ import { boolean, pgTable, text, timestamp } from 'drizzle-orm/pg-core'; export const users = pgTable('users', { - id: text('id').primaryKey(), - email: text('email').unique(), - emailVerified: boolean('email_verified'), - name: text('name'), - createdAt: timestamp('created_at').defaultNow(), + id: text('id').notNull().primaryKey(), + auth0ID: text('auth0_id').notNull().unique(), + email: text('email').notNull().unique(), + emailVerified: boolean('email_verified').notNull(), + name: text('name').notNull(), + firstName: text('first_name'), + createdAt: timestamp('created_at').notNull().defaultNow(), }); diff --git a/projects/lib-postgres-schema/vitest.config.ts b/projects/lib-postgres-schema/vitest.config.ts index 21801bf..6f09fb6 100755 --- a/projects/lib-postgres-schema/vitest.config.ts +++ b/projects/lib-postgres-schema/vitest.config.ts @@ -1,6 +1,8 @@ import { defineConfig } from 'vitest/config'; +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; export default defineConfig({ + plugins: [nxViteTsPaths()], test: { globals: true, environment: 'node', diff --git a/projects/lib-service-test-utils/src/postgres-test-utils.ts b/projects/lib-service-test-utils/src/postgres-test-utils.ts index 5331468..2ab18d1 100644 --- a/projects/lib-service-test-utils/src/postgres-test-utils.ts +++ b/projects/lib-service-test-utils/src/postgres-test-utils.ts @@ -6,8 +6,8 @@ import { PostgresJsDatabase, drizzle } from 'drizzle-orm/postgres-js'; import { migrate } from 'drizzle-orm/postgres-js/migrator'; import path from 'node:path'; import postgres, { Sql } from 'postgres'; -import cuid from 'cuid'; -import * as schema from '@campaign/postgres-schema'; +import { createId } from '@paralleldrive/cuid2'; +import * as schema from '@chrononomicon/postgres-schema'; const TEST_TEMPLATE_DB = 'test_template'; const TEST_DB_USER = 'test'; @@ -41,7 +41,7 @@ export const PostgresTestUtils: IPostgresTestUtils = { 'postgres', ); - const testDBID = cuid(); + const testDBID = createId(); // create a new DB for this test from our pre-migrated template DB // for some reason we need to jump into unsafe mode otherwise `postgres` wont inline our params diff --git a/projects/lib-service-test-utils/vitest.config.ts b/projects/lib-service-test-utils/vitest.config.ts index d81ac80..60ead0f 100755 --- a/projects/lib-service-test-utils/vitest.config.ts +++ b/projects/lib-service-test-utils/vitest.config.ts @@ -1,6 +1,8 @@ import { defineConfig } from 'vitest/config'; +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; export default defineConfig({ + plugins: [nxViteTsPaths()], test: { globals: true, environment: 'node', diff --git a/projects/lib-service-utils/src/context-utils/get-user-from-context.ts b/projects/lib-service-utils/src/context-utils/get-user-from-context.ts deleted file mode 100644 index 4882f73..0000000 --- a/projects/lib-service-utils/src/context-utils/get-user-from-context.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Context } from 'hono'; -import { HTTPException } from 'hono/http-exception'; - -type User = { - id: string; - email: string; - emailVerified: boolean; - name: string; -}; - -export function getUserFromContext(ctx: Context): User { - const tokenPayload = ctx.get('jwtPayload'); - - if (!tokenPayload) { - throw new HTTPException(401, { message: 'Unauthorized' }); - } - - return { - id: tokenPayload.sub, // TODO: what does this look like? can we pull a clean user ID? - email: tokenPayload.email, - emailVerified: tokenPayload.email_verified === 'true', - name: tokenPayload.name, - }; -} diff --git a/projects/lib-service-utils/src/index.ts b/projects/lib-service-utils/src/index.ts index 453e789..5668291 100644 --- a/projects/lib-service-utils/src/index.ts +++ b/projects/lib-service-utils/src/index.ts @@ -1,5 +1,6 @@ -export { getTokenFromContext } from './context-utils/get-token-from-context'; -export { getUserFromContext } from './context-utils/get-user-from-context'; -export { createTokenVerifier } from './context-utils/create-token-verifier'; +export { createTokenVerifier } from './utils/create-token-verifier'; +export { getTokenFromContext } from './utils/get-token-from-context'; +export { getTokenFromHeader } from './utils/get-token-from-header'; +export { getUserIDFromContext } from './utils/get-user-id-from-context'; export { createAuthMiddleware } from './middleware/create-auth-middleware'; diff --git a/projects/lib-service-utils/src/middleware/create-auth-middleware.test.ts b/projects/lib-service-utils/src/middleware/create-auth-middleware.test.ts index e66f392..65ace52 100644 --- a/projects/lib-service-utils/src/middleware/create-auth-middleware.test.ts +++ b/projects/lib-service-utils/src/middleware/create-auth-middleware.test.ts @@ -61,6 +61,23 @@ test('it returns a 401 if no token is provided', async () => { expect(res.status).toBe(401); }); +test('it rejects an invalid authorization header', async () => { + const { app } = setupTest(); + + const req = new Request('http://localhost/test'); + + req.headers.set('Authorization', `Bearer`); + + const res = await app.request(req); + + expect(testHandlerSpy).not.toHaveBeenCalled(); + expect(await res.text()).toBe('Unauthorized'); + expect(res.status).toBe(401); + expect(res.headers.get('www-authenticate')).toMatchInlineSnapshot( + `"Bearer realm="http://localhost/test",error="invalid_request",error_description="invalid authorization header structure""`, + ); +}); + test('it rejects an invalid token', async () => { const { app } = setupTest(); diff --git a/projects/lib-service-utils/src/middleware/create-auth-middleware.ts b/projects/lib-service-utils/src/middleware/create-auth-middleware.ts index f7b01ac..c74e4f7 100644 --- a/projects/lib-service-utils/src/middleware/create-auth-middleware.ts +++ b/projects/lib-service-utils/src/middleware/create-auth-middleware.ts @@ -3,7 +3,8 @@ import { HTTPException } from 'hono/http-exception'; import { createTokenVerifier, TokenVerifierConfig, -} from '../context-utils/create-token-verifier'; +} from '../utils/create-token-verifier.js'; +import { getTokenFromHeader } from '../utils/get-token-from-header'; type AuthMiddlewareConfig = { tokenVerifierConfig: TokenVerifierConfig; @@ -33,9 +34,9 @@ export function createAuthMiddleware(config: AuthMiddlewareConfig) { }); } - const parts = authHeader.split(/\s+/); + const token = getTokenFromHeader(authHeader); - if (parts.length !== 2) { + if (!token) { const errorDescription = 'invalid authorization header structure'; throw new HTTPException(401, { @@ -48,8 +49,6 @@ export function createAuthMiddleware(config: AuthMiddlewareConfig) { }); } - const [, token] = parts; - try { const payload = await verifyToken(token); diff --git a/projects/lib-service-utils/src/context-utils/create-token-verifier.test.ts b/projects/lib-service-utils/src/utils/create-token-verifier.test.ts similarity index 100% rename from projects/lib-service-utils/src/context-utils/create-token-verifier.test.ts rename to projects/lib-service-utils/src/utils/create-token-verifier.test.ts diff --git a/projects/lib-service-utils/src/context-utils/create-token-verifier.ts b/projects/lib-service-utils/src/utils/create-token-verifier.ts similarity index 100% rename from projects/lib-service-utils/src/context-utils/create-token-verifier.ts rename to projects/lib-service-utils/src/utils/create-token-verifier.ts diff --git a/projects/lib-service-utils/src/context-utils/get-token-from-context.test.ts b/projects/lib-service-utils/src/utils/get-token-from-context.test.ts similarity index 100% rename from projects/lib-service-utils/src/context-utils/get-token-from-context.test.ts rename to projects/lib-service-utils/src/utils/get-token-from-context.test.ts diff --git a/projects/lib-service-utils/src/context-utils/get-token-from-context.ts b/projects/lib-service-utils/src/utils/get-token-from-context.ts similarity index 100% rename from projects/lib-service-utils/src/context-utils/get-token-from-context.ts rename to projects/lib-service-utils/src/utils/get-token-from-context.ts diff --git a/projects/lib-service-utils/src/utils/get-token-from-header.test.ts b/projects/lib-service-utils/src/utils/get-token-from-header.test.ts new file mode 100644 index 0000000..d39dc4a --- /dev/null +++ b/projects/lib-service-utils/src/utils/get-token-from-header.test.ts @@ -0,0 +1,25 @@ +import { getTokenFromHeader } from './get-token-from-header'; + +test('it extracts the token from the header', () => { + const header = 'Bearer token'; + + const token = getTokenFromHeader(header); + + expect(token).toBe('token'); +}); + +test('it returns null if the provided header is null', () => { + const header = null; + + const token = getTokenFromHeader(header); + + expect(token).toBeNull(); +}); + +test('it returns null if the provided header is invalid', () => { + const header = 'Bearer'; + + const token = getTokenFromHeader(header); + + expect(token).toBeNull(); +}); diff --git a/projects/lib-service-utils/src/utils/get-token-from-header.ts b/projects/lib-service-utils/src/utils/get-token-from-header.ts new file mode 100644 index 0000000..4d93136 --- /dev/null +++ b/projects/lib-service-utils/src/utils/get-token-from-header.ts @@ -0,0 +1,9 @@ +export function getTokenFromHeader(header: string | null): string | null { + if (header === null) { + return null; + } + + const [, token] = header.split(/\s+/); + + return token ?? null; +} diff --git a/projects/lib-service-utils/src/context-utils/get-user-from-context.test.ts b/projects/lib-service-utils/src/utils/get-user-id-from-context.test.ts similarity index 63% rename from projects/lib-service-utils/src/context-utils/get-user-from-context.test.ts rename to projects/lib-service-utils/src/utils/get-user-id-from-context.test.ts index 9d79f4a..3fd939b 100644 --- a/projects/lib-service-utils/src/context-utils/get-user-from-context.test.ts +++ b/projects/lib-service-utils/src/utils/get-user-id-from-context.test.ts @@ -1,5 +1,5 @@ import { Context, Hono } from 'hono'; -import { getUserFromContext } from './get-user-from-context'; +import { getUserIDFromContext } from './get-user-id-from-context'; function setupTest() { const app = new Hono(); @@ -12,40 +12,30 @@ test('it extracts the user from the context', async () => { const jwtPayload = { sub: 'test_id', - email: 'user@test.com', - email_verified: 'true', - name: 'Test User', }; app.get('/test', (ctx: Context) => { ctx.set('jwtPayload', jwtPayload); - const user = getUserFromContext(ctx); + const userID = getUserIDFromContext(ctx); - return ctx.json({ user }); + return ctx.json({ userID }); }); const req = new Request('http://localhost/test'); const res = await app.request(req); expect(res.status).toBe(200); - expect(await res.json()).toMatchObject({ - user: { - id: 'test_id', - email: 'user@test.com', - emailVerified: true, - name: 'Test User', - }, - }); + expect(await res.json()).toMatchObject({ userID: 'test_id' }); }); test('it throws a 401 error if no token was provided', async () => { const { app } = setupTest(); app.get('/test', (ctx: Context) => { - const user = getUserFromContext(ctx); + const userID = getUserIDFromContext(ctx); - return ctx.json({ user }); + return ctx.json({ userID }); }); const req = new Request('http://localhost/test'); diff --git a/projects/lib-service-utils/src/utils/get-user-id-from-context.ts b/projects/lib-service-utils/src/utils/get-user-id-from-context.ts new file mode 100644 index 0000000..b776b80 --- /dev/null +++ b/projects/lib-service-utils/src/utils/get-user-id-from-context.ts @@ -0,0 +1,12 @@ +import { Context } from 'hono'; +import { HTTPException } from 'hono/http-exception'; + +export function getUserIDFromContext(ctx: Context): string { + const tokenPayload = ctx.get('jwtPayload'); + + if (!tokenPayload) { + throw new HTTPException(401, { message: 'Unauthorized' }); + } + + return tokenPayload.sub; +} diff --git a/projects/lib-service-utils/vitest.config.ts b/projects/lib-service-utils/vitest.config.ts index e63939c..2927488 100755 --- a/projects/lib-service-utils/vitest.config.ts +++ b/projects/lib-service-utils/vitest.config.ts @@ -1,6 +1,8 @@ import { defineConfig } from 'vitest/config'; +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; export default defineConfig({ + plugins: [nxViteTsPaths()], test: { globals: true, environment: 'node', diff --git a/projects/service-api/.env b/projects/service-api/.env deleted file mode 100644 index e69de29..0000000 diff --git a/projects/service-api/.env.development b/projects/service-api/.env.development new file mode 100644 index 0000000..8c577f4 --- /dev/null +++ b/projects/service-api/.env.development @@ -0,0 +1,3 @@ +USERS_API_URL=http://localhost:3001/ +API_IDENTIFIER="http://localhost:3000/" +AUTH0_DOMAIN="chrononomicon.us.auth0.com" \ No newline at end of file diff --git a/projects/service-api/.env.test b/projects/service-api/.env.test new file mode 100644 index 0000000..b440031 --- /dev/null +++ b/projects/service-api/.env.test @@ -0,0 +1,3 @@ +USERS_API_URL=http://localhost:3001/ +API_IDENTIFIER="https://test.com/" +AUTH0_DOMAIN="test.com" \ No newline at end of file diff --git a/projects/service-api/src/db.ts b/projects/service-api/src/db.ts deleted file mode 100644 index 02ccaaa..0000000 --- a/projects/service-api/src/db.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { drizzle } from 'drizzle-orm/postgres-js'; -import postgres from 'postgres'; -import { env } from './env'; - -const queryClient = postgres(env.POSTGRES_URL); - -export const db = drizzle(queryClient); diff --git a/projects/service-api/src/env.ts b/projects/service-api/src/env.ts index d98a975..7dfef43 100755 --- a/projects/service-api/src/env.ts +++ b/projects/service-api/src/env.ts @@ -1,11 +1,16 @@ -import { cleanEnv, str } from 'envalid'; +import { cleanEnv, str, url } from 'envalid'; import { Env } from './types'; export const env: Env = cleanEnv(process.env, { - POSTGRES_URL: str(), + NODE_ENV: str({ choices: ['development', 'test', 'production'] }), LOGGING: str({ choices: ['debug', 'info', 'warn', 'error'], default: 'info', }), - NODE_ENV: str({ choices: ['development', 'test', 'production'] }), + + API_IDENTIFIER: str(), + AUTH0_DOMAIN: str(), + + // service URLs + USERS_API_URL: url(), }); diff --git a/projects/service-api/src/init-yoga.ts b/projects/service-api/src/init-yoga.ts index fe7dc39..9491b24 100644 --- a/projects/service-api/src/init-yoga.ts +++ b/projects/service-api/src/init-yoga.ts @@ -1,7 +1,9 @@ -import { createYoga } from 'graphql-yoga'; +import { YogaInitialContext, createYoga } from 'graphql-yoga'; import { schema } from './schema'; import { env } from './env'; import { app } from './app'; +import { createUserService } from './services/user-service/create-user-service'; +import { getTokenFromHeader } from '@chrononomicon/service-utils'; export function initYoga() { app.on(['GET', 'POST'], '/graphql', async (ctx) => { @@ -11,8 +13,23 @@ export function initYoga() { graphqlEndpoint: '/graphql', graphiql: env.isDevelopment, schema: schema, + context: createYogaContext, }); return yoga.fetch(ctx.req.raw, ctx.env); }); } + +export function createYogaContext(ctx: YogaInitialContext) { + const authHeader = ctx.request.headers.get('authorization'); + + return { + request: ctx.request, + services: { + users: createUserService({ + accessToken: getTokenFromHeader(authHeader), + apiURL: env.USERS_API_URL, + }), + }, + }; +} diff --git a/projects/service-api/src/main.ts b/projects/service-api/src/main.ts index 37f122f..2c54871 100644 --- a/projects/service-api/src/main.ts +++ b/projects/service-api/src/main.ts @@ -1,8 +1,12 @@ import { serve } from '@hono/node-server'; +import { logger } from 'hono/logger'; import { app } from './app'; import { initYoga } from './init-yoga'; +app.use(logger()); + initYoga(); -serve(app); + +serve({ fetch: app.fetch, port: 3000 }); console.log('⚡️ Serving GraphQL API @ http://localhost:3000/graphql'); diff --git a/projects/service-api/src/mocks/db.ts b/projects/service-api/src/mocks/db.ts new file mode 100644 index 0000000..260ef92 --- /dev/null +++ b/projects/service-api/src/mocks/db.ts @@ -0,0 +1,13 @@ +import { factory, primaryKey } from '@mswjs/data'; + +export const db = factory({ + user: { + id: primaryKey(() => 'test_id'), + auth0ID: () => 'auth0|test_id', + email: () => 'user@test.com', + emailVerified: () => true, + name: () => 'Test User', + firstName: () => 'John', + createdAt: () => new Date(), + }, +}); diff --git a/projects/service-api/src/mocks/handlers/http/get-current-user.ts b/projects/service-api/src/mocks/handlers/http/get-current-user.ts new file mode 100644 index 0000000..c21e345 --- /dev/null +++ b/projects/service-api/src/mocks/handlers/http/get-current-user.ts @@ -0,0 +1,30 @@ +import { http, HttpResponse } from 'msw'; +import { + createTokenVerifier, + getTokenFromHeader, +} from '@chrononomicon/service-utils'; +import { env } from '../../../env'; +import { db } from '../../db'; + +const verifyToken = createTokenVerifier({ + audience: env.API_IDENTIFIER, + issuer: `https://${env.AUTH0_DOMAIN}/`, +}); + +const ENDPOINT_URL = `${env.USERS_API_URL}get-current-user`; + +export const getCurrentUser = http.get(ENDPOINT_URL, async ({ request }) => { + const authHeader = request.headers.get('authorization'); + const accessToken = getTokenFromHeader(authHeader); + + if (!accessToken) { + return new HttpResponse(null, { status: 401 }); + } + + const payload = (await verifyToken(accessToken)) as { sub: string }; + + const userID = payload.sub; + const user = db.user.findFirst({ where: { id: { equals: userID } } }); + + return HttpResponse.json({ success: true, data: user }); +}); diff --git a/projects/service-api/src/mocks/handlers/http/get-or-create-user.ts b/projects/service-api/src/mocks/handlers/http/get-or-create-user.ts new file mode 100644 index 0000000..410b1ad --- /dev/null +++ b/projects/service-api/src/mocks/handlers/http/get-or-create-user.ts @@ -0,0 +1,39 @@ +import { http, HttpResponse } from 'msw'; +import { + createTokenVerifier, + getTokenFromHeader, +} from '@chrononomicon/service-utils'; +import { env } from '../../../env'; +import { db } from '../../db'; + +const verifyToken = createTokenVerifier({ + audience: env.API_IDENTIFIER, + issuer: `https://${env.AUTH0_DOMAIN}/`, +}); + +const ENDPOINT_URL = `${env.USERS_API_URL}get-or-create-user`; + +export const getOrCreateUser = http.post(ENDPOINT_URL, async ({ request }) => { + const authHeader = request.headers.get('authorization'); + const accessToken = getTokenFromHeader(authHeader); + + if (!accessToken) { + return new HttpResponse(null, { status: 401 }); + } + + const payload = (await verifyToken(accessToken)) as { sub: string }; + + const userID = payload.sub; + const existingUser = db.user.findFirst({ where: { id: { equals: userID } } }); + + if (existingUser) { + return HttpResponse.json({ success: true, data: existingUser }); + } + + const user = db.user.create({ + id: userID, + auth0ID: `auth0|${userID}`, + }); + + return HttpResponse.json({ success: true, data: user }); +}); diff --git a/projects/service-api/src/mocks/handlers/http/index.ts b/projects/service-api/src/mocks/handlers/http/index.ts new file mode 100644 index 0000000..b0e581b --- /dev/null +++ b/projects/service-api/src/mocks/handlers/http/index.ts @@ -0,0 +1,4 @@ +import { getCurrentUser } from './get-current-user'; +import { getOrCreateUser } from './get-or-create-user'; + +export const handlers = [getCurrentUser, getOrCreateUser]; diff --git a/projects/service-api/src/mocks/handlers/index.ts b/projects/service-api/src/mocks/handlers/index.ts new file mode 100644 index 0000000..1ee3062 --- /dev/null +++ b/projects/service-api/src/mocks/handlers/index.ts @@ -0,0 +1,3 @@ +import { handlers as httpHandlers } from './http'; + +export const handlers = [...httpHandlers]; diff --git a/projects/service-api/src/mocks/node.ts b/projects/service-api/src/mocks/node.ts new file mode 100644 index 0000000..e52fee0 --- /dev/null +++ b/projects/service-api/src/mocks/node.ts @@ -0,0 +1,4 @@ +import { setupServer } from 'msw/node'; +import { handlers } from './handlers'; + +export const server = setupServer(...handlers); diff --git a/projects/service-api/src/schema/builder.ts b/projects/service-api/src/schema/builder.ts index abd8c72..a196c4e 100755 --- a/projects/service-api/src/schema/builder.ts +++ b/projects/service-api/src/schema/builder.ts @@ -1,3 +1,26 @@ import SchemaBuilder from '@pothos/core'; +import { DateResolver, DateTimeResolver } from 'graphql-scalars'; +import { Context } from '../types'; -export const builder = new SchemaBuilder({}); +type SchemaConfig = { + Scalars: { + DateTime: { + Input: Date; + Output: Date; + }; + Date: { + Input: Date; + Output: Date; + }; + }; + Context: Context; +}; + +export const builder = new SchemaBuilder({}); + +builder.queryType({}); + +builder.mutationType({}); + +builder.addScalarType('Date', DateResolver); +builder.addScalarType('DateTime', DateTimeResolver); diff --git a/projects/service-api/src/schema/index.ts b/projects/service-api/src/schema/index.ts index 7e8768f..b6b1c75 100755 --- a/projects/service-api/src/schema/index.ts +++ b/projects/service-api/src/schema/index.ts @@ -1,7 +1,11 @@ import { builder } from './builder'; -builder.queryType({}); - export const schema = builder.toSchema(); -export * from './queries/hello'; +export * from './types/mutation-error'; +export * from './types/mutation-error-payload'; +export * from './types/user'; + +export * from './mutations/get-or-create-user'; + +export * from './queries/get-current-user'; diff --git a/projects/service-api/src/schema/mutations/get-or-create-user.test.ts b/projects/service-api/src/schema/mutations/get-or-create-user.test.ts new file mode 100644 index 0000000..f6aeb00 --- /dev/null +++ b/projects/service-api/src/schema/mutations/get-or-create-user.test.ts @@ -0,0 +1,43 @@ +import createJWKSMock from 'mock-jwks'; +import { drop } from '@mswjs/data'; +import { env } from '../../env'; +import { createMockGQLContext } from '../../test-utils'; +import { server } from '../../mocks/node'; +import { db } from '../../mocks/db'; +import { getOrCreateUser } from './get-or-create-user'; + +const jwks = createJWKSMock(`https://${env.AUTH0_DOMAIN}/`); + +test('it returns an existing user', async () => { + db.user.create({ + id: 'test_id', + auth0ID: 'auth0|test_id', + email: 'user@test.com', + emailVerified: true, + name: 'Test User', + firstName: 'Test', + }); + + server.use(jwks.handler); + + const accessToken = jwks.token({ + sub: 'test_id', + aud: env.API_IDENTIFIER, + iss: `https://${env.AUTH0_DOMAIN}/`, + }); + + const ctx = createMockGQLContext({ accessToken }); + const args = { input: { email: 'user@test.com' } }; + const result = await getOrCreateUser({}, args, ctx); + + expect(result).toMatchObject({ + id: 'test_id', + auth0ID: 'auth0|test_id', + email: 'user@test.com', + emailVerified: true, + name: 'Test User', + firstName: 'Test', + }); + + drop(db); +}); diff --git a/projects/service-api/src/schema/mutations/get-or-create-user.ts b/projects/service-api/src/schema/mutations/get-or-create-user.ts new file mode 100644 index 0000000..2c8fd58 --- /dev/null +++ b/projects/service-api/src/schema/mutations/get-or-create-user.ts @@ -0,0 +1,55 @@ +import { Context, StandardMutationPayload } from '../../types'; +import { getTokenFromContext } from '../../utils/get-token-from-context'; +import { builder } from '../builder'; +import { MutationErrorPayload } from '../types/mutation-error-payload'; +import { User } from '../types/user'; +import { createUnauthorizedError } from '../utils/create-unauthorized-error'; +import { createPayloadResolver } from '../utils/create-payload-resolver'; + +type Args = { + input: typeof GetOrCreateUserInput.$inferInput; +}; + +export async function getOrCreateUser( + _: object, + args: Args, + ctx: Context, +): Promise> { + const accessToken = getTokenFromContext(ctx); + + if (!accessToken) { + return { error: createUnauthorizedError() }; + } + + // eslint-disable-next-line no-useless-catch + try { + const user = await ctx.services.users.getOrCreateUser({ + email: args.input.email, + }); + + return user; + } catch (error: unknown) { + // TODO(#16): capture via Sentry + throw error; + } +} +const GetOrCreateUserInput = builder.inputType('GetOrCreateUserInput', { + fields: (t) => ({ + email: t.string({ required: true }), + }), +}); + +const GetOrCreateUserPayload = builder.unionType('GetOrCreateUserPayload', { + types: [User, MutationErrorPayload], + resolveType: createPayloadResolver(User), +}); + +builder.mutationField('getOrCreateUser', (t) => + t.field({ + type: GetOrCreateUserPayload, + args: { + input: t.arg({ type: GetOrCreateUserInput, required: true }), + }, + resolve: getOrCreateUser, + }), +); diff --git a/projects/service-api/src/schema/queries/get-current-user.test.ts b/projects/service-api/src/schema/queries/get-current-user.test.ts new file mode 100755 index 0000000..2774e37 --- /dev/null +++ b/projects/service-api/src/schema/queries/get-current-user.test.ts @@ -0,0 +1,42 @@ +import createJWKSMock from 'mock-jwks'; +import { env } from '../../env'; +import { createMockGQLContext } from '../../test-utils'; +import { getCurrentUser } from './get-current-user'; +import { server } from '../../mocks/node'; +import { db } from '../../mocks/db'; +import { drop } from '@mswjs/data'; + +const jwks = createJWKSMock(`https://${env.AUTH0_DOMAIN}/`); + +test('it returns the current user', async () => { + db.user.create({ + id: 'test_id', + auth0ID: 'auth0|test_id', + email: 'user@test.com', + emailVerified: true, + name: 'Test User', + firstName: 'Test', + }); + + server.use(jwks.handler); + + const accessToken = jwks.token({ + sub: 'test_id', + aud: env.API_IDENTIFIER, + iss: `https://${env.AUTH0_DOMAIN}/`, + }); + + const ctx = createMockGQLContext({ accessToken }); + const result = await getCurrentUser({}, {}, ctx); + + expect(result).toMatchObject({ + id: 'test_id', + auth0ID: 'auth0|test_id', + email: 'user@test.com', + emailVerified: true, + name: 'Test User', + firstName: 'Test', + }); + + drop(db); +}); diff --git a/projects/service-api/src/schema/queries/get-current-user.ts b/projects/service-api/src/schema/queries/get-current-user.ts new file mode 100755 index 0000000..e2cacbb --- /dev/null +++ b/projects/service-api/src/schema/queries/get-current-user.ts @@ -0,0 +1,36 @@ +import { Context } from '../../types'; +import { isAuthed } from '../../utils'; +import { builder } from '../builder'; +import { User } from '../types'; + +builder.queryField('getCurrentUser', (t) => + t.field({ + type: User, + resolve: getCurrentUser, + }), +); + +type Args = { + name?: string | null; +}; + +export async function getCurrentUser( + _: object, + args: Args, + ctx: Context, +): Promise { + if (!isAuthed(ctx)) { + // TODO(#16): capture via sentry + throw new Error('Unauthorized'); + } + + // eslint-disable-next-line no-useless-catch + try { + const user = await ctx.services.users.getCurrentUser({}); + + return user; + } catch (error: unknown) { + // TODO(#16): capture via Sentry + throw error; + } +} diff --git a/projects/service-api/src/schema/queries/hello.test.ts b/projects/service-api/src/schema/queries/hello.test.ts deleted file mode 100755 index f5b847f..0000000 --- a/projects/service-api/src/schema/queries/hello.test.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { resolve } from './hello'; - -test('it returns a greeting', () => { - const result = resolve({}, {}); - - expect(result).toBe('hello, world'); -}); - -test('it returns a specific greeting when provided a name', () => { - const result = resolve({}, { name: 'user' }); - - expect(result).toBe('hello, user'); -}); diff --git a/projects/service-api/src/schema/queries/hello.ts b/projects/service-api/src/schema/queries/hello.ts deleted file mode 100755 index 5b9d172..0000000 --- a/projects/service-api/src/schema/queries/hello.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { builder } from '../builder'; - -builder.queryFields((t) => ({ - hello: t.string({ - args: { - name: t.arg.string(), - }, - resolve, - }), -})); - -type Args = { - name?: string | null; -}; - -export function resolve(_: object, args: Args) { - return `hello, ${args.name || 'world'}`; -} diff --git a/projects/service-api/src/schema/types/index.ts b/projects/service-api/src/schema/types/index.ts new file mode 100644 index 0000000..47289c0 --- /dev/null +++ b/projects/service-api/src/schema/types/index.ts @@ -0,0 +1,3 @@ +export { MutationError } from './mutation-error'; +export { MutationErrorPayload } from './mutation-error-payload'; +export { User } from './user'; diff --git a/projects/service-api/src/schema/types/mutation-error-payload.ts b/projects/service-api/src/schema/types/mutation-error-payload.ts new file mode 100644 index 0000000..d44cec7 --- /dev/null +++ b/projects/service-api/src/schema/types/mutation-error-payload.ts @@ -0,0 +1,19 @@ +import { builder } from '../builder'; +import { MutationError } from './mutation-error'; + +export type MutationErrorPayloadData = { + error: typeof MutationError.$inferType; +}; + +export const MutationErrorPayload = builder.objectRef( + 'MutationErrorPayload', +); + +MutationErrorPayload.implement({ + fields: (t) => ({ + error: t.field({ + type: MutationError, + resolve: (source) => source.error, + }), + }), +}); diff --git a/projects/service-api/src/schema/types/mutation-error.ts b/projects/service-api/src/schema/types/mutation-error.ts new file mode 100644 index 0000000..38cc337 --- /dev/null +++ b/projects/service-api/src/schema/types/mutation-error.ts @@ -0,0 +1,16 @@ +import { builder } from '../builder'; + +type MutationErrorData = { + title: string; + message: string; +}; + +export const MutationError = + builder.objectRef('MutationError'); + +MutationError.implement({ + fields: (t) => ({ + title: t.exposeString('title'), + message: t.exposeString('message'), + }), +}); diff --git a/projects/service-api/src/schema/types/user.ts b/projects/service-api/src/schema/types/user.ts new file mode 100644 index 0000000..bf02642 --- /dev/null +++ b/projects/service-api/src/schema/types/user.ts @@ -0,0 +1,15 @@ +import { users } from '@chrononomicon/postgres-schema'; +import { builder } from '../builder'; + +export const User = builder.objectRef('User'); + +User.implement({ + fields: (t) => ({ + id: t.exposeID('id'), + email: t.exposeString('email'), + emailVerified: t.exposeBoolean('emailVerified'), + name: t.exposeString('name'), + firstName: t.exposeString('firstName', { nullable: true }), + createdAt: t.expose('createdAt', { type: 'DateTime' }), + }), +}); diff --git a/projects/service-api/src/schema/utils/create-payload-resolver.ts b/projects/service-api/src/schema/utils/create-payload-resolver.ts new file mode 100644 index 0000000..5db3464 --- /dev/null +++ b/projects/service-api/src/schema/utils/create-payload-resolver.ts @@ -0,0 +1,13 @@ +import { MutationErrorPayload } from '../types/mutation-error-payload'; + +export function createPayloadResolver( + type: T, +): (value: object) => T | typeof MutationErrorPayload { + return (value) => { + if ('error' in value) { + return MutationErrorPayload; + } + + return type; + }; +} diff --git a/projects/service-api/src/schema/utils/create-unauthorized-error.ts b/projects/service-api/src/schema/utils/create-unauthorized-error.ts new file mode 100644 index 0000000..8175483 --- /dev/null +++ b/projects/service-api/src/schema/utils/create-unauthorized-error.ts @@ -0,0 +1,8 @@ +import { MutationError } from '../types/mutation-error'; + +export function createUnauthorizedError(): typeof MutationError.$inferType { + return { + title: 'Unauthorized', + message: 'You must be logged in to perform this action', + }; +} diff --git a/projects/service-api/src/services/index.ts b/projects/service-api/src/services/index.ts new file mode 100644 index 0000000..adb8056 --- /dev/null +++ b/projects/service-api/src/services/index.ts @@ -0,0 +1 @@ +export { createUserService } from './user-service/create-user-service'; diff --git a/projects/service-api/src/services/user-service/create-user-service.ts b/projects/service-api/src/services/user-service/create-user-service.ts new file mode 100644 index 0000000..526c8c8 --- /dev/null +++ b/projects/service-api/src/services/user-service/create-user-service.ts @@ -0,0 +1,18 @@ +import { createServiceContext } from '../utils/create-service-context'; +import { CreateServiceContextConfig } from '../utils/types'; +import { getCurrentUser } from './get-current-user'; +import { getOrCreateUser } from './get-or-create-user'; +import { GetCurrentUserArgs, GetOrCreateUserArgs, UserService } from './types'; + +type UserServiceConfig = CreateServiceContextConfig; + +export function createUserService(config: UserServiceConfig): UserService { + const ctx = createServiceContext(config); + + return { + getCurrentUser: async (args: GetCurrentUserArgs) => + getCurrentUser(args, ctx), + getOrCreateUser: async (args: GetOrCreateUserArgs) => + getOrCreateUser(args, ctx), + }; +} diff --git a/projects/service-api/src/services/user-service/get-current-user.test.ts b/projects/service-api/src/services/user-service/get-current-user.test.ts new file mode 100644 index 0000000..394c9e7 --- /dev/null +++ b/projects/service-api/src/services/user-service/get-current-user.test.ts @@ -0,0 +1,43 @@ +import createJWKSMock from 'mock-jwks'; +import { drop } from '@mswjs/data'; +import { env } from '../../env'; +import { server } from '../../mocks/node'; +import { db } from '../../mocks/db'; +import { createServiceContext } from '../utils/create-service-context'; +import { getCurrentUser } from './get-current-user'; + +const jwks = createJWKSMock(`https://${env.AUTH0_DOMAIN}/`); + +test('it returns the current user', async () => { + db.user.create({ + id: 'test_id', + auth0ID: 'auth0|test_id', + email: 'user@test.com', + emailVerified: true, + name: 'Test User', + firstName: 'Test', + }); + + server.use(jwks.handler); + + const accessToken = jwks.token({ + sub: 'test_id', + aud: env.API_IDENTIFIER, + iss: `https://${env.AUTH0_DOMAIN}/`, + }); + + const ctx = createServiceContext({ apiURL: env.USERS_API_URL, accessToken }); + const args = { email: 'user@test.com' }; + const result = await getCurrentUser(args, ctx); + + expect(result).toMatchObject({ + id: 'test_id', + auth0ID: 'auth0|test_id', + email: 'user@test.com', + emailVerified: true, + name: 'Test User', + firstName: 'Test', + }); + + drop(db); +}); diff --git a/projects/service-api/src/services/user-service/get-current-user.ts b/projects/service-api/src/services/user-service/get-current-user.ts new file mode 100644 index 0000000..4cb3d09 --- /dev/null +++ b/projects/service-api/src/services/user-service/get-current-user.ts @@ -0,0 +1,27 @@ +import { users } from '@chrononomicon/postgres-schema'; +import { + GetCurrentUserArgs, + RawUserData, + ServiceResponse, + userServiceContext, +} from './types'; +import { marshal } from './marshal'; + +type GetCurrentUserResponse = ServiceResponse; + +export async function getCurrentUser( + args: GetCurrentUserArgs, + ctx: userServiceContext, +): Promise { + const response = await ctx.client.get( + 'get-current-user', + { resolveBodyOnly: true }, + ); + + if (!response.success) { + // TODO(#16): capture via Sentry + throw new Error('An unknown error occurred'); + } + + return marshal(response.data); +} diff --git a/projects/service-api/src/services/user-service/get-or-create-user.test.ts b/projects/service-api/src/services/user-service/get-or-create-user.test.ts new file mode 100644 index 0000000..4dcaf1b --- /dev/null +++ b/projects/service-api/src/services/user-service/get-or-create-user.test.ts @@ -0,0 +1,43 @@ +import createJWKSMock from 'mock-jwks'; +import { drop } from '@mswjs/data'; +import { env } from '../../env'; +import { server } from '../../mocks/node'; +import { db } from '../../mocks/db'; +import { getOrCreateUser } from './get-or-create-user'; +import { createServiceContext } from '../utils/create-service-context'; + +const jwks = createJWKSMock(`https://${env.AUTH0_DOMAIN}/`); + +test('it returns an existing user', async () => { + db.user.create({ + id: 'test_id', + auth0ID: 'auth0|test_id', + email: 'user@test.com', + emailVerified: true, + name: 'Test User', + firstName: 'Test', + }); + + server.use(jwks.handler); + + const accessToken = jwks.token({ + sub: 'test_id', + aud: env.API_IDENTIFIER, + iss: `https://${env.AUTH0_DOMAIN}/`, + }); + + const ctx = createServiceContext({ apiURL: env.USERS_API_URL, accessToken }); + const args = { email: 'user@test.com' }; + const result = await getOrCreateUser(args, ctx); + + expect(result).toMatchObject({ + id: 'test_id', + auth0ID: 'auth0|test_id', + email: 'user@test.com', + emailVerified: true, + name: 'Test User', + firstName: 'Test', + }); + + drop(db); +}); diff --git a/projects/service-api/src/services/user-service/get-or-create-user.ts b/projects/service-api/src/services/user-service/get-or-create-user.ts new file mode 100644 index 0000000..826bcf4 --- /dev/null +++ b/projects/service-api/src/services/user-service/get-or-create-user.ts @@ -0,0 +1,27 @@ +import { users } from '@chrononomicon/postgres-schema'; +import { + GetOrCreateUserArgs, + RawUserData, + ServiceResponse, + userServiceContext, +} from './types'; +import { marshal } from './marshal'; + +type GetOrCreateUserResponse = ServiceResponse; + +export async function getOrCreateUser( + args: GetOrCreateUserArgs, + ctx: userServiceContext, +): Promise { + const response = await ctx.client.post( + 'get-or-create-user', + { body: JSON.stringify(args), resolveBodyOnly: true }, + ); + + if (!response.success) { + // TODO(#16): capture via Sentry + throw new Error('An unknown error occurred'); + } + + return marshal(response.data); +} diff --git a/projects/service-api/src/services/user-service/marshal.ts b/projects/service-api/src/services/user-service/marshal.ts new file mode 100644 index 0000000..a76850f --- /dev/null +++ b/projects/service-api/src/services/user-service/marshal.ts @@ -0,0 +1,12 @@ +import { users } from '@chrononomicon/postgres-schema'; +import { RawUserData } from './types'; + +type UserData = typeof users.$inferSelect; + +export function marshal(rawUser: RawUserData): UserData { + return { + ...rawUser, + firstName: rawUser.firstName ?? null, + createdAt: new Date(rawUser.createdAt), + }; +} diff --git a/projects/service-api/src/services/user-service/types.ts b/projects/service-api/src/services/user-service/types.ts new file mode 100644 index 0000000..e5eff0b --- /dev/null +++ b/projects/service-api/src/services/user-service/types.ts @@ -0,0 +1,46 @@ +import { users } from '@chrononomicon/postgres-schema'; +import { ServiceContext } from '../utils/types'; + +export type ServiceResponse = + | ServiceSuccessResponse + | ServiceErrorResponse; + +export type ServiceSuccessResponse = { + success: true; + data: T; +}; + +export type ServiceErrorResponse = { + success: false; + reason: string; +}; + +export type RawUserData = { + id: string; + auth0ID: string; + email: string; + emailVerified: boolean; + name: string; + firstName?: string; + createdAt: string; +}; + +export type userServiceContext = ServiceContext; + +export type UserService = { + getCurrentUser: ( + args: GetCurrentUserArgs, + ) => Promise; + + getOrCreateUser: ( + args: GetOrCreateUserArgs, + ) => Promise; +}; + +export type GetCurrentUserArgs = { + // +}; + +export type GetOrCreateUserArgs = { + email: string; +}; diff --git a/projects/service-api/src/services/utils/create-service-context.ts b/projects/service-api/src/services/utils/create-service-context.ts new file mode 100644 index 0000000..4aeba8d --- /dev/null +++ b/projects/service-api/src/services/utils/create-service-context.ts @@ -0,0 +1,20 @@ +import got from 'got'; +import { CreateServiceContextConfig, ServiceContext } from './types'; + +export function createServiceContext( + config: CreateServiceContextConfig, +): ServiceContext { + const client = got.extend({ + prefixUrl: config.apiURL, + responseType: 'json', + headers: { + ...(config.accessToken + ? { Authorization: `Bearer ${config.accessToken}` } + : {}), + }, + }); + + return { + client, + }; +} diff --git a/projects/service-api/src/services/utils/index.ts b/projects/service-api/src/services/utils/index.ts new file mode 100644 index 0000000..a66c1d8 --- /dev/null +++ b/projects/service-api/src/services/utils/index.ts @@ -0,0 +1 @@ +export { createServiceContext } from './create-service-context'; diff --git a/projects/service-api/src/services/utils/types.ts b/projects/service-api/src/services/utils/types.ts new file mode 100644 index 0000000..f631853 --- /dev/null +++ b/projects/service-api/src/services/utils/types.ts @@ -0,0 +1,10 @@ +import { Got } from 'got'; + +export type ServiceContext = { + client: Got; +}; + +export type CreateServiceContextConfig = { + apiURL: string; + accessToken: string | null; +}; diff --git a/projects/service-api/src/test-utils/create-mock-gql-context.ts b/projects/service-api/src/test-utils/create-mock-gql-context.ts new file mode 100644 index 0000000..8142602 --- /dev/null +++ b/projects/service-api/src/test-utils/create-mock-gql-context.ts @@ -0,0 +1,23 @@ +import { Context } from '../types'; +import { createUserService } from '../services'; +import { env } from '../env'; + +type MockContextConfig = { + accessToken: string; +}; + +export function createMockGQLContext(config: MockContextConfig): Context { + const request = new Request('https://test.com/'); + + request.headers.set('authorization', `Bearer ${config.accessToken}`); + + return { + request, + services: { + users: createUserService({ + apiURL: env.USERS_API_URL, + accessToken: config.accessToken, + }), + }, + }; +} diff --git a/projects/service-api/src/test-utils/create-mock-services.ts b/projects/service-api/src/test-utils/create-mock-services.ts new file mode 100644 index 0000000..42da95a --- /dev/null +++ b/projects/service-api/src/test-utils/create-mock-services.ts @@ -0,0 +1,10 @@ +import { Services } from '../types'; + +export function createMockServices(): Services { + return { + users: { + getCurrentUser: vi.fn(), + getOrCreateUser: vi.fn(), + }, + }; +} diff --git a/projects/service-api/src/test-utils/index.ts b/projects/service-api/src/test-utils/index.ts new file mode 100644 index 0000000..993f51f --- /dev/null +++ b/projects/service-api/src/test-utils/index.ts @@ -0,0 +1,2 @@ +export { createMockGQLContext } from './create-mock-gql-context'; +export { createMockServices } from './create-mock-services'; diff --git a/projects/service-api/src/types.ts b/projects/service-api/src/types.ts index 3e536d8..2d9464d 100755 --- a/projects/service-api/src/types.ts +++ b/projects/service-api/src/types.ts @@ -1,7 +1,31 @@ +import { Get } from 'type-fest'; +import { MutationErrorPayload } from './schema/types/mutation-error-payload'; +import { UserService } from './services/user-service/types'; + export type Env = { - POSTGRES_URL: string; LOGGING: 'debug' | 'info' | 'warn' | 'error'; NODE_ENV: 'development' | 'test' | 'production'; + + API_IDENTIFIER: string; + AUTH0_DOMAIN: string; + + // service urls + USERS_API_URL: string; + + // utils isProduction: boolean; isDevelopment: boolean; }; + +export type Context = { + request: Request; + services: Services; +}; + +export type Services = { + users: UserService; +}; + +export type StandardMutationPayload = + | Get + | typeof MutationErrorPayload.$inferType; diff --git a/projects/service-api/src/utils/get-token-from-context.test.ts b/projects/service-api/src/utils/get-token-from-context.test.ts new file mode 100644 index 0000000..e53dff1 --- /dev/null +++ b/projects/service-api/src/utils/get-token-from-context.test.ts @@ -0,0 +1,24 @@ +import { createMockServices } from '../test-utils/create-mock-services'; +import { getTokenFromContext } from './get-token-from-context'; + +const services = createMockServices(); + +test('it extracts the token from the context', () => { + const request = new Request('https://test.com/', { + headers: { + authorization: 'Bearer token', + }, + }); + + const token = getTokenFromContext({ request, services }); + + expect(token).toEqual('token'); +}); + +test('it returns null if the token is not present', () => { + const request = new Request('https://test.com/', {}); + + const token = getTokenFromContext({ request, services }); + + expect(token).toEqual(null); +}); diff --git a/projects/service-api/src/utils/get-token-from-context.ts b/projects/service-api/src/utils/get-token-from-context.ts new file mode 100644 index 0000000..87f6086 --- /dev/null +++ b/projects/service-api/src/utils/get-token-from-context.ts @@ -0,0 +1,14 @@ +import { getTokenFromHeader } from '@chrononomicon/service-utils'; +import { Context } from '../types'; + +export function getTokenFromContext(ctx: Context): string | null { + const header = ctx.request.headers.get('authorization'); + + if (!header) { + return null; + } + + const token = getTokenFromHeader(header); + + return token; +} diff --git a/projects/service-api/src/utils/index.ts b/projects/service-api/src/utils/index.ts new file mode 100644 index 0000000..0e646cd --- /dev/null +++ b/projects/service-api/src/utils/index.ts @@ -0,0 +1,2 @@ +export { getTokenFromContext } from './get-token-from-context'; +export { isAuthed } from './is-authed'; diff --git a/projects/service-api/src/utils/is-authed.test.ts b/projects/service-api/src/utils/is-authed.test.ts new file mode 100644 index 0000000..bb3fe4a --- /dev/null +++ b/projects/service-api/src/utils/is-authed.test.ts @@ -0,0 +1,24 @@ +import { createMockServices } from '../test-utils/create-mock-services'; +import { isAuthed } from './is-authed'; + +const services = createMockServices(); + +test('it returns true if an access token is found', () => { + const request = new Request('https://test.com/', { + headers: { + authorization: 'Bearer token', + }, + }); + + const authed = isAuthed({ request, services }); + + expect(authed).toBeTrue(); +}); + +test('it returns false if an access token isnt found', () => { + const request = new Request('https://test.com/', {}); + + const authed = isAuthed({ request, services }); + + expect(authed).toBeFalse(); +}); diff --git a/projects/service-api/src/utils/is-authed.ts b/projects/service-api/src/utils/is-authed.ts new file mode 100644 index 0000000..582426a --- /dev/null +++ b/projects/service-api/src/utils/is-authed.ts @@ -0,0 +1,6 @@ +import { Context } from '../types'; +import { getTokenFromContext } from './get-token-from-context'; + +export function isAuthed(ctx: Context): boolean { + return Boolean(getTokenFromContext(ctx)); +} diff --git a/projects/service-api/tsconfig.app.json b/projects/service-api/tsconfig.app.json index 85be90f..28a0c11 100644 --- a/projects/service-api/tsconfig.app.json +++ b/projects/service-api/tsconfig.app.json @@ -4,6 +4,6 @@ "module": "ESNext", "types": ["node"] }, - "exclude": ["src/**/*.test.ts"], + "exclude": ["src/test-utils/**/*.ts", "src/**/*.test.ts"], "include": ["src/**/*.ts"] } diff --git a/projects/service-api/tsconfig.json b/projects/service-api/tsconfig.json index 573aaf9..e068a1c 100644 --- a/projects/service-api/tsconfig.json +++ b/projects/service-api/tsconfig.json @@ -2,6 +2,9 @@ "extends": "../../tsconfig.base.json", "files": [], "include": [], + "compilerOptions": { + "esModuleInterop": true + }, "references": [ { "path": "./tsconfig.app.json" @@ -9,8 +12,5 @@ { "path": "./tsconfig.test.json" } - ], - "compilerOptions": { - "esModuleInterop": true - } + ] } diff --git a/projects/service-api/tsconfig.test.json b/projects/service-api/tsconfig.test.json index 74adafa..9a79bab 100644 --- a/projects/service-api/tsconfig.test.json +++ b/projects/service-api/tsconfig.test.json @@ -5,6 +5,7 @@ "types": ["node", "vitest/globals"] }, "include": [ + "src/test-utils/**/*.ts", "src/**/*.test.ts", "src/**/*.d.ts", "vite.config.ts", diff --git a/projects/service-api/vitest.config.ts b/projects/service-api/vitest.config.ts index 4ce42e4..ab76497 100755 --- a/projects/service-api/vitest.config.ts +++ b/projects/service-api/vitest.config.ts @@ -1,7 +1,9 @@ import { loadEnv } from 'vite'; import { defineConfig } from 'vitest/config'; +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; export default defineConfig({ + plugins: [nxViteTsPaths()], test: { globals: true, environment: 'node', diff --git a/projects/service-api/vitest.setup.ts b/projects/service-api/vitest.setup.ts index 107b565..0802c3c 100644 --- a/projects/service-api/vitest.setup.ts +++ b/projects/service-api/vitest.setup.ts @@ -1,3 +1,14 @@ import * as matchers from 'jest-extended'; +import { server } from './src/mocks/node'; expect.extend(matchers); + +beforeAll(() => server.listen()); + +afterEach(() => server.resetHandlers()); + +afterAll(() => server.close()); + +server.events.on('request:start', ({ request }) => { + console.log('Outgoing:', request.method, request.url); +}); diff --git a/projects/service-user/.env.development b/projects/service-user/.env.development index 3e163ec..0bcf670 100644 --- a/projects/service-user/.env.development +++ b/projects/service-user/.env.development @@ -1,4 +1,4 @@ NODE_ENV=development -POSTGRES_URL="postgresql://admin:password@localhost:5432/campaign" -AUTH0_DOMAIN="" -API_IDENTIFIER="" \ No newline at end of file +POSTGRES_URL="postgresql://admin:password@localhost:5433/chrononomicon" +AUTH0_DOMAIN="chrononomicon.us.auth0.com" +API_IDENTIFIER="http://localhost:3000/" \ No newline at end of file diff --git a/projects/service-user/.env.test b/projects/service-user/.env.test index 3ec5eff..6e8cf09 100644 --- a/projects/service-user/.env.test +++ b/projects/service-user/.env.test @@ -1,4 +1,4 @@ NODE_ENV=test -POSTGRES_URL="postgresql://admin:password@localhost:5432/campaign" +POSTGRES_URL="postgresql://admin:password@localhost:5432/chrononomicon" AUTH0_DOMAIN="TESTAPP.auth0.com" API_IDENTIFIER="" \ No newline at end of file diff --git a/projects/service-user/src/db.ts b/projects/service-user/src/db.ts index 8f39696..45c98d9 100644 --- a/projects/service-user/src/db.ts +++ b/projects/service-user/src/db.ts @@ -1,4 +1,4 @@ -import * as schema from '@campaign/postgres-schema'; +import * as schema from '@chrononomicon/postgres-schema'; import { drizzle } from 'drizzle-orm/postgres-js'; import { pg } from './pg'; diff --git a/projects/service-user/src/handlers/get-current-user.test.ts b/projects/service-user/src/handlers/get-current-user.test.ts new file mode 100644 index 0000000..0b6b822 --- /dev/null +++ b/projects/service-user/src/handlers/get-current-user.test.ts @@ -0,0 +1,85 @@ +import { Hono } from 'hono'; +import createJWKSMock from 'mock-jwks'; +import * as schema from '@chrononomicon/postgres-schema'; +import { createAuthMiddleware } from '@chrononomicon/service-utils'; +import { PostgresTestUtils } from '@chrononomicon/service-test-utils'; +import { env } from '../env'; +import { getCurrentUser } from './get-current-user'; + +// setup jwks mock +const jwks = createJWKSMock(`https://${env.AUTH0_DOMAIN}/`); + +const TEST_TOKEN_PAYLOAD = { + sub: 'auth0|test_id', + iss: `https://${env.AUTH0_DOMAIN}/`, + name: 'Test User', + email: 'user@test.com', + email_verified: 'true', +}; + +const authMiddleware = createAuthMiddleware({ + tokenVerifierConfig: { + audience: env.API_IDENTIFIER, + issuer: `https://${env.AUTH0_DOMAIN}/`, + }, +}); + +async function setupTest() { + const { db, teardown } = await PostgresTestUtils.createTestDB(); + const app = new Hono(); + + jwks.start(); + + app.get('/get-current-user', authMiddleware, async (ctx) => + getCurrentUser(ctx, db), + ); + + const token = jwks.token(TEST_TOKEN_PAYLOAD); + + return { app, db, token, teardown }; +} + +afterEach(() => { + jwks.stop(); + vi.restoreAllMocks(); +}); + +test('it returns the current user', async () => { + const { app, db, token, teardown } = await setupTest(); + + const createdAt = new Date(); + + await db.insert(schema.users).values({ + id: 'test_id', + auth0ID: 'auth0|test_id', + email: 'user@test.com', + emailVerified: true, + name: 'Test User', + firstName: 'Test', + createdAt, + }); + + const req = new Request('http://localhost/get-current-user', { + headers: { + authorization: `Bearer ${token}`, + }, + }); + + const res = await app.request(req); + + expect(res.status).toBe(200); + expect(await res.json()).toMatchObject({ + success: true, + data: { + id: 'test_id', + auth0ID: 'auth0|test_id', + email: 'user@test.com', + emailVerified: true, + name: 'Test User', + firstName: 'Test', + createdAt: createdAt.toISOString(), + }, + }); + + await teardown(); +}); diff --git a/projects/service-user/src/handlers/get-current-user.ts b/projects/service-user/src/handlers/get-current-user.ts new file mode 100644 index 0000000..edebad8 --- /dev/null +++ b/projects/service-user/src/handlers/get-current-user.ts @@ -0,0 +1,27 @@ +import { eq } from 'drizzle-orm'; +import { Context } from 'hono'; +import * as schema from '@chrononomicon/postgres-schema'; +import { getUserIDFromContext } from '@chrononomicon/service-utils'; +import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; + +export async function getCurrentUser( + ctx: Context, + db: PostgresJsDatabase, +) { + try { + const userID = getUserIDFromContext(ctx); + + const user = await db.query.users.findFirst({ + where: eq(schema.users.auth0ID, userID), + }); + + return ctx.json({ success: true, data: user }); + } catch (error: unknown) { + // TODO(#16): capture via Sentry + if (error instanceof Error) { + return ctx.json({ success: false, error: 'An unknown error occurred' }); + } + + throw error; + } +} diff --git a/projects/service-user/src/handlers/get-or-create-user.test.ts b/projects/service-user/src/handlers/get-or-create-user.test.ts index d7a5871..8493da5 100644 --- a/projects/service-user/src/handlers/get-or-create-user.test.ts +++ b/projects/service-user/src/handlers/get-or-create-user.test.ts @@ -1,10 +1,10 @@ import { Hono } from 'hono'; import createJWKSMock from 'mock-jwks'; -import * as schema from '@campaign/postgres-schema'; +import * as schema from '@chrononomicon/postgres-schema'; +import { createAuthMiddleware } from '@chrononomicon/service-utils'; +import { PostgresTestUtils } from '@chrononomicon/service-test-utils'; import { env } from '../env'; -import { createAuthMiddleware } from '@campaign/service-utils'; import { getOrCreateUser } from './get-or-create-user'; -import { PostgresTestUtils } from '../../../lib-service-test-utils/src'; // mock auth0 user info client const { getUserInfoMock } = vi.hoisted(() => ({ getUserInfoMock: vi.fn() })); @@ -45,7 +45,9 @@ async function setupTest() { const app = new Hono(); jwks.start(); - app.get('/test', authMiddleware, async (ctx) => getOrCreateUser(ctx, db)); + app.post('/get-or-create-user', authMiddleware, async (ctx) => + getOrCreateUser(ctx, db), + ); const token = jwks.token(TEST_TOKEN_PAYLOAD); @@ -62,15 +64,21 @@ test('it creates and returns a user', async () => { getUserInfoMock.mockImplementation(() => ({ data: { + sub: 'auth0|test_id', email: 'user@test.com', email_verified: true, name: 'Test User', + given_name: 'Test', }, })); - const req = new Request('http://localhost/test'); - - req.headers.set('Authorization', `Bearer ${token}`); + const req = new Request('http://localhost/get-or-create-user', { + method: 'POST', + body: JSON.stringify({ email: 'user@test.com' }), + headers: { + authorization: `Bearer ${token}`, + }, + }); const res = await app.request(req); @@ -78,10 +86,13 @@ test('it creates and returns a user', async () => { expect(await res.json()).toMatchObject({ success: true, data: { - id: 'test_id', + id: expect.any(String), + auth0ID: 'auth0|test_id', name: 'Test User', + firstName: 'Test', email: 'user@test.com', emailVerified: true, + createdAt: expect.any(String), }, }); @@ -93,14 +104,20 @@ test('it returns an existing user', async () => { await db.insert(schema.users).values({ id: 'test_id', + auth0ID: 'auth0|test_id', name: 'Test User', + firstName: 'Test', email: 'user@test.com', emailVerified: true, }); - const req = new Request('http://localhost/test'); - - req.headers.set('Authorization', `Bearer ${token}`); + const req = new Request('http://localhost/get-or-create-user', { + method: 'POST', + body: JSON.stringify({ email: 'user@test.com' }), + headers: { + authorization: `Bearer ${token}`, + }, + }); const res = await app.request(req); @@ -109,9 +126,12 @@ test('it returns an existing user', async () => { success: true, data: { id: 'test_id', + auth0ID: 'auth0|test_id', name: 'Test User', + firstName: 'Test', email: 'user@test.com', emailVerified: true, + createdAt: expect.any(String), }, }); diff --git a/projects/service-user/src/handlers/get-or-create-user.ts b/projects/service-user/src/handlers/get-or-create-user.ts index e21c032..d69362a 100644 --- a/projects/service-user/src/handlers/get-or-create-user.ts +++ b/projects/service-user/src/handlers/get-or-create-user.ts @@ -1,39 +1,53 @@ import { eq } from 'drizzle-orm'; import { Context } from 'hono'; -import * as schema from '@campaign/postgres-schema'; -import { - getTokenFromContext, - getUserFromContext, -} from '@campaign/service-utils'; +import { createId } from '@paralleldrive/cuid2'; +import * as schema from '@chrononomicon/postgres-schema'; +import { getTokenFromContext } from '@chrononomicon/service-utils'; import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import * as auth0 from '../auth0'; +type RequestBody = { + email: string; +}; + export async function getOrCreateUser( ctx: Context, db: PostgresJsDatabase, ) { - const user = getUserFromContext(ctx); + try { + const { email } = await ctx.req.json(); - const existingUser = await db.query.users.findFirst({ - where: eq(schema.users.id, user.id), - }); + const existingUser = await db.query.users.findFirst({ + where: eq(schema.users.email, email), + }); - if (existingUser) { - return ctx.json({ success: true, data: existingUser }); - } + if (existingUser) { + return ctx.json({ success: true, data: existingUser }); + } - const accessToken = getTokenFromContext(ctx); - const auth0UserInfo = await auth0.userInfoClient.getUserInfo(accessToken); + const accessToken = getTokenFromContext(ctx); + const auth0UserInfo = await auth0.userInfoClient.getUserInfo(accessToken); - const newUser = { - id: user.id, - email: auth0UserInfo.data.email, - emailVerified: auth0UserInfo.data.email_verified, - name: auth0UserInfo.data.name, - createdAt: new Date(), - }; + const newUser = { + id: createId(), + auth0ID: auth0UserInfo.data.sub, + email: auth0UserInfo.data.email, + emailVerified: auth0UserInfo.data.email_verified, + name: auth0UserInfo.data.name, + firstName: auth0UserInfo.data.given_name, + createdAt: new Date(), + }; - await db.insert(schema.users).values(newUser); + await db.insert(schema.users).values(newUser); - return ctx.json({ success: true, data: newUser }); + return ctx.json({ success: true, data: newUser }); + } catch (error: unknown) { + console.log(error); + // TODO(#16): capture via Sentry + if (error instanceof Error) { + return ctx.json({ success: false, error: 'An unknown error occurred' }); + } + + throw error; + } } diff --git a/projects/service-user/src/handlers/index.ts b/projects/service-user/src/handlers/index.ts index b8950d5..913ac6f 100644 --- a/projects/service-user/src/handlers/index.ts +++ b/projects/service-user/src/handlers/index.ts @@ -1 +1,2 @@ +export { getCurrentUser } from './get-current-user'; export { getOrCreateUser } from './get-or-create-user'; diff --git a/projects/service-user/src/main.ts b/projects/service-user/src/main.ts index d596460..494603e 100644 --- a/projects/service-user/src/main.ts +++ b/projects/service-user/src/main.ts @@ -1,6 +1,7 @@ import { serve } from '@hono/node-server'; import { app } from './app'; +import './routes'; -serve(app); +serve({ fetch: app.fetch, port: 3001 }); -console.log('⚡️ Serving User API @ http://localhost:3000'); +console.log('⚡️ Serving User API @ http://localhost:3001'); diff --git a/projects/service-user/src/middleware/auth-middleware.ts b/projects/service-user/src/middleware/auth-middleware.ts index 6b78590..e47bbaa 100644 --- a/projects/service-user/src/middleware/auth-middleware.ts +++ b/projects/service-user/src/middleware/auth-middleware.ts @@ -1,4 +1,4 @@ -import { createAuthMiddleware } from '@campaign/service-utils'; +import { createAuthMiddleware } from '@chrononomicon/service-utils'; import { env } from '../env'; export const authMiddleware = createAuthMiddleware({ diff --git a/projects/service-user/src/routes.ts b/projects/service-user/src/routes.ts index e4c2906..2157884 100644 --- a/projects/service-user/src/routes.ts +++ b/projects/service-user/src/routes.ts @@ -1,8 +1,12 @@ import { app } from './app'; -import { getOrCreateUser } from './handlers'; +import { getCurrentUser, getOrCreateUser } from './handlers'; import { db } from './db'; import { authMiddleware } from './middleware'; -app.get('/get-or-create-user', authMiddleware, async (ctx) => +app.post('/get-current-user', authMiddleware, async (ctx) => + getCurrentUser(ctx, db), +); + +app.post('/get-or-create-user', authMiddleware, async (ctx) => getOrCreateUser(ctx, db), ); diff --git a/projects/service-user/src/type-defs/hono-context.d.ts b/projects/service-user/src/type-defs/hono-context.d.ts index 876b9a6..4e27a4e 100644 --- a/projects/service-user/src/type-defs/hono-context.d.ts +++ b/projects/service-user/src/type-defs/hono-context.d.ts @@ -1,11 +1,7 @@ import 'hono'; -// TODO: clean up this type type JWTPayload = { sub: string; - email: string; - email_verified: string; - name: string; }; declare module 'hono' { diff --git a/projects/service-user/src/types.ts b/projects/service-user/src/types.ts index 107e566..4c1b5d9 100755 --- a/projects/service-user/src/types.ts +++ b/projects/service-user/src/types.ts @@ -1,5 +1,5 @@ import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; -import * as schema from '@campaign/postgres-schema'; +import * as schema from '@chrononomicon/postgres-schema'; export type Env = { POSTGRES_URL: string; diff --git a/projects/service-user/vitest.global-setup.ts b/projects/service-user/vitest.global-setup.ts index 75c84d3..608dc24 100644 --- a/projects/service-user/vitest.global-setup.ts +++ b/projects/service-user/vitest.global-setup.ts @@ -1,4 +1,4 @@ -import { PostgresTestUtils } from '@campaign/service-test-utils'; +import { PostgresTestUtils } from '@chrononomicon/service-test-utils'; export async function setup() { await PostgresTestUtils.initialize(); diff --git a/schema.graphql b/schema.graphql index 11fede5..e807ef7 100644 --- a/schema.graphql +++ b/schema.graphql @@ -1,3 +1,41 @@ +""" +A date string, such as 2007-12-03, compliant with the `full-date` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. +""" +scalar Date + +""" +A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. +""" +scalar DateTime + +input GetOrCreateUserInput { + email: String! +} + +union GetOrCreateUserPayload = MutationErrorPayload | User + +type Mutation { + getOrCreateUser(input: GetOrCreateUserInput!): GetOrCreateUserPayload! +} + +type MutationError { + message: String! + title: String! +} + +type MutationErrorPayload { + error: MutationError! +} + type Query { - hello(name: String): String! + getCurrentUser: User! +} + +type User { + createdAt: DateTime! + email: String! + emailVerified: Boolean! + firstName: String + id: ID! + name: String! } diff --git a/scripts/clean.sh b/scripts/clean.sh new file mode 100755 index 0000000..5c3692f --- /dev/null +++ b/scripts/clean.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +rm -rf .nx +rm -rf dist +rm -rf node_modules +rm -rf tmp + +rm -rf projects/**/.cache +rm -rf projects/**/*.timestamp*.mjs +rm -rf projects/**/build +rm -rf projects/**/dist +rm -rf projects/**/node_modules \ No newline at end of file diff --git a/tsconfig.base.json b/tsconfig.base.json index 7179aff..9ab9ebf 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -4,7 +4,7 @@ "rootDir": ".", "sourceMap": true, "declaration": false, - "moduleResolution": "Node", + "moduleResolution": "Bundler", "emitDecoratorMetadata": true, "experimentalDecorators": true, "importHelpers": true, @@ -15,13 +15,15 @@ "skipDefaultLibCheck": true, "baseUrl": ".", "paths": { - "@campaign/postgres-schema": [ + "@chrononomicon/postgres-schema": [ "projects/lib-postgres-schema/src/index.ts" ], - "@campaign/service-test-utils": [ + "@chrononomicon/service-test-utils": [ "projects/lib-service-test-utils/src/index.ts" ], - "@campaign/service-utils": ["projects/lib-service-utils/src/index.ts"] + "@chrononomicon/service-utils": [ + "projects/lib-service-utils/src/index.ts" + ] }, "strict": true }, diff --git a/yarn.lock b/yarn.lock index a7fcc6a..1c7bb84 100644 --- a/yarn.lock +++ b/yarn.lock @@ -109,7 +109,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.14.0, @babel/core@npm:^7.20.7, @babel/core@npm:^7.21.3, @babel/core@npm:^7.21.8, @babel/core@npm:^7.22.9, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.5, @babel/core@npm:^7.23.9": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.14.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.21.8, @babel/core@npm:^7.22.9, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.5, @babel/core@npm:^7.23.9": version: 7.24.4 resolution: "@babel/core@npm:7.24.4" dependencies: @@ -132,6 +132,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.20.7": + version: 7.24.5 + resolution: "@babel/core@npm:7.24.5" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.24.2" + "@babel/generator": "npm:^7.24.5" + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-module-transforms": "npm:^7.24.5" + "@babel/helpers": "npm:^7.24.5" + "@babel/parser": "npm:^7.24.5" + "@babel/template": "npm:^7.24.0" + "@babel/traverse": "npm:^7.24.5" + "@babel/types": "npm:^7.24.5" + 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/e26ba810a77bc8e21579a12fc36c79a0a60554404dc9447f2d64eb1f26d181c48d3b97d39d9f158e9911ec7162a8280acfaf2b4b210e975f0dd4bd4dbb1ee159 + languageName: node + linkType: hard + "@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.21.5, @babel/generator@npm:^7.24.1, @babel/generator@npm:^7.24.4, @babel/generator@npm:^7.7.2": version: 7.24.4 resolution: "@babel/generator@npm:7.24.4" @@ -144,6 +167,18 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/generator@npm:7.24.5" + dependencies: + "@babel/types": "npm:^7.24.5" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^2.5.1" + checksum: 10c0/0d64f880150e7dfb92ceff2b4ac865f36aa1e295120920246492ffd0146562dabf79ba8699af1c8833f8a7954818d4d146b7b02f808df4d6024fb99f98b2f78d + 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" @@ -281,6 +316,21 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/helper-module-transforms@npm:7.24.5" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-module-imports": "npm:^7.24.3" + "@babel/helper-simple-access": "npm:^7.24.5" + "@babel/helper-split-export-declaration": "npm:^7.24.5" + "@babel/helper-validator-identifier": "npm:^7.24.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/6e77d72f62b7e87abaea800ea0bccd4d54cde26485750969f5f493c032eb63251eb50c3522cace557781565d51c1d0c4bcc866407d24becfb109c18fb92c978d + 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" @@ -332,6 +382,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-simple-access@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/helper-simple-access@npm:7.24.5" + dependencies: + "@babel/types": "npm:^7.24.5" + checksum: 10c0/d96a0ab790a400f6c2dcbd9457b9ca74b9ba6d0f67ff9cd5bcc73792c8fbbd0847322a0dddbd8987dd98610ee1637c680938c7d83d3ffce7d06d7519d823d996 + 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" @@ -350,7 +409,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.23.4": +"@babel/helper-split-export-declaration@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/helper-split-export-declaration@npm:7.24.5" + dependencies: + "@babel/types": "npm:^7.24.5" + checksum: 10c0/d7a812d67d031a348f3fb0e6263ce2dbe6038f81536ba7fb16db385383bcd6542b71833194303bf6d3d0e4f7b6b584c9c8fae8772122e2ce68fc9bdf07f4135d + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.23.4, @babel/helper-string-parser@npm:^7.24.1": version: 7.24.1 resolution: "@babel/helper-string-parser@npm:7.24.1" checksum: 10c0/2f9bfcf8d2f9f083785df0501dbab92770111ece2f90d120352fda6dd2a7d47db11b807d111e6f32aa1ba6d763fe2dc6603d153068d672a5d0ad33ca802632b2 @@ -364,6 +432,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/helper-validator-identifier@npm:7.24.5" + checksum: 10c0/05f957229d89ce95a137d04e27f7d0680d84ae48b6ad830e399db0779341f7d30290f863a93351b4b3bde2166737f73a286ea42856bb07c8ddaa95600d38645c + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.23.5": version: 7.23.5 resolution: "@babel/helper-validator-option@npm:7.23.5" @@ -393,6 +468,17 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/helpers@npm:7.24.5" + dependencies: + "@babel/template": "npm:^7.24.0" + "@babel/traverse": "npm:^7.24.5" + "@babel/types": "npm:^7.24.5" + checksum: 10c0/0630b0223c3a9a34027ddc05b3bac54d68d5957f84e92d2d4814b00448a76e12f9188f9c85cfce2011696d82a8ffcbd8189da097c0af0181d32eb27eca34185e + languageName: node + linkType: hard + "@babel/highlight@npm:^7.24.2": version: 7.24.2 resolution: "@babel/highlight@npm:7.24.2" @@ -414,6 +500,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/parser@npm:7.24.5" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/8333a6ad5328bad34fa0e12bcee147c3345ea9a438c0909e7c68c6cfbea43c464834ffd7eabd1cbc1c62df0a558e22ffade9f5b29440833ba7b33d96a71f88c0 + languageName: node + linkType: hard + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.24.4": version: 7.24.4 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.24.4" @@ -742,7 +837,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.20.0, @babel/plugin-syntax-typescript@npm:^7.24.1, @babel/plugin-syntax-typescript@npm:^7.3.3, @babel/plugin-syntax-typescript@npm:^7.7.2": +"@babel/plugin-syntax-typescript@npm:^7.20.0, @babel/plugin-syntax-typescript@npm:^7.23.3, @babel/plugin-syntax-typescript@npm:^7.24.1, @babel/plugin-syntax-typescript@npm:^7.3.3, @babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.24.1 resolution: "@babel/plugin-syntax-typescript@npm:7.24.1" dependencies: @@ -1610,7 +1705,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": version: 7.24.4 resolution: "@babel/runtime@npm:7.24.4" dependencies: @@ -1648,6 +1743,24 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/traverse@npm:7.24.5" + dependencies: + "@babel/code-frame": "npm:^7.24.2" + "@babel/generator": "npm:^7.24.5" + "@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.24.5" + "@babel/parser": "npm:^7.24.5" + "@babel/types": "npm:^7.24.5" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/3f22534bc2b2ed9208e55ef48af3b32939032b23cb9dc4037447cb108640df70bbb0b9fea86e9c58648949fdc2cb14e89aa79ffa3c62a5dd43459a52fe8c01d1 + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.13, @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.24.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.24.0 resolution: "@babel/types@npm:7.24.0" @@ -1659,6 +1772,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/types@npm:7.24.5" + dependencies: + "@babel/helper-string-parser": "npm:^7.24.1" + "@babel/helper-validator-identifier": "npm:^7.24.5" + to-fast-properties: "npm:^2.0.0" + checksum: 10c0/e1284eb046c5e0451b80220d1200e2327e0a8544a2fe45bb62c952e5fdef7099c603d2336b17b6eac3cc046b7a69bfbce67fe56e1c0ea48cd37c65cb88638f2a + languageName: node + linkType: hard + "@balena/dockerignore@npm:^1.0.2": version: 1.0.2 resolution: "@balena/dockerignore@npm:1.0.2" @@ -1691,9 +1815,9 @@ __metadata: languageName: node linkType: hard -"@campaign/source@workspace:.": +"@chrononomicon/source@workspace:.": version: 0.0.0-use.local - resolution: "@campaign/source@workspace:." + resolution: "@chrononomicon/source@workspace:." dependencies: "@0no-co/graphqlsp": "npm:1.11.0" "@commitlint/cli": "npm:19.2.1" @@ -1705,6 +1829,7 @@ __metadata: "@graphql-tools/executor-http": "npm:1.0.9" "@graphql-typed-document-node/core": "npm:3.2.0" "@hono/node-server": "npm:1.10.0" + "@mswjs/data": "npm:0.16.1" "@nx/devkit": "npm:18.3.3" "@nx/esbuild": "npm:18.3.3" "@nx/eslint": "npm:18.3.3" @@ -1715,6 +1840,7 @@ __metadata: "@nx/vite": "npm:18.3.3" "@nx/web": "npm:18.3.3" "@nx/workspace": "npm:18.3.3" + "@paralleldrive/cuid2": "npm:2.2.2" "@parcel/watcher": "npm:2.4.1" "@playwright/test": "npm:1.43.0" "@pothos/core": "npm:3.41.1" @@ -1722,28 +1848,33 @@ __metadata: "@remix-run/node": "npm:2.9.1" "@remix-run/react": "npm:2.9.1" "@remix-run/serve": "npm:2.9.1" + "@remix-run/server-runtime": "npm:2.9.1" "@remix-run/testing": "npm:2.9.1" "@swc-node/register": "npm:1.9.0" "@swc/cli": "npm:0.3.12" "@swc/core": "npm:1.4.13" "@swc/helpers": "npm:0.5.8" "@testcontainers/postgresql": "npm:10.9.0" + "@testing-library/dom": "npm:10.0.0" "@testing-library/jest-dom": "npm:6.4.2" "@testing-library/react": "npm:14.3.0" + "@testing-library/user-event": "npm:14.5.2" "@types/jsonwebtoken": "npm:9.0.6" "@types/node": "npm:20.12.7" "@types/react": "npm:18.2.75" "@types/react-dom": "npm:18.2.24" "@types/react-is": "npm:18.2.4" - "@types/styled-components": "npm:5.1.34" "@typescript-eslint/eslint-plugin": "npm:7.6.0" "@typescript-eslint/parser": "npm:7.6.0" "@typescript-eslint/utils": "npm:7.7.1" + "@vanilla-extract/css": "npm:1.15.1" + "@vanilla-extract/sprinkles": "npm:1.6.1" + "@vanilla-extract/vite-plugin": "npm:4.0.9" "@vitejs/plugin-react": "npm:4.2.1" - "@vitest/coverage-v8": "npm:1.5.1" - "@vitest/ui": "npm:1.5.1" + "@vitest/coverage-v8": "npm:1.5.2" + "@vitest/expect": "npm:1.5.2" + "@vitest/ui": "npm:1.5.2" auth0: "npm:4.3.1" - cuid: "npm:3.0.0" drizzle-kit: "npm:0.20.17" drizzle-orm: "npm:0.30.9" envalid: "npm:8.0.0" @@ -1756,8 +1887,11 @@ __metadata: eslint-plugin-react: "npm:7.34.1" eslint-plugin-react-hooks: "npm:4.6.0" eslint-plugin-unicorn: "npm:52.0.0" + got: "npm:14.2.1" graphql: "npm:16.8.1" graphql-request: "npm:6.1.0" + graphql-scalars: "npm:1.23.0" + graphql-transform-scalars: "npm:1.2.1" graphql-yoga: "npm:5.3.0" happy-dom: "npm:14.7.1" hono: "npm:4.2.4" @@ -1766,9 +1900,11 @@ __metadata: jest-extended: "npm:4.0.2" jsonwebtoken: "npm:9.0.2" jwks-rsa: "npm:3.1.0" + jwt-decode: "npm:4.0.0" lint-staged: "npm:15.2.2" - mock-jwks: "npm:3.1.0" + mock-jwks: "patch:mock-jwks@npm%3A3.1.0#~/.yarn/patches/mock-jwks-npm-3.1.0-131e3bbc29.patch" msw: "npm:2.2.14" + node-mocks-http: "npm:1.14.1" nx: "npm:18.3.3" playwright: "npm:1.43.0" postgres: "npm:3.4.4" @@ -1777,15 +1913,21 @@ __metadata: react-dom: "npm:18.2.0" react-is: "npm:18.2.0" react-router-dom: "npm:6.22.3" + remix-auth: "npm:3.6.0" + remix-auth-auth0: "npm:1.10.0" + remix-auth-oauth2: "npm:1.11.2" + remix-flat-routes: "npm:0.6.4" remix-hono: "npm:0.0.16" - styled-components: "npm:6.1.8" tiny-invariant: "npm:1.3.3" + tsconfig-paths: "npm:4.2.0" tslib: "npm:2.6.2" tsx: "npm:4.7.3" + type-fest: "npm:4.17.0" typescript: "npm:5.4.5" typescript-eslint: "npm:7.6.0" + uuid: "npm:9.0.1" vite: "npm:5.2.10" - vitest: "npm:1.5.1" + vitest: "npm:1.5.2" languageName: unknown linkType: soft @@ -2035,29 +2177,6 @@ __metadata: languageName: node linkType: hard -"@emotion/is-prop-valid@npm:1.2.1": - version: 1.2.1 - resolution: "@emotion/is-prop-valid@npm:1.2.1" - dependencies: - "@emotion/memoize": "npm:^0.8.1" - checksum: 10c0/7c2aabdf0ca9986ca25abc9dae711348308cf18d418d64ffa4c8ffd2114806c47f2e06ba8ee769f38ec67d65bd59ec73f34d94023e81baa1c43510ac86ccd5e6 - languageName: node - linkType: hard - -"@emotion/memoize@npm:^0.8.1": - version: 0.8.1 - resolution: "@emotion/memoize@npm:0.8.1" - checksum: 10c0/dffed372fc3b9fa2ba411e76af22b6bb686fb0cb07694fdfaa6dd2baeb0d5e4968c1a7caa472bfcf06a5997d5e7c7d16b90e993f9a6ffae79a2c3dbdc76dfe78 - languageName: node - linkType: hard - -"@emotion/unitless@npm:0.8.0": - version: 0.8.0 - resolution: "@emotion/unitless@npm:0.8.0" - checksum: 10c0/1f2cfb7c0ccb83c20b1c6d8d92a74a93da4b2a440f9a0d49ded08647faf299065a2ffde17e1335920fa10397b85f8635bbfe14f3cd29222a59ea81d978478072 - languageName: node - linkType: hard - "@envelop/core@npm:^5.0.0": version: 5.0.0 resolution: "@envelop/core@npm:5.0.0" @@ -3916,16 +4035,6 @@ __metadata: 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/cookies@npm:^1.1.0": version: 1.1.0 resolution: "@mswjs/cookies@npm:1.1.0" @@ -3933,19 +4042,28 @@ __metadata: languageName: node linkType: hard -"@mswjs/interceptors@npm:^0.17.10": - version: 0.17.10 - resolution: "@mswjs/interceptors@npm:0.17.10" +"@mswjs/data@npm:0.16.1": + version: 0.16.1 + resolution: "@mswjs/data@npm:0.16.1" 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" + "@types/lodash": "npm:^4.14.172" + "@types/md5": "npm:^2.3.0" + "@types/pluralize": "npm:^0.0.29" + "@types/uuid": "npm:^8.3.0" + date-fns: "npm:^2.21.1" + debug: "npm:^4.3.1" + graphql: "npm:^16.8.1" + lodash: "npm:^4.17.21" + md5: "npm:^2.3.0" + msw: "npm:^2.0.8" outvariant: "npm:^1.2.1" - strict-event-emitter: "npm:^0.2.4" - web-encoding: "npm:^1.1.5" - checksum: 10c0/0343a93711b60c321c40733d6bf2720a736d8e0730f5d0d9916ee4a24abfcfca4a83d1e4b2e21c3affef4fc61f04588104be002fbc8258dc4b0d202c384ade33 + pluralize: "npm:^8.0.0" + strict-event-emitter: "npm:^0.5.0" + uuid: "npm:^8.3.1" + dependenciesMeta: + msw: + optional: true + checksum: 10c0/9518f5e918b9bbf6fe87aa57950091282d5fb3a0b9d6ed5ab7746fe46ed326d958607932cb441e6f77378e2a957a01857e15d870f2697128a1f3c7237ffb02b0 languageName: node linkType: hard @@ -3963,6 +4081,13 @@ __metadata: languageName: node linkType: hard +"@noble/hashes@npm:^1.1.5": + version: 1.4.0 + resolution: "@noble/hashes@npm:1.4.0" + checksum: 10c0/8c3f005ee72e7b8f9cff756dfae1241485187254e3f743873e22073d63906863df5d4f13d441b7530ea614b7a093f0d889309f28b59850f33b66cb26a779a4a5 + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -4465,13 +4590,6 @@ __metadata: 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 - "@open-draft/until@npm:^2.0.0, @open-draft/until@npm:^2.1.0": version: 2.1.0 resolution: "@open-draft/until@npm:2.1.0" @@ -4479,6 +4597,15 @@ __metadata: languageName: node linkType: hard +"@paralleldrive/cuid2@npm:2.2.2": + version: 2.2.2 + resolution: "@paralleldrive/cuid2@npm:2.2.2" + dependencies: + "@noble/hashes": "npm:^1.1.5" + checksum: 10c0/af5826df93de437121308f4f4ce0b2eeb89b60bb57a1a6592fb89c0d40d311ad1d9f3f6a4db2cce6f2bcf572de1aa3f85704254e89b18ce61c41ebb06564c4ee + languageName: node + linkType: hard + "@parcel/watcher-android-arm64@npm:2.4.1": version: 2.4.1 resolution: "@parcel/watcher-android-arm64@npm:2.4.1" @@ -4913,6 +5040,17 @@ __metadata: languageName: node linkType: hard +"@remix-run/v1-route-convention@npm:^0.1.3": + version: 0.1.4 + resolution: "@remix-run/v1-route-convention@npm:0.1.4" + dependencies: + minimatch: "npm:^7.4.3" + peerDependencies: + "@remix-run/dev": ^1.15.0 || ^2.0.0 + checksum: 10c0/f9984d9212d6b5c910d2d3a84a37e13cdb0b078c6832bb8b8dc5b1242a0c9ddadf77eebfc3dbdfcc524364e999272ba6d85b998f19c02d5b94db12cff5e54d15 + languageName: node + linkType: hard + "@remix-run/web-blob@npm:^3.1.0": version: 3.1.0 resolution: "@remix-run/web-blob@npm:3.1.0" @@ -5092,6 +5230,13 @@ __metadata: languageName: node linkType: hard +"@sindresorhus/is@npm:^6.1.0": + version: 6.3.0 + resolution: "@sindresorhus/is@npm:6.3.0" + checksum: 10c0/40d201fc1abcab01f946f020c3f33dbaba9532af58eda6bd8f55f6cb77ddb093ac4b1016f53b4b3699f1c8ec653a52978ad0e86aae56c834e6968e6af08a68ac + languageName: node + linkType: hard + "@sinonjs/commons@npm:^3.0.0": version: 3.0.1 resolution: "@sinonjs/commons@npm:3.0.1" @@ -5480,6 +5625,15 @@ __metadata: languageName: node linkType: hard +"@szmarczak/http-timer@npm:^5.0.1": + version: 5.0.1 + resolution: "@szmarczak/http-timer@npm:5.0.1" + dependencies: + defer-to-connect: "npm:^2.0.1" + checksum: 10c0/4629d2fbb2ea67c2e9dc03af235c0991c79ebdddcbc19aed5d5732fb29ce01c13331e9b1a491584b9069bd6ecde6581dcbf871f11b7eefdebbab34de6cf2197e + languageName: node + linkType: hard + "@testcontainers/postgresql@npm:10.9.0": version: 10.9.0 resolution: "@testcontainers/postgresql@npm:10.9.0" @@ -5489,6 +5643,22 @@ __metadata: languageName: node linkType: hard +"@testing-library/dom@npm:10.0.0": + version: 10.0.0 + resolution: "@testing-library/dom@npm:10.0.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.3.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: 10c0/2d12d2a6018a6f1d15e91834180bc068932c699ff1fcbfb80aa21aba519a4f5329c861dfa852e06ee5615bcb92ef2a0f0e755e32684ea3dada63bc34248382ab + languageName: node + linkType: hard + "@testing-library/dom@npm:^9.0.0": version: 9.3.4 resolution: "@testing-library/dom@npm:9.3.4" @@ -5552,6 +5722,15 @@ __metadata: 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 + "@tokenizer/token@npm:^0.3.0": version: 0.3.0 resolution: "@tokenizer/token@npm:0.3.0" @@ -5691,13 +5870,6 @@ __metadata: 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/cookie@npm:^0.6.0": version: 0.6.0 resolution: "@types/cookie@npm:0.6.0" @@ -5705,7 +5877,7 @@ __metadata: languageName: node linkType: hard -"@types/debug@npm:^4.0.0, @types/debug@npm:^4.1.7": +"@types/debug@npm:^4.0.0": version: 4.1.12 resolution: "@types/debug@npm:4.1.12" dependencies: @@ -5763,7 +5935,7 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:^4.17.17": +"@types/express@npm:^4.17.17, @types/express@npm:^4.17.21": version: 4.17.21 resolution: "@types/express@npm:4.17.21" dependencies: @@ -5793,17 +5965,7 @@ __metadata: languageName: node linkType: hard -"@types/hoist-non-react-statics@npm:*": - version: 3.3.5 - resolution: "@types/hoist-non-react-statics@npm:3.3.5" - dependencies: - "@types/react": "npm:*" - hoist-non-react-statics: "npm:^3.3.0" - checksum: 10c0/2a3b64bf3d9817d7830afa60ee314493c475fb09570a64e7737084cd482d2177ebdddf888ce837350bac51741278b077683facc9541f052d4bbe8487b4e3e618 - languageName: node - linkType: hard - -"@types/http-cache-semantics@npm:*": +"@types/http-cache-semantics@npm:*, @types/http-cache-semantics@npm:^4.0.2": version: 4.0.4 resolution: "@types/http-cache-semantics@npm:4.0.4" checksum: 10c0/51b72568b4b2863e0fe8d6ce8aad72a784b7510d72dc866215642da51d84945a9459fa89f49ec48f1e9a1752e6a78e85a4cda0ded06b1c73e727610c925f9ce6 @@ -5842,13 +6004,6 @@ __metadata: 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" @@ -5888,6 +6043,20 @@ __metadata: languageName: node linkType: hard +"@types/lodash@npm:^4.14.172": + version: 4.17.0 + resolution: "@types/lodash@npm:4.17.0" + checksum: 10c0/4c5b41c9a6c41e2c05d08499e96f7940bcf194dcfa84356235b630da920c2a5e05f193618cea76006719bec61c76617dff02defa9d29934f9f6a76a49291bd8f + languageName: node + linkType: hard + +"@types/md5@npm:^2.3.0": + version: 2.3.5 + resolution: "@types/md5@npm:2.3.5" + checksum: 10c0/aef9c40ab0ec61f1ae2acb04ee04e55b99eeec64af58176ef36d4feaf6aac335f32caca07eca0e3a1813fc362bf0b8663423250e24b39ebcfdc24c6ca4abe1cf + languageName: node + linkType: hard + "@types/mdast@npm:^3.0.0": version: 3.0.15 resolution: "@types/mdast@npm:3.0.15" @@ -5927,7 +6096,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:20.12.7, @types/node@npm:^20.10.7, @types/node@npm:^20.12.7": +"@types/node@npm:*, @types/node@npm:20.12.7, @types/node@npm:^20.10.6, @types/node@npm:^20.10.7, @types/node@npm:^20.12.7": version: 20.12.7 resolution: "@types/node@npm:20.12.7" dependencies: @@ -5959,6 +6128,13 @@ __metadata: languageName: node linkType: hard +"@types/pluralize@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/pluralize@npm:0.0.29" + checksum: 10c0/840796fa1db158eb4d9787758d134736e29d9a8035f5b0cbad06e3801fc64b79112ba944c83f9a1a5b94da08703f505b8315b7e0f28bfc0f8e9e1ccfead7b083 + languageName: node + linkType: hard + "@types/prop-types@npm:*": version: 15.7.12 resolution: "@types/prop-types@npm:15.7.12" @@ -6045,15 +6221,6 @@ __metadata: 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/ssh2-streams@npm:*": version: 0.1.12 resolution: "@types/ssh2-streams@npm:0.1.12" @@ -6096,24 +6263,6 @@ __metadata: languageName: node linkType: hard -"@types/styled-components@npm:5.1.34": - version: 5.1.34 - resolution: "@types/styled-components@npm:5.1.34" - dependencies: - "@types/hoist-non-react-statics": "npm:*" - "@types/react": "npm:*" - csstype: "npm:^3.0.2" - checksum: 10c0/5bce93ea2c6161fc45daaf863eefdc20672e839ae486597c40b95e7978e249c160c1bc9706f56cb5152a7ef63cf485d15a9502889169ef945281f511e4b2d5a0 - languageName: node - linkType: hard - -"@types/stylis@npm:4.2.0": - version: 4.2.0 - resolution: "@types/stylis@npm:4.2.0" - checksum: 10c0/c76c13e76ca485f598a13984cfb5e07bb88a851da5bee213587424a5f101f182c74f4f92d633cebf9abcec40ccebb645d600d184b7e4b42793e3eeca8729b110 - languageName: node - linkType: hard - "@types/triple-beam@npm:^1.3.2": version: 1.3.5 resolution: "@types/triple-beam@npm:1.3.5" @@ -6128,6 +6277,13 @@ __metadata: languageName: node linkType: hard +"@types/uuid@npm:^8.3.0": + version: 8.3.4 + resolution: "@types/uuid@npm:8.3.4" + checksum: 10c0/b9ac98f82fcf35962317ef7dc44d9ac9e0f6fdb68121d384c88fe12ea318487d5585d3480fa003cf28be86a3bbe213ca688ba786601dce4a97724765eb5b1cf2 + languageName: node + linkType: hard + "@types/wrap-ansi@npm:^3.0.0": version: 3.0.0 resolution: "@types/wrap-ansi@npm:3.0.0" @@ -6353,7 +6509,7 @@ __metadata: languageName: node linkType: hard -"@vanilla-extract/babel-plugin-debug-ids@npm:^1.0.4": +"@vanilla-extract/babel-plugin-debug-ids@npm:^1.0.4, @vanilla-extract/babel-plugin-debug-ids@npm:^1.0.5": version: 1.0.5 resolution: "@vanilla-extract/babel-plugin-debug-ids@npm:1.0.5" dependencies: @@ -6362,22 +6518,22 @@ __metadata: languageName: node linkType: hard -"@vanilla-extract/css@npm:^1.14.0": - version: 1.14.2 - resolution: "@vanilla-extract/css@npm:1.14.2" +"@vanilla-extract/css@npm:1.15.1, @vanilla-extract/css@npm:^1.14.0, @vanilla-extract/css@npm:^1.15.1": + version: 1.15.1 + resolution: "@vanilla-extract/css@npm:1.15.1" dependencies: "@emotion/hash": "npm:^0.9.0" "@vanilla-extract/private": "npm:^1.0.4" - chalk: "npm:^4.1.1" css-what: "npm:^6.1.0" cssesc: "npm:^3.0.0" csstype: "npm:^3.0.7" + dedent: "npm:^1.5.1" deep-object-diff: "npm:^1.1.9" deepmerge: "npm:^4.2.2" media-query-parser: "npm:^2.0.2" modern-ahocorasick: "npm:^1.0.0" - outdent: "npm:^0.8.0" - checksum: 10c0/3a0d57815afbd8131b8235fc38a9f74413f7a0d46e5d59dc7aa404123e50168a646fbd765c4b55cdac0fc67f0c2695b1e6feecd16ac8d92887f3858ba273aa99 + picocolors: "npm:^1.0.0" + checksum: 10c0/f8c72779f5814a23f4fe5cfba60e606499edbce1b521a48e65ae68153d1042aa2396d00f5c3b00272f3c246c625dfd438b55f1357ccc453e576e9679bb3d8d58 languageName: node linkType: hard @@ -6402,6 +6558,26 @@ __metadata: languageName: node linkType: hard +"@vanilla-extract/integration@npm:^7.1.3": + version: 7.1.3 + resolution: "@vanilla-extract/integration@npm:7.1.3" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/plugin-syntax-typescript": "npm:^7.23.3" + "@vanilla-extract/babel-plugin-debug-ids": "npm:^1.0.5" + "@vanilla-extract/css": "npm:^1.15.1" + dedent: "npm:^1.5.1" + esbuild: "npm:esbuild@~0.17.6 || ~0.18.0 || ~0.19.0" + eval: "npm:0.1.8" + find-up: "npm:^5.0.0" + javascript-stringify: "npm:^2.0.1" + mlly: "npm:^1.4.2" + vite: "npm:^5.0.11" + vite-node: "npm:^1.2.0" + checksum: 10c0/eb903c7c4062ec3d098ab56938724504966ce4343160e286280d3a3a0f617cf7e41a344abd92d607be59a2164eb22fc776e6da97c0e02e3a9705e115f4c16c6c + languageName: node + linkType: hard + "@vanilla-extract/private@npm:^1.0.4": version: 1.0.4 resolution: "@vanilla-extract/private@npm:1.0.4" @@ -6409,6 +6585,26 @@ __metadata: languageName: node linkType: hard +"@vanilla-extract/sprinkles@npm:1.6.1": + version: 1.6.1 + resolution: "@vanilla-extract/sprinkles@npm:1.6.1" + peerDependencies: + "@vanilla-extract/css": ^1.0.0 + checksum: 10c0/7ddd2ab7c88b5740260e09aba5399d938d9a46142a0652842e8cd3fe34cd2fd2fbeb75060718bb44cb1a81dce280bb9955ae35defd89f7045e3a6822baf2b5ae + languageName: node + linkType: hard + +"@vanilla-extract/vite-plugin@npm:4.0.9": + version: 4.0.9 + resolution: "@vanilla-extract/vite-plugin@npm:4.0.9" + dependencies: + "@vanilla-extract/integration": "npm:^7.1.3" + peerDependencies: + vite: ^4.0.3 || ^5.0.0 + checksum: 10c0/f77fc14a5e34ac39f671130002c85362f7c0888520290b0cf39850151c434c95ade7fd3e54a37cf30879a1643a9c09f45187a4e9e179ed318807d1e28f66fe15 + languageName: node + linkType: hard + "@vitejs/plugin-react@npm:4.2.1": version: 4.2.1 resolution: "@vitejs/plugin-react@npm:4.2.1" @@ -6424,9 +6620,9 @@ __metadata: languageName: node linkType: hard -"@vitest/coverage-v8@npm:1.5.1": - version: 1.5.1 - resolution: "@vitest/coverage-v8@npm:1.5.1" +"@vitest/coverage-v8@npm:1.5.2": + version: 1.5.2 + resolution: "@vitest/coverage-v8@npm:1.5.2" dependencies: "@ampproject/remapping": "npm:^2.2.1" "@bcoe/v8-coverage": "npm:^0.2.3" @@ -6442,58 +6638,58 @@ __metadata: strip-literal: "npm:^2.0.0" test-exclude: "npm:^6.0.0" peerDependencies: - vitest: 1.5.1 - checksum: 10c0/614b0a7ca024af243808e14deab98abad5a11b63102a9d2abe6f7647cefa11b5e4553e818344a75b7ecd9e9cd16a1872dbcd97e37b8ce7ba2af5ae5bd0438a48 + vitest: 1.5.2 + checksum: 10c0/cc982753969ca31033072324121288fc1945bc7ad09cc00ade9e2d29852acbfb97b177e7bfd0ab6c4cacab1e6600da1e287ed11e340745ffbe55d19212c25cc7 languageName: node linkType: hard -"@vitest/expect@npm:1.5.1": - version: 1.5.1 - resolution: "@vitest/expect@npm:1.5.1" +"@vitest/expect@npm:1.5.2": + version: 1.5.2 + resolution: "@vitest/expect@npm:1.5.2" dependencies: - "@vitest/spy": "npm:1.5.1" - "@vitest/utils": "npm:1.5.1" + "@vitest/spy": "npm:1.5.2" + "@vitest/utils": "npm:1.5.2" chai: "npm:^4.3.10" - checksum: 10c0/4743ca8de3ce269dca4aaf441a2a4d07510d341aeee7be59d17277c9a26b48c00541dd0570eb3d465f62290947135c8ef9978bc2697eadfbbd01cc7f0cdfdc37 + checksum: 10c0/4e8400a55f9e2d4a5a5e2be8c5679fb0a3bfa7550085597b4022320bd9d8f70663707bb4ea02a5403b5327f405d7bc3de5dd21bbf43a8aabc6ceecfc83760ba8 languageName: node linkType: hard -"@vitest/runner@npm:1.5.1": - version: 1.5.1 - resolution: "@vitest/runner@npm:1.5.1" +"@vitest/runner@npm:1.5.2": + version: 1.5.2 + resolution: "@vitest/runner@npm:1.5.2" dependencies: - "@vitest/utils": "npm:1.5.1" + "@vitest/utils": "npm:1.5.2" p-limit: "npm:^5.0.0" pathe: "npm:^1.1.1" - checksum: 10c0/a079c111c9082360b471dbc1f46a82dc3521a768f2bba7a2036f24a7d0b27161ce8f922a553ac03c9e35b77a33d37b1bbbf9ff67eb4bd111c3a130028b513793 + checksum: 10c0/9fc3e668817ceb49785a366959281eee31739b393b7629d19534a0f3044558663130275cf0631c1821cdf916b491bc3e8b57da1cfaeefa66a99473c08c4e7621 languageName: node linkType: hard -"@vitest/snapshot@npm:1.5.1": - version: 1.5.1 - resolution: "@vitest/snapshot@npm:1.5.1" +"@vitest/snapshot@npm:1.5.2": + version: 1.5.2 + resolution: "@vitest/snapshot@npm:1.5.2" dependencies: magic-string: "npm:^0.30.5" pathe: "npm:^1.1.1" pretty-format: "npm:^29.7.0" - checksum: 10c0/d3d769873b16297f6e9bc64c8394110ef981dc8f271f608270ee89d1a92e5515e56d9c2bede21fd3881baf919882652f9c912a435a6092147aafbc21d10f828d + checksum: 10c0/67ae235e59f1adec1e6a44e2a8ea1d2ee98f2416d3ccf566798474ee98943b87b3f20c2098e193866b01780ae4c767239e4f94dbbb3daf0f0978b8106e8e86b1 languageName: node linkType: hard -"@vitest/spy@npm:1.5.1": - version: 1.5.1 - resolution: "@vitest/spy@npm:1.5.1" +"@vitest/spy@npm:1.5.2": + version: 1.5.2 + resolution: "@vitest/spy@npm:1.5.2" dependencies: tinyspy: "npm:^2.2.0" - checksum: 10c0/865b94bc99a865c8adc813f25cc797b2f7ffdc7807ed54ce64f86125a8227ac80078b29c86d3463bb71febdddc582bd9f8d74f14c6089f088c1cd8af57691283 + checksum: 10c0/d66de2873f762ba9a45ca03fe9d11db0c1910635e02289a5b54746c41bd68366b9d198b265e13a8608cc21774f4f197afb25acbba5c0769e651598df0eaab5b3 languageName: node linkType: hard -"@vitest/ui@npm:1.5.1": - version: 1.5.1 - resolution: "@vitest/ui@npm:1.5.1" +"@vitest/ui@npm:1.5.2": + version: 1.5.2 + resolution: "@vitest/ui@npm:1.5.2" dependencies: - "@vitest/utils": "npm:1.5.1" + "@vitest/utils": "npm:1.5.2" fast-glob: "npm:^3.3.2" fflate: "npm:^0.8.1" flatted: "npm:^3.2.9" @@ -6501,20 +6697,20 @@ __metadata: picocolors: "npm:^1.0.0" sirv: "npm:^2.0.4" peerDependencies: - vitest: 1.5.1 - checksum: 10c0/efba22a08b639ea0a0c31c189585c392018209bc38783378c46f1f522c736f835c36aadb5318ae92b58f33513ef9fc91b72d7bef2ebdef4bab4a27c558355e49 + vitest: 1.5.2 + checksum: 10c0/85fc78e0b30dee903683023c0db0c8e72956c26307d05868c2e462187ff0dc5e6f65ccef97c0f089cb3034f87101e25faa271fd1f2befb9dc1d6dd65378c9e54 languageName: node linkType: hard -"@vitest/utils@npm:1.5.1": - version: 1.5.1 - resolution: "@vitest/utils@npm:1.5.1" +"@vitest/utils@npm:1.5.2": + version: 1.5.2 + resolution: "@vitest/utils@npm:1.5.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: 10c0/45bef3c3c5505943f099937dadd28f8468a86220527f46de8b69c7cd581e7703f2b82831c331ea1dbd5bdf72b24d9ed4bb262343189352642d187b6f75e4e249 + checksum: 10c0/019eeac016deb5d2434db4990b2ba1ebf37434a020c3d6bcf163c77af80e01dd9add7b3d379bdacd91497847026a5bd2aafe393035c48f5296ce5275bad00126 languageName: node linkType: hard @@ -6598,13 +6794,6 @@ __metadata: 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 - "@yarnpkg/lockfile@npm:^1.1.0": version: 1.1.0 resolution: "@yarnpkg/lockfile@npm:1.1.0" @@ -6668,7 +6857,7 @@ __metadata: languageName: node linkType: hard -"accepts@npm:~1.3.5, accepts@npm:~1.3.8": +"accepts@npm:^1.3.7, accepts@npm:~1.3.5, accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" dependencies: @@ -6861,17 +7050,26 @@ __metadata: dependencies: "@graphql-typed-document-node/core": "npm:3.2.0" "@hono/node-server": "npm:1.11.0" + "@mswjs/data": "npm:0.16.1" "@nx/vite": "npm:18.3.3" + "@paralleldrive/cuid2": "npm:2.2.2" "@remix-run/dev": "npm:2.9.1" "@remix-run/node": "npm:2.9.1" "@remix-run/react": "npm:2.9.1" + "@remix-run/server-runtime": "npm:2.9.1" "@remix-run/testing": "npm:2.9.1" + "@testing-library/dom": "npm:10.0.0" "@testing-library/jest-dom": "npm:6.4.2" "@testing-library/react": "npm:14.3.0" + "@testing-library/user-event": "npm:14.5.2" "@types/node": "npm:20.12.7" "@types/react": "npm:18.2.75" "@types/react-dom": "npm:18.2.24" + "@vanilla-extract/css": "npm:1.15.1" + "@vanilla-extract/sprinkles": "npm:1.6.1" + "@vanilla-extract/vite-plugin": "npm:4.0.9" "@vitejs/plugin-react": "npm:4.2.1" + "@vitest/expect": "npm:1.5.2" eslint-plugin-jsx-a11y: "npm:6.8.0" eslint-plugin-react: "npm:7.34.1" eslint-plugin-react-hooks: "npm:4.6.0" @@ -6880,14 +7078,21 @@ __metadata: hono: "npm:4.2.4" isbot: "npm:4" jest-extended: "npm:4.0.2" + jwt-decode: "npm:4.0.0" msw: "npm:2.2.14" react: "npm:18.2.0" react-dom: "npm:18.2.0" + remix-auth: "npm:3.6.0" + remix-auth-auth0: "npm:1.10.0" + remix-auth-oauth2: "npm:1.11.2" + remix-flat-routes: "npm:0.6.4" remix-hono: "npm:0.0.16" + tiny-invariant: "npm:1.3.3" tslib: "npm:2.6.2" typescript: "npm:5.4.5" + uuid: "npm:9.0.1" vite: "npm:5.2.10" - vitest: "npm:1.5.1" + vitest: "npm:1.5.2" languageName: unknown linkType: soft @@ -6988,7 +7193,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.0.0, aria-query@npm:^5.3.0": +"aria-query@npm:5.3.0, aria-query@npm:^5.0.0, aria-query@npm:^5.3.0": version: 5.3.0 resolution: "aria-query@npm:5.3.0" dependencies: @@ -7834,6 +8039,28 @@ __metadata: languageName: node linkType: hard +"cacheable-lookup@npm:^7.0.0": + version: 7.0.0 + resolution: "cacheable-lookup@npm:7.0.0" + checksum: 10c0/63a9c144c5b45cb5549251e3ea774c04d63063b29e469f7584171d059d3a88f650f47869a974e2d07de62116463d742c287a81a625e791539d987115cb081635 + languageName: node + linkType: hard + +"cacheable-request@npm:^10.2.14": + version: 10.2.14 + resolution: "cacheable-request@npm:10.2.14" + dependencies: + "@types/http-cache-semantics": "npm:^4.0.2" + get-stream: "npm:^6.0.1" + http-cache-semantics: "npm:^4.1.1" + keyv: "npm:^4.5.3" + mimic-response: "npm:^4.0.0" + normalize-url: "npm:^8.0.0" + responselike: "npm:^3.0.0" + checksum: 10c0/41b6658db369f20c03128227ecd219ca7ac52a9d24fc0f499cc9aa5d40c097b48b73553504cebd137024d957c0ddb5b67cf3ac1439b136667f3586257763f88d + languageName: node + linkType: hard + "cacheable-request@npm:^7.0.2": version: 7.0.4 resolution: "cacheable-request@npm:7.0.4" @@ -7900,13 +8127,6 @@ __metadata: languageName: node linkType: hard -"camelize@npm:^1.0.0": - version: 1.0.1 - resolution: "camelize@npm:1.0.1" - checksum: 10c0/4c9ac55efd356d37ac483bad3093758236ab686192751d1c9daa43188cc5a07b09bd431eb7458a4efd9ca22424bba23253e7b353feb35d7c749ba040de2385fb - languageName: node - linkType: hard - "caniuse-lite@npm:^1.0.30001587": version: 1.0.30001608 resolution: "caniuse-lite@npm:1.0.30001608" @@ -8065,6 +8285,13 @@ __metadata: languageName: node linkType: hard +"charenc@npm:0.0.2": + version: 0.0.2 + resolution: "charenc@npm:0.0.2" + checksum: 10c0/a45ec39363a16799d0f9365c8dd0c78e711415113c6f14787a22462ef451f5013efae8a28f1c058f81fc01f2a6a16955f7a5fd0cd56247ce94a45349c89877d8 + languageName: node + linkType: hard + "check-error@npm:^1.0.3": version: 1.0.3 resolution: "check-error@npm:1.0.3" @@ -8074,7 +8301,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.4.2, chokidar@npm:^3.5.1, chokidar@npm:^3.5.3": +"chokidar@npm:^3.5.1, chokidar@npm:^3.5.3": version: 3.6.0 resolution: "chokidar@npm:3.6.0" dependencies: @@ -8487,7 +8714,7 @@ __metadata: languageName: node linkType: hard -"content-disposition@npm:0.5.4, content-disposition@npm:^0.5.4": +"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: @@ -8554,13 +8781,6 @@ __metadata: 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 - "cookie@npm:^0.5.0": version: 0.5.0 resolution: "cookie@npm:0.5.0" @@ -8737,10 +8957,10 @@ __metadata: languageName: node linkType: hard -"css-color-keywords@npm:^1.0.0": - version: 1.0.0 - resolution: "css-color-keywords@npm:1.0.0" - checksum: 10c0/af205a86c68e0051846ed91eb3e30b4517e1904aac040013ff1d742019b3f9369ba5658ba40901dbbc121186fc4bf0e75a814321cc3e3182fbb2feb81c6d9cb7 +"crypt@npm:0.0.2": + version: 0.0.2 + resolution: "crypt@npm:0.0.2" + checksum: 10c0/adbf263441dd801665d5425f044647533f39f4612544071b1471962209d235042fb703c27eea2795c7c53e1dfc242405173003f83cf4f4761a633d11f9653f18 languageName: node linkType: hard @@ -8757,17 +8977,6 @@ __metadata: languageName: node linkType: hard -"css-to-react-native@npm:3.2.0": - version: 3.2.0 - resolution: "css-to-react-native@npm:3.2.0" - dependencies: - camelize: "npm:^1.0.0" - css-color-keywords: "npm:^1.0.0" - postcss-value-parser: "npm:^4.0.2" - checksum: 10c0/fde850a511d5d3d7c55a1e9b8ed26b69a8ad4868b3487e36ebfbfc0b96fc34bc977d9cd1d61a289d0c74d3f9a662d8cee297da53d4433bf2e27d6acdff8e1003 - languageName: node - linkType: hard - "css-tree@npm:^2.3.1": version: 2.3.1 resolution: "css-tree@npm:2.3.1" @@ -8820,13 +9029,6 @@ __metadata: languageName: node linkType: hard -"csstype@npm:3.1.2": - version: 3.1.2 - resolution: "csstype@npm:3.1.2" - checksum: 10c0/32c038af259897c807ac738d9eab16b3d86747c72b09d5c740978e06f067f9b7b1737e1b75e407c7ab1fe1543dc95f20e202b4786aeb1b8d3bdf5d5ce655e6c6 - languageName: node - linkType: hard - "csstype@npm:^3.0.2, csstype@npm:^3.0.7": version: 3.1.3 resolution: "csstype@npm:3.1.3" @@ -8834,13 +9036,6 @@ __metadata: languageName: node linkType: hard -"cuid@npm:3.0.0": - version: 3.0.0 - resolution: "cuid@npm:3.0.0" - checksum: 10c0/e1cac04b8df3222fa612ac23f5ad1839f31ec58778a1cfcb23231224f3fe63cc0bb1747188f349bc93f87a74f574ace31ddcb3e60f5eb4543ff5c9e9458a0168 - languageName: node - linkType: hard - "cuint@npm:^0.2.2": version: 0.2.2 resolution: "cuint@npm:0.2.2" @@ -8919,6 +9114,15 @@ __metadata: languageName: node linkType: hard +"date-fns@npm:^2.21.1": + 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-fn@npm:^4.0.0": version: 4.0.0 resolution: "debounce-fn@npm:4.0.0" @@ -8944,7 +9148,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.3.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": +"debug@npm:4, debug@npm:4.3.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.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -8990,7 +9194,7 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^1.0.0": +"dedent@npm:^1.0.0, dedent@npm:^1.5.1": version: 1.5.3 resolution: "dedent@npm:1.5.3" peerDependencies: @@ -9067,7 +9271,7 @@ __metadata: languageName: node linkType: hard -"defer-to-connect@npm:^2.0.0": +"defer-to-connect@npm:^2.0.0, defer-to-connect@npm:^2.0.1": version: 2.0.1 resolution: "defer-to-connect@npm:2.0.1" checksum: 10c0/625ce28e1b5ad10cf77057b9a6a727bf84780c17660f6644dab61dd34c23de3001f03cedc401f7d30a4ed9965c2e8a7336e220a329146f2cf85d4eddea429782 @@ -9117,6 +9321,13 @@ __metadata: languageName: node linkType: hard +"depd@npm:^1.1.0": + 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" @@ -10710,13 +10921,6 @@ __metadata: languageName: node linkType: hard -"events@npm:^3.3.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 - languageName: node - linkType: hard - "execa@npm:5.1.1, execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" @@ -11266,6 +11470,13 @@ __metadata: languageName: node linkType: hard +"form-data-encoder@npm:^4.0.2": + version: 4.0.2 + resolution: "form-data-encoder@npm:4.0.2" + checksum: 10c0/559d3130e265316452434eaf68d68560fb36392ff4d04614683419de4fb43c3dbe152dc303599fae382ce24d3451a6d3d289d3bcc182ae3d8ad32e7ce8e35e53 + languageName: node + linkType: hard + "form-data@npm:^4.0.0": version: 4.0.0 resolution: "form-data@npm:4.0.0" @@ -11291,7 +11502,7 @@ __metadata: languageName: node linkType: hard -"fresh@npm:0.5.2": +"fresh@npm:0.5.2, fresh@npm:^0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a @@ -11316,7 +11527,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.1.0": +"fs-extra@npm:^11.1.0, fs-extra@npm:^11.1.1": version: 11.2.0 resolution: "fs-extra@npm:11.2.0" dependencies: @@ -11496,7 +11707,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^6.0.0": +"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 @@ -11667,6 +11878,25 @@ __metadata: languageName: node linkType: hard +"got@npm:14.2.1": + version: 14.2.1 + resolution: "got@npm:14.2.1" + dependencies: + "@sindresorhus/is": "npm:^6.1.0" + "@szmarczak/http-timer": "npm:^5.0.1" + cacheable-lookup: "npm:^7.0.0" + cacheable-request: "npm:^10.2.14" + decompress-response: "npm:^6.0.0" + form-data-encoder: "npm:^4.0.2" + get-stream: "npm:^8.0.1" + http2-wrapper: "npm:^2.2.1" + lowercase-keys: "npm:^3.0.0" + p-cancelable: "npm:^4.0.1" + responselike: "npm:^3.0.0" + checksum: 10c0/6592f70d570d988ace9f3c7ecd4e01d34c96ff5fc2896abce1b820b1e48c6661690c5a692495ad1334054e6051efcfa056165bc863b1d90dd3659bdf0ec9421f + languageName: node + linkType: hard + "got@npm:^11.8.5": version: 11.8.6 resolution: "got@npm:11.8.6" @@ -11737,6 +11967,17 @@ __metadata: languageName: node linkType: hard +"graphql-scalars@npm:1.23.0": + version: 1.23.0 + resolution: "graphql-scalars@npm:1.23.0" + 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/7666c305b8367528c4fbb583a2731d93d52f36043d71f4957ecc1d2db71d710d268e25535243beb1b2497db921daa94d3cfa83daaf4a3101a667f358ddbf3436 + languageName: node + linkType: hard + "graphql-tag@npm:^2.11.0": version: 2.12.6 resolution: "graphql-tag@npm:2.12.6" @@ -11748,6 +11989,15 @@ __metadata: languageName: node linkType: hard +"graphql-transform-scalars@npm:1.2.1": + version: 1.2.1 + resolution: "graphql-transform-scalars@npm:1.2.1" + peerDependencies: + graphql: ">=15" + checksum: 10c0/d170e808a2f09fba140808d5bf2c77f887d1dc8d19fc200c1d9de157b2b37a448983181488a9a6370a10e867de4fa5a2da60bd9460598a373f54f278b553e9a1 + languageName: node + linkType: hard + "graphql-ws@npm:^5.14.0": version: 5.16.0 resolution: "graphql-ws@npm:5.16.0" @@ -11940,13 +12190,6 @@ __metadata: 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 - "headers-polyfill@npm:^4.0.2": version: 4.0.3 resolution: "headers-polyfill@npm:4.0.3" @@ -11961,15 +12204,6 @@ __metadata: languageName: node linkType: hard -"hoist-non-react-statics@npm:^3.3.0": - 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 - "hono@npm:4.2.4": version: 4.2.4 resolution: "hono@npm:4.2.4" @@ -12106,6 +12340,16 @@ __metadata: languageName: node linkType: hard +"http2-wrapper@npm:^2.2.1": + version: 2.2.1 + resolution: "http2-wrapper@npm:2.2.1" + dependencies: + quick-lru: "npm:^5.1.1" + resolve-alpn: "npm:^1.2.0" + checksum: 10c0/7207201d3c6e53e72e510c9b8912e4f3e468d3ecc0cf3bf52682f2aac9cd99358b896d1da4467380adc151cf97c412bedc59dc13dae90c523f42053a7449eedb + languageName: node + linkType: hard + "https-proxy-agent@npm:^7.0.0, https-proxy-agent@npm:^7.0.1": version: 7.0.4 resolution: "https-proxy-agent@npm:7.0.4" @@ -12265,7 +12509,7 @@ __metadata: languageName: node linkType: hard -"inquirer@npm:^8.0.0, inquirer@npm:^8.2.0": +"inquirer@npm:^8.0.0": version: 8.2.6 resolution: "inquirer@npm:8.2.6" dependencies: @@ -12430,6 +12674,13 @@ __metadata: languageName: node linkType: hard +"is-buffer@npm:~1.1.6": + version: 1.1.6 + resolution: "is-buffer@npm:1.1.6" + checksum: 10c0/ae18aa0b6e113d6c490ad1db5e8df9bdb57758382b313f5a22c9c61084875c6396d50bbf49315f5b1926d142d74dfb8d31b40d993a383e0a158b15fea7a82234 + languageName: node + linkType: hard + "is-builtin-module@npm:^3.2.1": version: 3.2.1 resolution: "is-builtin-module@npm:3.2.1" @@ -13429,13 +13680,6 @@ __metadata: 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" @@ -13706,6 +13950,13 @@ __metadata: languageName: node linkType: hard +"jwt-decode@npm:4.0.0": + version: 4.0.0 + resolution: "jwt-decode@npm:4.0.0" + checksum: 10c0/de75bbf89220746c388cf6a7b71e56080437b77d2edb29bae1c2155048b02c6b8c59a3e5e8d6ccdfd54f0b8bda25226e491a4f1b55ac5f8da04cfbadec4e546c + languageName: node + linkType: hard + "keyv@npm:^4.0.0, keyv@npm:^4.5.3, keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -14195,6 +14446,13 @@ __metadata: languageName: node linkType: hard +"lowercase-keys@npm:^3.0.0": + version: 3.0.0 + resolution: "lowercase-keys@npm:3.0.0" + checksum: 10c0/ef62b9fa5690ab0a6e4ef40c94efce68e3ed124f583cc3be38b26ff871da0178a28b9a84ce0c209653bb25ca135520ab87fea7cd411a54ac4899cb2f30501430 + languageName: node + linkType: hard + "lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.2.0 resolution: "lru-cache@npm:10.2.0" @@ -14353,6 +14611,17 @@ __metadata: languageName: node linkType: hard +"md5@npm:^2.3.0": + version: 2.3.0 + resolution: "md5@npm:2.3.0" + dependencies: + charenc: "npm:0.0.2" + crypt: "npm:0.0.2" + is-buffer: "npm:~1.1.6" + checksum: 10c0/14a21d597d92e5b738255fbe7fe379905b8cb97e0a49d44a20b58526a646ec5518c337b817ce0094ca94d3e81a3313879c4c7b510d250c282d53afbbdede9110 + languageName: node + linkType: hard + "mdast-util-definitions@npm:^5.0.0": version: 5.1.2 resolution: "mdast-util-definitions@npm:5.1.2" @@ -14565,6 +14834,13 @@ __metadata: languageName: node linkType: hard +"merge-descriptors@npm:^1.0.1": + 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" @@ -14591,7 +14867,7 @@ __metadata: languageName: node linkType: hard -"methods@npm:~1.1.2": +"methods@npm:^1.1.2, methods@npm:~1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 @@ -14980,7 +15256,7 @@ __metadata: languageName: node linkType: hard -"mime@npm:1.6.0, mime@npm:^1.6.0": +"mime@npm:1.6.0, mime@npm:^1.3.4, mime@npm:^1.6.0": version: 1.6.0 resolution: "mime@npm:1.6.0" bin: @@ -15024,6 +15300,13 @@ __metadata: languageName: node linkType: hard +"mimic-response@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-response@npm:4.0.0" + checksum: 10c0/761d788d2668ae9292c489605ffd4fad220f442fbae6832adce5ebad086d691e906a6d5240c290293c7a11e99fbdbbef04abbbed498bf8699a4ee0f31315e3fb + languageName: node + linkType: hard + "min-indent@npm:^1.0.0": version: 1.0.1 resolution: "min-indent@npm:1.0.1" @@ -15237,6 +15520,19 @@ __metadata: languageName: node linkType: hard +"mock-jwks@patch:mock-jwks@npm%3A3.1.0#~/.yarn/patches/mock-jwks-npm-3.1.0-131e3bbc29.patch": + version: 3.1.0 + resolution: "mock-jwks@patch:mock-jwks@npm%3A3.1.0#~/.yarn/patches/mock-jwks-npm-3.1.0-131e3bbc29.patch::version=3.1.0&hash=3d08e1" + dependencies: + base64-url: "npm:^2.3.3" + jsonwebtoken: "npm:^9.0.0" + msw: "npm:^1.2.2" + node-forge: "npm:^1.3.1" + node-rsa: "npm:^1.1.1" + checksum: 10c0/678cdce347ae03d4cd96b46052ab759fe85d4ceadabf3105bf6c27cbd12f536033509d64070a0c7dc7a9cd96d83f70de07665f067df8547c36b9b3514db253b7 + languageName: node + linkType: hard + "modern-ahocorasick@npm:^1.0.0": version: 1.0.1 resolution: "modern-ahocorasick@npm:1.0.1" @@ -15299,7 +15595,7 @@ __metadata: languageName: node linkType: hard -"msw@npm:2.2.14": +"msw@npm:2.2.14, msw@npm:^2.0.8": version: 2.2.14 resolution: "msw@npm:2.2.14" dependencies: @@ -15331,40 +15627,6 @@ __metadata: languageName: node linkType: hard -"msw@npm:^1.2.2": - version: 1.3.3 - resolution: "msw@npm:1.3.3" - 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" - peerDependenciesMeta: - typescript: - optional: true - bin: - msw: cli/index.js - checksum: 10c0/0c63b282a53a1a69194729bf9cb77005a682dfbbb1dac6b1a33c9bfecde7f6df1dfaabdff9336b97ed6c29ebd52d6debdae7e506d7baa8eb8fd1e05683dbc398 - languageName: node - linkType: hard - "mute-stream@npm:0.0.8": version: 0.0.8 resolution: "mute-stream@npm:0.0.8" @@ -15388,7 +15650,7 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": +"nanoid@npm:^3.3.7": version: 3.3.7 resolution: "nanoid@npm:3.3.7" bin: @@ -15457,7 +15719,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.0.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7, node-fetch@npm:^2.7.0": +"node-fetch@npm:^2.0.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.7.0": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -15523,6 +15785,26 @@ __metadata: languageName: node linkType: hard +"node-mocks-http@npm:1.14.1": + version: 1.14.1 + resolution: "node-mocks-http@npm:1.14.1" + dependencies: + "@types/express": "npm:^4.17.21" + "@types/node": "npm:^20.10.6" + accepts: "npm:^1.3.7" + content-disposition: "npm:^0.5.3" + depd: "npm:^1.1.0" + fresh: "npm:^0.5.2" + merge-descriptors: "npm:^1.0.1" + methods: "npm:^1.1.2" + mime: "npm:^1.3.4" + parseurl: "npm:^1.3.3" + range-parser: "npm:^1.2.0" + type-is: "npm:^1.6.18" + checksum: 10c0/bd091ea1de3e00453cd85b114503558c25ab8df195ade3f37d34bb4d1c1096ccc818f51010ae8eaa5ca2fea919cfc624b647c621a4558a6dee710a30038ff64d + languageName: node + linkType: hard + "node-releases@npm:^2.0.14": version: 2.0.14 resolution: "node-releases@npm:2.0.14" @@ -15597,6 +15879,13 @@ __metadata: languageName: node linkType: hard +"normalize-url@npm:^8.0.0": + version: 8.0.1 + resolution: "normalize-url@npm:8.0.1" + checksum: 10c0/eb439231c4b84430f187530e6fdac605c5048ef4ec556447a10c00a91fc69b52d8d8298d9d608e68d3e0f7dc2d812d3455edf425e0f215993667c3183bcab1ef + languageName: node + linkType: hard + "npm-install-checks@npm:^6.0.0": version: 6.3.0 resolution: "npm-install-checks@npm:6.3.0" @@ -16036,6 +16325,13 @@ __metadata: languageName: node linkType: hard +"p-cancelable@npm:^4.0.1": + version: 4.0.1 + resolution: "p-cancelable@npm:4.0.1" + checksum: 10c0/12636623f46784ba962b6fe7a1f34d021f1d9a2cc12c43e270baa715ea872d5c8c7d9f086ed420b8b9817e91d9bbe92c14c90e5dddd4a9968c81a2a7aef7089d + languageName: node + linkType: hard + "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -16203,7 +16499,7 @@ __metadata: languageName: node linkType: hard -"parseurl@npm:~1.3.3": +"parseurl@npm:^1.3.3, parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 @@ -16593,24 +16889,13 @@ __metadata: languageName: node linkType: hard -"postcss-value-parser@npm:^4.0.2, postcss-value-parser@npm:^4.1.0": +"postcss-value-parser@npm:^4.1.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 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: 10c0/748b82e6e5fc34034dcf2ae88ea3d11fd09f69b6c50ecdd3b4a875cfc7cdca435c958b211e2cb52355422ab6fccb7d8f2f2923161d7a1b281029e4a913d59acf - languageName: node - linkType: hard - "postcss@npm:^8.4.19, postcss@npm:^8.4.38": version: 8.4.38 resolution: "postcss@npm:8.4.38" @@ -16903,7 +17188,7 @@ __metadata: languageName: node linkType: hard -"range-parser@npm:~1.2.1": +"range-parser@npm:^1.2.0, range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 @@ -16941,7 +17226,7 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.13.1, react-is@npm:^16.7.0": +"react-is@npm:^16.13.1": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 @@ -17284,6 +17569,70 @@ __metadata: languageName: node linkType: hard +"remix-auth-auth0@npm:1.10.0": + version: 1.10.0 + resolution: "remix-auth-auth0@npm:1.10.0" + dependencies: + remix-auth-oauth2: "npm:1.10.0" + peerDependencies: + "@remix-run/server-runtime": 1.x || 2.x + remix-auth: 3.x + checksum: 10c0/86d0170c80cd9f7c3e99a3342bedf3642e2e806c9a953c543dde2bb1da348ae1c238d8ecda11794b3539508863ccb1243b8f82e706c7fe8461680a94145a8208 + languageName: node + linkType: hard + +"remix-auth-oauth2@npm:1.10.0": + version: 1.10.0 + resolution: "remix-auth-oauth2@npm:1.10.0" + dependencies: + debug: "npm:^4.3.4" + peerDependencies: + "@remix-run/server-runtime": ^1.0.0 || ^2.0.0 + remix-auth: ^3.6.0 + checksum: 10c0/88d7f0da6052f484e21892355ac3cf7f58b6c53f25f5da74f18390556b4acec86bf3e349442c3e705150ff2655ee43e46b6da1730ef1bb1ec3f04349b73e2e06 + languageName: node + linkType: hard + +"remix-auth-oauth2@npm:1.11.2": + version: 1.11.2 + resolution: "remix-auth-oauth2@npm:1.11.2" + dependencies: + debug: "npm:^4.3.4" + uuid: "npm:^9.0.1" + peerDependencies: + "@remix-run/server-runtime": ^1.0.0 || ^2.0.0 + remix-auth: ^3.6.0 + checksum: 10c0/382cfcc05d4261d98f34b4d1af79f4b526718b2ff4713c374f4a811f08340b52903458b06d98266de40ab5b786326004417d48a05f38f8a10058ee5f0c2066f5 + languageName: node + linkType: hard + +"remix-auth@npm:3.6.0": + version: 3.6.0 + resolution: "remix-auth@npm:3.6.0" + dependencies: + uuid: "npm:^8.3.2" + peerDependencies: + "@remix-run/react": ^1.0.0 || ^2.0.0 + "@remix-run/server-runtime": ^1.0.0 || ^2.0.0 + checksum: 10c0/2b9d9f5ad02e7addbf2082d0968b8a23cb7569d68c322b713b35864e21028ceca9d554c36e33f42e7ece04c826a08411e120fdc827595cee3932facd5071fcf5 + languageName: node + linkType: hard + +"remix-flat-routes@npm:0.6.4": + version: 0.6.4 + resolution: "remix-flat-routes@npm:0.6.4" + dependencies: + "@remix-run/v1-route-convention": "npm:^0.1.3" + fs-extra: "npm:^11.1.1" + minimatch: "npm:^5.1.0" + peerDependencies: + "@remix-run/dev": ^1.15.0 || ^2 + bin: + migrate-flat-routes: dist/cli.js + checksum: 10c0/84a2c19be980e63eaabdbe8684d24be39bb5d02cb80c9fd23a1c5676784350cb21a35a935de8952eb12dfb64856a17f8238cfb679ca5d8b7cc6e5cd8268389f8 + languageName: node + linkType: hard + "remix-hono@npm:0.0.16": version: 0.0.16 resolution: "remix-hono@npm:0.0.16" @@ -17358,7 +17707,7 @@ __metadata: languageName: node linkType: hard -"resolve-alpn@npm:^1.0.0": +"resolve-alpn@npm:^1.0.0, resolve-alpn@npm:^1.2.0": version: 1.2.1 resolution: "resolve-alpn@npm:1.2.1" checksum: 10c0/b70b29c1843bc39781ef946c8cd4482e6d425976599c0f9c138cec8209e4e0736161bf39319b01676a847000085dfdaf63583c6fb4427bf751a10635bd2aa0c4 @@ -17461,6 +17810,15 @@ __metadata: languageName: node linkType: hard +"responselike@npm:^3.0.0": + version: 3.0.0 + resolution: "responselike@npm:3.0.0" + dependencies: + lowercase-keys: "npm:^3.0.0" + checksum: 10c0/8af27153f7e47aa2c07a5f2d538cb1e5872995f0e9ff77def858ecce5c3fe677d42b824a62cde502e56d275ab832b0a8bd350d5cd6b467ac0425214ac12ae658 + languageName: node + linkType: hard + "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -17795,7 +18153,7 @@ __metadata: languageName: node linkType: hard -"set-cookie-parser@npm:^2.4.6, set-cookie-parser@npm:^2.4.8, set-cookie-parser@npm:^2.6.0": +"set-cookie-parser@npm:^2.4.8, set-cookie-parser@npm:^2.6.0": version: 2.6.0 resolution: "set-cookie-parser@npm:2.6.0" checksum: 10c0/739da029f0e56806a103fcd5501d9c475e19e77bd8274192d7ae5c374ae714a82bba9a7ac00b0330a18227c5644b08df9e442240527be578f5a6030f9bb2bb80 @@ -17842,13 +18200,6 @@ __metadata: 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:^1.2.0": version: 1.2.0 resolution: "shebang-command@npm:1.2.0" @@ -18306,23 +18657,7 @@ __metadata: 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 - -"strict-event-emitter@npm:^0.5.1": +"strict-event-emitter@npm:^0.5.0, strict-event-emitter@npm:^0.5.1": version: 0.5.1 resolution: "strict-event-emitter@npm:0.5.1" checksum: 10c0/f5228a6e6b6393c57f52f62e673cfe3be3294b35d6f7842fc24b172ae0a6e6c209fa83241d0e433fc267c503bc2f4ffdbe41a9990ff8ffd5ac425ec0489417f7 @@ -18592,33 +18927,6 @@ __metadata: languageName: node linkType: hard -"styled-components@npm:6.1.8": - version: 6.1.8 - resolution: "styled-components@npm:6.1.8" - dependencies: - "@emotion/is-prop-valid": "npm:1.2.1" - "@emotion/unitless": "npm:0.8.0" - "@types/stylis": "npm:4.2.0" - css-to-react-native: "npm:3.2.0" - csstype: "npm:3.1.2" - postcss: "npm:8.4.31" - shallowequal: "npm:1.1.0" - stylis: "npm:4.3.1" - tslib: "npm:2.5.0" - peerDependencies: - react: ">= 16.8.0" - react-dom: ">= 16.8.0" - checksum: 10c0/fafe4b9198d5d7980c2358821d1a89f86200d55c8eec03670cf12cf43b8a05a77eafaf0872cd85821f68238308e0f5c9d9aa43a62e6987c65b70baa2c3277ab8 - languageName: node - linkType: hard - -"stylis@npm:4.3.1": - version: 4.3.1 - resolution: "stylis@npm:4.3.1" - checksum: 10c0/33e8ebd2bfa5f0bd0215f718dc2d3be896e1d00c5bcaeb9a4ae03cf239db6867af9eee230f57229bf1c29499357073ba3e6b547484ba1db2f5de1e8be7d4eee9 - languageName: node - linkType: hard - "superjson@npm:^2.2.1": version: 2.2.1 resolution: "superjson@npm:2.2.1" @@ -19061,7 +19369,7 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^4.0.0, tsconfig-paths@npm:^4.1.2": +"tsconfig-paths@npm:4.2.0, tsconfig-paths@npm:^4.0.0, tsconfig-paths@npm:^4.1.2": version: 4.2.0 resolution: "tsconfig-paths@npm:4.2.0" dependencies: @@ -19072,13 +19380,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.5.0": - version: 2.5.0 - resolution: "tslib@npm:2.5.0" - checksum: 10c0/e32fc99cc730dd514e53c44e668d76016e738f0bcc726aad5dbd2d335cf19b87a95a9b1e4f0a9993e370f1d702b5e471cdd4acabcac428a3099d496b9af2021e - languageName: node - linkType: hard - "tslib@npm:2.6.2, tslib@npm:^2.0.0, 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" @@ -19132,6 +19433,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:4.17.0": + version: 4.17.0 + resolution: "type-fest@npm:4.17.0" + checksum: 10c0/7c474dca230b351f184fed07c037a9440d10c10f2570b1f591bded4760361d89efbeec0185038dde6557b3ea6622dba3579d8b36d5415b89ec9efbc8781a6f22 + languageName: node + linkType: hard + "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -19160,13 +19468,6 @@ __metadata: 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:^4.9.0": version: 4.15.0 resolution: "type-fest@npm:4.15.0" @@ -19174,7 +19475,7 @@ __metadata: languageName: node linkType: hard -"type-is@npm:~1.6.18": +"type-is@npm:^1.6.18, type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" dependencies: @@ -19621,7 +19922,7 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^9.0.0": +"uuid@npm:9.0.1, uuid@npm:^9.0.0, uuid@npm:^9.0.1": version: 9.0.1 resolution: "uuid@npm:9.0.1" bin: @@ -19630,6 +19931,15 @@ __metadata: languageName: node linkType: hard +"uuid@npm:^8.3.1, 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 + "uvu@npm:^0.5.0": version: 0.5.6 resolution: "uvu@npm:0.5.6" @@ -19717,9 +20027,9 @@ __metadata: languageName: node linkType: hard -"vite-node@npm:1.5.1": - version: 1.5.1 - resolution: "vite-node@npm:1.5.1" +"vite-node@npm:1.5.2": + version: 1.5.2 + resolution: "vite-node@npm:1.5.2" dependencies: cac: "npm:^6.7.14" debug: "npm:^4.3.4" @@ -19728,7 +20038,7 @@ __metadata: vite: "npm:^5.0.0" bin: vite-node: vite-node.mjs - checksum: 10c0/d3591d9c30fd949ec590183ff234c114b9a676349cc54a83c2ee9eec449ab77aa45302aa9465d5a849d83d4d76721755634e030582289033f2ef5a74b4890929 + checksum: 10c0/a5e90ae2b3ec912fbdf22ecf10f1b0d769e2fd1f24c5e4090488be03068b994dbcf9bea492d5c5fbde77f45a0e328e90a48a9ecdcb5eab30709e6d221aa0c7bd languageName: node linkType: hard @@ -19827,15 +20137,15 @@ __metadata: languageName: node linkType: hard -"vitest@npm:1.5.1": - version: 1.5.1 - resolution: "vitest@npm:1.5.1" +"vitest@npm:1.5.2": + version: 1.5.2 + resolution: "vitest@npm:1.5.2" dependencies: - "@vitest/expect": "npm:1.5.1" - "@vitest/runner": "npm:1.5.1" - "@vitest/snapshot": "npm:1.5.1" - "@vitest/spy": "npm:1.5.1" - "@vitest/utils": "npm:1.5.1" + "@vitest/expect": "npm:1.5.2" + "@vitest/runner": "npm:1.5.2" + "@vitest/snapshot": "npm:1.5.2" + "@vitest/spy": "npm:1.5.2" + "@vitest/utils": "npm:1.5.2" acorn-walk: "npm:^8.3.2" chai: "npm:^4.3.10" debug: "npm:^4.3.4" @@ -19849,13 +20159,13 @@ __metadata: tinybench: "npm:^2.5.1" tinypool: "npm:^0.8.3" vite: "npm:^5.0.0" - vite-node: "npm:1.5.1" + vite-node: "npm:1.5.2" why-is-node-running: "npm:^2.2.2" peerDependencies: "@edge-runtime/vm": "*" "@types/node": ^18.0.0 || >=20.0.0 - "@vitest/browser": 1.5.1 - "@vitest/ui": 1.5.1 + "@vitest/browser": 1.5.2 + "@vitest/ui": 1.5.2 happy-dom: "*" jsdom: "*" peerDependenciesMeta: @@ -19873,7 +20183,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 10c0/85f6b9250ca370b4ddc3daef5431b82d8d8cb4f64f04b7d8b53f9fad9bd93d2771ddf561d5e0b3a078b666e7d9dbdc9826e43968d58fc14c894ce7c6de2d665f + checksum: 10c0/1ad3a33d3ab5faeb4baa9c9ba62b34e94c00a6e140ba2a8589224d6b9db89e3a3d6753d1d1ecb85cbcb0f9023b22d8066dfde7f31e1733484f2ea5cf640f4969 languageName: node linkType: hard @@ -19895,7 +20205,7 @@ __metadata: languageName: node linkType: hard -"web-encoding@npm:1.1.5, web-encoding@npm:^1.1.5": +"web-encoding@npm:1.1.5": version: 1.1.5 resolution: "web-encoding@npm:1.1.5" dependencies: @@ -20334,7 +20644,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.0.0, yargs@npm:^17.3.1, yargs@npm:^17.6.2, yargs@npm:^17.7.2": +"yargs@npm:^17.0.0, yargs@npm:^17.6.2, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: