diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 1b6fd54915..c860b469b1 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -15,6 +15,7 @@ const config = { project: [ "./tsconfig.json", "./cli/tsconfig.eslint.json", // separate eslint config for the CLI since we want to lint and typecheck differently due to template files + "./upgrade/tsconfig.json", "./www/tsconfig.json", ], }, diff --git a/.gitignore b/.gitignore index 0ce9f2c9d1..31c8eed413 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,7 @@ yarn-error.log* .idea .cache/ .next/ +next-env.d.ts .nuxt/ tmp/ temp/ diff --git a/.vscode/settings.json b/.vscode/settings.json index b5033388d1..3c13149fd3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,6 +14,7 @@ "typescript", "typescriptreact" ], + "eslint.workingDirectories": ["cli", "upgrade", "www"], "eslint.rules.customizations": [{ "rule": "*", "severity": "warn" }], "typescript.tsdk": "node_modules/typescript/lib", diff --git a/cli/package.json b/cli/package.json index 923ba2615d..bb1e1ba21f 100644 --- a/cli/package.json +++ b/cli/package.json @@ -63,7 +63,7 @@ "@types/gradient-string": "^1.1.2", "@types/inquirer": "^9.0.3", "@types/node": "^18.16.0", - "next": "^13.2.4", + "next": "^13.4.1", "next-auth": "^4.22.1", "prettier": "^2.8.8", "prettier-plugin-tailwindcss": "^0.2.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 81e0b2dbdb..2af14f22c7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: version: 8.37.0 '@types/node': specifier: ^18.16.0 - version: 18.16.0 + version: 18.16.1 '@types/prettier': specifier: ^2.7.2 version: 2.7.2 @@ -42,7 +42,7 @@ importers: version: 0.0.9(eslint@8.40.0) eslint-plugin-import: specifier: ^2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.59.6)(eslint@8.40.0) + version: 2.27.5(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-typescript@3.5.5)(eslint@8.40.0) eslint-plugin-isaacscript: specifier: ^2.6.7 version: 2.6.7(@typescript-eslint/parser@5.59.6)(eslint@8.40.0)(typescript@5.0.4) @@ -109,7 +109,7 @@ importers: version: 10.26.0(@trpc/server@10.26.0) '@trpc/next': specifier: ^10.26.0 - version: 10.26.0(@tanstack/react-query@4.29.7)(@trpc/client@10.26.0)(@trpc/react-query@10.26.0)(@trpc/server@10.26.0)(next@13.2.4)(react-dom@18.2.0)(react@18.2.0) + version: 10.26.0(@tanstack/react-query@4.29.7)(@trpc/client@10.26.0)(@trpc/react-query@10.26.0)(@trpc/server@10.26.0)(next@13.4.1)(react-dom@18.2.0)(react@18.2.0) '@trpc/react-query': specifier: ^10.26.0 version: 10.26.0(@tanstack/react-query@4.29.7)(@trpc/client@10.26.0)(@trpc/server@10.26.0)(react-dom@18.2.0)(react@18.2.0) @@ -127,13 +127,13 @@ importers: version: 9.0.3 '@types/node': specifier: ^18.16.0 - version: 18.16.0 + version: 18.16.1 next: - specifier: ^13.2.4 - version: 13.2.4(@babel/core@7.21.3)(react-dom@18.2.0)(react@18.2.0) + specifier: ^13.4.1 + version: 13.4.1(@babel/core@7.21.3)(react-dom@18.2.0)(react@18.2.0) next-auth: specifier: ^4.22.1 - version: 4.22.1(next@13.2.4)(react-dom@18.2.0)(react@18.2.0) + version: 4.22.1(next@13.4.1)(react-dom@18.2.0)(react@18.2.0) prettier: specifier: ^2.8.8 version: 2.8.8 @@ -165,6 +165,130 @@ importers: specifier: ^3.21.4 version: 3.21.4 + upgrade: + dependencies: + '@mdx-js/loader': + specifier: ^2.3.0 + version: 2.3.0(webpack@5.83.1) + '@next/mdx': + specifier: ^13.4.1 + version: 13.4.1(@mdx-js/loader@2.3.0) + '@octokit/rest': + specifier: ^19.0.8 + version: 19.0.8 + '@radix-ui/react-checkbox': + specifier: ^1.0.3 + version: 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': + specifier: ^1.0.3 + version: 1.0.3(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-label': + specifier: ^2.0.1 + version: 2.0.1(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-select': + specifier: ^1.2.1 + version: 1.2.1(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': + specifier: ^1.0.1 + version: 1.0.1(react@18.2.0) + '@t3-oss/env-nextjs': + specifier: ^0.3.1 + version: 0.3.1(typescript@5.0.4)(zod@3.21.4) + class-variance-authority: + specifier: ^0.6.0 + version: 0.6.0(typescript@5.0.4) + clsx: + specifier: ^1.2.1 + version: 1.2.1 + gitdiff-parser: + specifier: ^0.3.1 + version: 0.3.1 + lucide-react: + specifier: ^0.216.0 + version: 0.216.0(react@18.2.0) + next: + specifier: ^13.4.1 + version: 13.4.1(react-dom@18.2.0)(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-diff-view: + specifier: ^3.0.3 + version: 3.0.3(prop-types@15.8.1)(react@18.2.0) + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + refractor: + specifier: ^4.8.1 + version: 4.8.1 + rehype-pretty-code: + specifier: ^0.9.5 + version: 0.9.5(shiki@0.14.2) + shiki: + specifier: ^0.14.1 + version: 0.14.2 + tailwind-merge: + specifier: ^1.12.0 + version: 1.12.0 + tailwindcss-animate: + specifier: ^1.0.5 + version: 1.0.5(tailwindcss@3.3.2) + zod: + specifier: ^3.21.4 + version: 3.21.4 + devDependencies: + '@types/eslint': + specifier: ^8.37.0 + version: 8.37.0 + '@types/mdx': + specifier: ^2.0.5 + version: 2.0.5 + '@types/node': + specifier: ^18.16.0 + version: 18.16.1 + '@types/prettier': + specifier: ^2.7.2 + version: 2.7.2 + '@types/react': + specifier: ^18.2.6 + version: 18.2.6 + '@types/react-dom': + specifier: ^18.2.4 + version: 18.2.4 + '@types/refractor': + specifier: ^3.0.2 + version: 3.0.2 + '@typescript-eslint/eslint-plugin': + specifier: ^5.59.6 + version: 5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.40.0)(typescript@5.0.4) + '@typescript-eslint/parser': + specifier: ^5.59.6 + version: 5.59.6(eslint@8.40.0)(typescript@5.0.4) + autoprefixer: + specifier: ^10.4.14 + version: 10.4.14(postcss@8.4.23) + eslint: + specifier: ^8.40.0 + version: 8.40.0 + eslint-config-next: + specifier: ^13.4.1 + version: 13.4.1(eslint@8.40.0)(typescript@5.0.4) + postcss: + specifier: ^8.4.21 + version: 8.4.23 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + prettier-plugin-tailwindcss: + specifier: ^0.2.8 + version: 0.2.8(prettier@2.8.8) + tailwindcss: + specifier: ^3.3.2 + version: 3.3.2 + typescript: + specifier: ^5.0.4 + version: 5.0.4 + www: dependencies: '@algolia/client-search': @@ -175,7 +299,7 @@ importers: version: 0.16.8(astro@2.4.5)(sharp@0.32.1) '@astrojs/mdx': specifier: ^0.19.1 - version: 0.19.1(astro@2.4.5)(rollup@3.21.7) + version: 0.19.1(astro@2.4.5)(rollup@3.21.0) '@astrojs/sitemap': specifier: ^1.3.1 version: 1.3.1 @@ -242,7 +366,7 @@ importers: version: 3.1.2(astro@2.4.5)(tailwindcss@3.3.2) '@types/node': specifier: ^18.16.0 - version: 18.16.0 + version: 18.16.1 '@types/react': specifier: ^18.2.6 version: 18.2.6 @@ -260,7 +384,7 @@ importers: version: 5.59.6(eslint@8.40.0)(typescript@5.0.4) astro: specifier: ^2.4.5 - version: 2.4.5(@types/node@18.16.0)(sharp@0.32.1) + version: 2.4.5(@types/node@18.16.1)(sharp@0.32.1) eslint: specifier: ^8.40.0 version: 8.40.0 @@ -470,6 +594,9 @@ packages: '@jridgewell/gen-mapping': 0.1.1 '@jridgewell/trace-mapping': 0.3.17 + /@astrojs/compiler@1.3.2: + resolution: {integrity: sha512-W/2Mdsq75ruK31dPVlXLdvAoknYDcm6+zXiFToSzQWI7wZqqR+51XTFgx90ojYbefk7z4VOJSVtZBz2pA82F5A==} + /@astrojs/compiler@1.4.1: resolution: {integrity: sha512-aXAxapNWZwGN41P+Am/ma/2kAzKOhMNaY6YuvLkUHFv+UZkmDHD6F0fE1sQA2Up0bLjgPQa1VQzoAaii5tZWaA==} @@ -483,7 +610,7 @@ packages: optional: true dependencies: '@altano/tiny-async-pool': 1.0.2 - astro: 2.4.5(@types/node@18.16.0)(sharp@0.32.1) + astro: 2.4.5(@types/node@18.16.1)(sharp@0.32.1) http-cache-semantics: 4.1.1 image-size: 1.0.2 kleur: 4.1.5 @@ -516,7 +643,7 @@ packages: astro: ^2.4.0 dependencies: '@astrojs/prism': 2.1.1 - astro: 2.4.5(@types/node@18.16.0)(sharp@0.32.1) + astro: 2.4.5(@types/node@18.16.1)(sharp@0.32.1) github-slugger: 1.5.0 import-meta-resolve: 2.2.2 rehype-raw: 6.1.1 @@ -532,14 +659,14 @@ packages: transitivePeerDependencies: - supports-color - /@astrojs/mdx@0.19.1(astro@2.4.5)(rollup@3.21.7): + /@astrojs/mdx@0.19.1(astro@2.4.5)(rollup@3.21.0): resolution: {integrity: sha512-9GNNZbGT+lGvbRkQK/NaEJcnjj1T94/ne0KwPjJgNCBQrJuskX5IW1hKiE5bRSOFvkAOrBGneYKg0GXYArBOQQ==} engines: {node: '>=16.12.0'} dependencies: '@astrojs/markdown-remark': 2.2.0(astro@2.4.5) '@astrojs/prism': 2.1.1 '@mdx-js/mdx': 2.3.0 - '@mdx-js/rollup': 2.3.0(rollup@3.21.7) + '@mdx-js/rollup': 2.3.0(rollup@3.21.0) acorn: 8.8.2 es-module-lexer: 1.2.0 estree-util-visit: 1.2.1 @@ -599,7 +726,7 @@ packages: tailwindcss: ^3.0.24 dependencies: '@proload/core': 0.3.3 - astro: 2.4.5(@types/node@18.16.0)(sharp@0.32.1) + astro: 2.4.5(@types/node@18.16.1)(sharp@0.32.1) autoprefixer: 10.4.14(postcss@8.4.23) postcss: 8.4.23 postcss-load-config: 4.0.1(postcss@8.4.23) @@ -631,7 +758,7 @@ packages: '@astrojs/webapi': 2.1.1 '@vercel/analytics': 0.1.11(react@18.2.0) '@vercel/nft': 0.22.6 - astro: 2.4.5(@types/node@18.16.0)(sharp@0.32.1) + astro: 2.4.5(@types/node@18.16.1)(sharp@0.32.1) fast-glob: 3.2.12 set-cookie-parser: 2.6.0 web-vitals: 3.3.1 @@ -652,13 +779,6 @@ packages: dependencies: '@babel/highlight': 7.18.6 - /@babel/code-frame@7.21.4: - resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: false - /@babel/compat-data@7.21.0: resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==} engines: {node: '>=6.9.0'} @@ -831,14 +951,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - dev: true - - /@babel/runtime@7.21.5: - resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: false /@babel/template@7.20.7: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} @@ -876,7 +988,7 @@ packages: /@changesets/apply-release-plan@6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.21.0 '@changesets/config': 2.3.0 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 @@ -894,7 +1006,7 @@ packages: /@changesets/assemble-release-plan@5.2.3: resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.21.0 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.5 '@changesets/types': 5.2.1 @@ -922,7 +1034,7 @@ packages: resolution: {integrity: sha512-XnTa+b51vt057fyAudvDKGB0Sh72xutQZNAdXkCqPBKO2zvs2yYZx5hFZj1u9cbtpwM6Sxtcr02/FQJfZOzemQ==} hasBin: true dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.21.0 '@changesets/apply-release-plan': 6.1.3 '@changesets/assemble-release-plan': 5.2.3 '@changesets/changelog-git': 0.1.14 @@ -989,7 +1101,7 @@ packages: resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} dependencies: dataloader: 1.4.0 - node-fetch: 2.6.11 + node-fetch: 2.6.9 transitivePeerDependencies: - encoding dev: false @@ -997,7 +1109,7 @@ packages: /@changesets/get-release-plan@3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.21.0 '@changesets/assemble-release-plan': 5.2.3 '@changesets/config': 2.3.0 '@changesets/pre': 1.0.14 @@ -1013,7 +1125,7 @@ packages: /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.21.0 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -1038,7 +1150,7 @@ packages: /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.21.0 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -1048,7 +1160,7 @@ packages: /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.21.0 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -1069,7 +1181,7 @@ packages: /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.21.0 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 @@ -1302,19 +1414,9 @@ packages: dependencies: eslint: 8.40.0 eslint-visitor-keys: 3.4.1 - dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.40.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.40.0 - eslint-visitor-keys: 3.4.1 - - /@eslint-community/regexpp@4.5.1: - resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + /@eslint-community/regexpp@4.4.1: + resolution: {integrity: sha512-BISJ6ZE4xQsuL/FmsyRaiffpq977bMlsKfGHTQrOGFErfByxIe6iZTxPf/00Zon9b9a7iUykfQwejN3s2ZW/Bw==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} /@eslint/eslintrc@2.0.3: @@ -1337,6 +1439,30 @@ packages: resolution: {integrity: sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@floating-ui/core@0.7.3: + resolution: {integrity: sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==} + dev: false + + /@floating-ui/dom@0.5.4: + resolution: {integrity: sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==} + dependencies: + '@floating-ui/core': 0.7.3 + dev: false + + /@floating-ui/react-dom@0.7.2(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 0.5.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.6)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + dev: false + /@fontsource/inter@4.5.15: resolution: {integrity: sha512-FzleM9AxZQK2nqsTDtBiY0PMEVWvnKnuu2i09+p6DHvrHsuucoV2j0tmw+kAT3L4hvsLdAIDv6MdGehsPIdT+Q==} dev: false @@ -1418,6 +1544,13 @@ packages: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + /@jridgewell/source-map@0.3.3: + resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} + dependencies: + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + dev: false + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} @@ -1453,7 +1586,7 @@ packages: /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.21.0 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -1472,7 +1605,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.21.0 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -1516,11 +1649,23 @@ packages: - supports-color dev: false + /@mdx-js/loader@2.3.0(webpack@5.83.1): + resolution: {integrity: sha512-IqsscXh7Q3Rzb+f5DXYk0HU71PK+WuFsEhf+mSV3fOhpLcEpgsHvTQ2h0T6TlZ5gHOaBeFjkXwB52by7ypMyNg==} + peerDependencies: + webpack: '>=4' + dependencies: + '@mdx-js/mdx': 2.3.0 + source-map: 0.7.4 + webpack: 5.83.1 + transitivePeerDependencies: + - supports-color + dev: false + /@mdx-js/mdx@2.3.0: resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} dependencies: '@types/estree-jsx': 1.0.0 - '@types/mdx': 2.0.3 + '@types/mdx': 2.0.5 estree-util-build-jsx: 2.2.2 estree-util-is-identifier-name: 2.1.0 estree-util-to-js: 1.2.0 @@ -1540,139 +1685,114 @@ packages: - supports-color dev: false - /@mdx-js/rollup@2.3.0(rollup@3.21.7): + /@mdx-js/rollup@2.3.0(rollup@3.21.0): resolution: {integrity: sha512-wLvRfJS/M4UmdqTd+WoaySEE7q4BIejYf1xAHXYvtT1du/1Tl/z2450Gg2+Hu7fh05KwRRiehiTP9Yc/Dtn0fA==} peerDependencies: rollup: '>=2' dependencies: '@mdx-js/mdx': 2.3.0 - '@rollup/pluginutils': 5.0.2(rollup@3.21.7) - rollup: 3.21.7 + '@rollup/pluginutils': 5.0.2(rollup@3.21.0) + rollup: 3.21.0 source-map: 0.7.4 vfile: 5.3.7 transitivePeerDependencies: - supports-color dev: false - /@next/env@13.2.4: - resolution: {integrity: sha512-+Mq3TtpkeeKFZanPturjcXt+KHfKYnLlX6jMLyCrmpq6OOs4i1GqBOAauSkii9QeKCMTYzGppar21JU57b/GEA==} - dev: true + /@next/env@13.4.1: + resolution: {integrity: sha512-eD6WCBMFjLFooLM19SIhSkWBHtaFrZFfg2Cxnyl3vS3DAdFRfnx5TY2RxlkuKXdIRCC0ySbtK9JXXt8qLCqzZg==} - /@next/swc-android-arm-eabi@13.2.4: - resolution: {integrity: sha512-DWlalTSkLjDU11MY11jg17O1gGQzpRccM9Oes2yTqj2DpHndajrXHGxj9HGtJ+idq2k7ImUdJVWS2h2l/EDJOw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [android] - requiresBuild: true + /@next/eslint-plugin-next@13.4.1: + resolution: {integrity: sha512-tVPS/2FKlA3ANCRCYZVT5jdbUKasBU8LG6bYqcNhyORDFTlDYa4cAWQJjZ7msIgLwMQIbL8CAsxrOL8maa/4Lg==} + dependencies: + glob: 7.1.7 dev: true - optional: true - /@next/swc-android-arm64@13.2.4: - resolution: {integrity: sha512-sRavmUImUCf332Gy+PjIfLkMhiRX1Ez4SI+3vFDRs1N5eXp+uNzjFUK/oLMMOzk6KFSkbiK/3Wt8+dHQR/flNg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true + /@next/mdx@13.4.1(@mdx-js/loader@2.3.0): + resolution: {integrity: sha512-jYhj/23/zamwgaZhYHnLc6B6lM/YnTkW5g/L6AClkZ3/o/Kups0Jq5TdYRXQ85vpaGYCNTnLr4kxdtCNWxuYzA==} + peerDependencies: + '@mdx-js/loader': '>=0.15.0' + '@mdx-js/react': '>=0.15.0' + peerDependenciesMeta: + '@mdx-js/loader': + optional: true + '@mdx-js/react': + optional: true + dependencies: + '@mdx-js/loader': 2.3.0(webpack@5.83.1) + source-map: 0.7.4 + dev: false - /@next/swc-darwin-arm64@13.2.4: - resolution: {integrity: sha512-S6vBl+OrInP47TM3LlYx65betocKUUlTZDDKzTiRDbsRESeyIkBtZ6Qi5uT2zQs4imqllJznVjFd1bXLx3Aa6A==} + /@next/swc-darwin-arm64@13.4.1: + resolution: {integrity: sha512-eF8ARHtYfnoYtDa6xFHriUKA/Mfj/cCbmKb3NofeKhMccs65G6/loZ15a6wYCCx4rPAd6x4t1WmVYtri7EdeBg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true - /@next/swc-darwin-x64@13.2.4: - resolution: {integrity: sha512-a6LBuoYGcFOPGd4o8TPo7wmv5FnMr+Prz+vYHopEDuhDoMSHOnC+v+Ab4D7F0NMZkvQjEJQdJS3rqgFhlZmKlw==} + /@next/swc-darwin-x64@13.4.1: + resolution: {integrity: sha512-7cmDgF9tGWTgn5Gw+vP17miJbH4wcraMHDCOHTYWkO/VeKT73dUWG23TNRLfgtCNSPgH4V5B4uLHoZTanx9bAw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true - /@next/swc-freebsd-x64@13.2.4: - resolution: {integrity: sha512-kkbzKVZGPaXRBPisoAQkh3xh22r+TD+5HwoC5bOkALraJ0dsOQgSMAvzMXKsN3tMzJUPS0tjtRf1cTzrQ0I5vQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@next/swc-linux-arm-gnueabihf@13.2.4: - resolution: {integrity: sha512-7qA1++UY0fjprqtjBZaOA6cas/7GekpjVsZn/0uHvquuITFCdKGFCsKNBx3S0Rpxmx6WYo0GcmhNRM9ru08BGg==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@next/swc-linux-arm64-gnu@13.2.4: - resolution: {integrity: sha512-xzYZdAeq883MwXgcwc72hqo/F/dwUxCukpDOkx/j1HTq/J0wJthMGjinN9wH5bPR98Mfeh1MZJ91WWPnZOedOg==} + /@next/swc-linux-arm64-gnu@13.4.1: + resolution: {integrity: sha512-qwJqmCri2ie8aTtE5gjTSr8S6O8B67KCYgVZhv9gKH44yvc/zXbAY8u23QGULsYOyh1islWE5sWfQNLOj9iryg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true - /@next/swc-linux-arm64-musl@13.2.4: - resolution: {integrity: sha512-8rXr3WfmqSiYkb71qzuDP6I6R2T2tpkmf83elDN8z783N9nvTJf2E7eLx86wu2OJCi4T05nuxCsh4IOU3LQ5xw==} + /@next/swc-linux-arm64-musl@13.4.1: + resolution: {integrity: sha512-qcC54tWNGDv/VVIFkazxhqH1Bnagjfs4enzELVRlUOoJPD2BGJTPI7z08pQPbbgxLtRiu8gl2mXvpB8WlOkMeA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true - /@next/swc-linux-x64-gnu@13.2.4: - resolution: {integrity: sha512-Ngxh51zGSlYJ4EfpKG4LI6WfquulNdtmHg1yuOYlaAr33KyPJp4HeN/tivBnAHcZkoNy0hh/SbwDyCnz5PFJQQ==} + /@next/swc-linux-x64-gnu@13.4.1: + resolution: {integrity: sha512-9TeWFlpLsBosZ+tsm/rWBaMwt5It9tPH8m3nawZqFUUrZyGRfGcI67js774vtx0k3rL9qbyY6+3pw9BCVpaYUA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true - /@next/swc-linux-x64-musl@13.2.4: - resolution: {integrity: sha512-gOvwIYoSxd+j14LOcvJr+ekd9fwYT1RyMAHOp7znA10+l40wkFiMONPLWiZuHxfRk+Dy7YdNdDh3ImumvL6VwA==} + /@next/swc-linux-x64-musl@13.4.1: + resolution: {integrity: sha512-sNDGaWmSqTS4QRUzw61wl4mVPeSqNIr1OOjLlQTRuyInxMxtqImRqdvzDvFTlDfdeUMU/DZhWGYoHrXLlZXe6A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true - /@next/swc-win32-arm64-msvc@13.2.4: - resolution: {integrity: sha512-q3NJzcfClgBm4HvdcnoEncmztxrA5GXqKeiZ/hADvC56pwNALt3ngDC6t6qr1YW9V/EPDxCYeaX4zYxHciW4Dw==} + /@next/swc-win32-arm64-msvc@13.4.1: + resolution: {integrity: sha512-+CXZC7u1iXdLRudecoUYbhbsXpglYv8KFYsFxKBPn7kg+bk7eJo738wAA4jXIl8grTF2mPdmO93JOQym+BlYGA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true - /@next/swc-win32-ia32-msvc@13.2.4: - resolution: {integrity: sha512-/eZ5ncmHUYtD2fc6EUmAIZlAJnVT2YmxDsKs1Ourx0ttTtvtma/WKlMV5NoUsyOez0f9ExLyOpeCoz5aj+MPXw==} + /@next/swc-win32-ia32-msvc@13.4.1: + resolution: {integrity: sha512-vIoXVVc7UYO68VwVMDKwJC2+HqAZQtCYiVlApyKEeIPIQpz2gpufzGxk1z3/gwrJt/kJ5CDZjlhYDCzd3hdz+g==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true - /@next/swc-win32-x64-msvc@13.2.4: - resolution: {integrity: sha512-0MffFmyv7tBLlji01qc0IaPP/LVExzvj7/R5x1Jph1bTAIj4Vu81yFQWHHQAP6r4ff9Ukj1mBK6MDNVXm7Tcvw==} + /@next/swc-win32-x64-msvc@13.4.1: + resolution: {integrity: sha512-n8V5ImLQZibKTu10UUdI3nIeTLkliEXe628qxqW9v8My3BAH2a7H0SaCqkV2OgqFnn8sG1wxKYw9/SNJ632kSA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /@nodelib/fs.scandir@2.1.5: @@ -1693,6 +1813,122 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + /@octokit/auth-token@3.0.3: + resolution: {integrity: sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==} + engines: {node: '>= 14'} + dependencies: + '@octokit/types': 9.2.2 + dev: false + + /@octokit/core@4.2.1: + resolution: {integrity: sha512-tEDxFx8E38zF3gT7sSMDrT1tGumDgsw5yPG6BBh/X+5ClIQfMH/Yqocxz1PnHx6CHyF6pxmovUTOfZAUvQ0Lvw==} + engines: {node: '>= 14'} + dependencies: + '@octokit/auth-token': 3.0.3 + '@octokit/graphql': 5.0.5 + '@octokit/request': 6.2.5 + '@octokit/request-error': 3.0.3 + '@octokit/types': 9.2.2 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.0 + transitivePeerDependencies: + - encoding + dev: false + + /@octokit/endpoint@7.0.5: + resolution: {integrity: sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==} + engines: {node: '>= 14'} + dependencies: + '@octokit/types': 9.2.2 + is-plain-object: 5.0.0 + universal-user-agent: 6.0.0 + dev: false + + /@octokit/graphql@5.0.5: + resolution: {integrity: sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==} + engines: {node: '>= 14'} + dependencies: + '@octokit/request': 6.2.5 + '@octokit/types': 9.2.2 + universal-user-agent: 6.0.0 + transitivePeerDependencies: + - encoding + dev: false + + /@octokit/openapi-types@17.2.0: + resolution: {integrity: sha512-MazrFNx4plbLsGl+LFesMo96eIXkFgEtaKbnNpdh4aQ0VM10aoylFsTYP1AEjkeoRNZiiPe3T6Gl2Hr8dJWdlQ==} + dev: false + + /@octokit/plugin-paginate-rest@6.1.0(@octokit/core@4.2.1): + resolution: {integrity: sha512-5T4iXjJdYCVA1rdWS1C+uZV9AvtZY9QgTG74kFiSFVj94dZXowyi/YK8f4SGjZaL69jZthGlBaDKRdCMCF9log==} + engines: {node: '>= 14'} + peerDependencies: + '@octokit/core': '>=4' + dependencies: + '@octokit/core': 4.2.1 + '@octokit/types': 9.2.2 + dev: false + + /@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.1): + resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 4.2.1 + dev: false + + /@octokit/plugin-rest-endpoint-methods@7.1.1(@octokit/core@4.2.1): + resolution: {integrity: sha512-1XYEQZOGrD4FDa2bxuPfAVmzbKbUDs+P1dqn2TyufIW3EIZFI53n+YFr0XV+EBNATRWUL2rWuZJRKBZiU6guGA==} + engines: {node: '>= 14'} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 4.2.1 + '@octokit/types': 9.2.2 + deprecation: 2.3.1 + dev: false + + /@octokit/request-error@3.0.3: + resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} + engines: {node: '>= 14'} + dependencies: + '@octokit/types': 9.2.2 + deprecation: 2.3.1 + once: 1.4.0 + dev: false + + /@octokit/request@6.2.5: + resolution: {integrity: sha512-z83E8UIlPNaJUsXpjD8E0V5o/5f+vJJNbNcBwVZsX3/vC650U41cOkTLjq4PKk9BYonQGOnx7N17gvLyNjgGcQ==} + engines: {node: '>= 14'} + dependencies: + '@octokit/endpoint': 7.0.5 + '@octokit/request-error': 3.0.3 + '@octokit/types': 9.2.2 + is-plain-object: 5.0.0 + node-fetch: 2.6.9 + universal-user-agent: 6.0.0 + transitivePeerDependencies: + - encoding + dev: false + + /@octokit/rest@19.0.8: + resolution: {integrity: sha512-/PKrzqn+zDzXKwBMwLI2IKrvk8yv8cedJOdcmxrjR3gmu6UIzURhP5oQj+4qkn7+uQi1gg7QqV4SqlaQ1HYW1Q==} + engines: {node: '>= 14'} + dependencies: + '@octokit/core': 4.2.1 + '@octokit/plugin-paginate-rest': 6.1.0(@octokit/core@4.2.1) + '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.1) + '@octokit/plugin-rest-endpoint-methods': 7.1.1(@octokit/core@4.2.1) + transitivePeerDependencies: + - encoding + dev: false + + /@octokit/types@9.2.2: + resolution: {integrity: sha512-9BjDxjgQIvCjNWZsbqyH5QC2Yni16oaE6xL+8SUBMzcYPF4TGQBXGA97Cl3KceK9mwiNMb1mOYCz6FbCCLEL+g==} + dependencies: + '@octokit/openapi-types': 17.2.0 + dev: false + /@panva/hkdf@1.0.4: resolution: {integrity: sha512-003xWiCuvePbLaPHT+CRuaV4GlyCAVm6XYSbBZDHoWZGn1mNkVKFaDbGJjjxmEFvizUwlCoM6O18FCBMMky2zQ==} dev: true @@ -1738,6 +1974,368 @@ packages: escalade: 3.1.1 dev: true + /@radix-ui/number@1.0.0: + resolution: {integrity: sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==} + dependencies: + '@babel/runtime': 7.21.0 + dev: false + + /@radix-ui/primitive@1.0.0: + resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==} + dependencies: + '@babel/runtime': 7.21.0 + dev: false + + /@radix-ui/react-arrow@1.0.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fqYwhhI9IarZ0ll2cUSfKuXHlJK0qE4AfnRrPBbRwEH/4mGQn04/QFGomLi8TXWIdv9WJk//KgGm+aDxVIr1wA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-checkbox@1.0.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-55B8/vKzTuzxllH5sGJO4zaBf9gYpJuJRRzaOKm+0oAefRnMvbf+Kgww7IOANVN0w3z7agFJgtnXaZl8Uj95AA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/primitive': 1.0.0 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + '@radix-ui/react-context': 1.0.0(react@18.2.0) + '@radix-ui/react-presence': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.0(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.0(react@18.2.0) + '@radix-ui/react-use-size': 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-collection@1.0.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-s8WdQQ6wNXpaxdZ308KSr8fEWGrg4un8i4r/w7fhiS4ElRNjk5rRcl0/C6TANG2LvLOGIxtzo/jAg6Qf73TEBw==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + '@radix-ui/react-context': 1.0.0(react@18.2.0) + '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.1(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-compose-refs@1.0.0(react@18.2.0): + resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + react: 18.2.0 + dev: false + + /@radix-ui/react-context@1.0.0(react@18.2.0): + resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + react: 18.2.0 + dev: false + + /@radix-ui/react-dialog@1.0.3(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-owNhq36kNPqC2/a+zJRioPg6HHnTn5B/sh/NjTY8r4W9g1L5VJlrzZIVcBr7R9Mg8iLjVmh6MGgMlfoVf/WO/A==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/primitive': 1.0.0 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + '@radix-ui/react-context': 1.0.0(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.0(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.0(react@18.2.0) + '@radix-ui/react-portal': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.1(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.0(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.6)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + dev: false + + /@radix-ui/react-direction@1.0.0(react@18.2.0): + resolution: {integrity: sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + react: 18.2.0 + dev: false + + /@radix-ui/react-dismissable-layer@1.0.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-nXZOvFjOuHS1ovumntGV7NNoLaEp9JEvTht3MBjP44NSW5hUKj/8OnfN3+8WmB+CEhN44XaGhpHoSsUIEl5P7Q==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/primitive': 1.0.0 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.2(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-focus-guards@1.0.0(react@18.2.0): + resolution: {integrity: sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + react: 18.2.0 + dev: false + + /@radix-ui/react-focus-scope@1.0.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-spwXlNTfeIprt+kaEWE/qYuYT3ZAqJiAGjN/JgdvgVDTu8yc+HuX+WOWXrKliKnLnwck0F6JDkqIERncnih+4A==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-id@1.0.0(react@18.2.0): + resolution: {integrity: sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-label@2.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qcfbS3B8hTYmEO44RNcXB6pegkxRsJIbdxTMu0PEX0Luv5O2DvTIwwVYxQfUwLpM88EL84QRPLOLgwUSApMsLQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-popper@1.1.1(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-keYDcdMPNMjSC8zTsZ8wezUMiWM9Yj14wtF3s0PTIs9srnEPC9Kt2Gny1T3T81mmSeyDjZxsD9N5WCwNNb712w==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@floating-ui/react-dom': 0.7.2(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + '@radix-ui/react-context': 1.0.0(react@18.2.0) + '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.0(react@18.2.0) + '@radix-ui/react-use-size': 1.0.0(react@18.2.0) + '@radix-ui/rect': 1.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + dev: false + + /@radix-ui/react-portal@1.0.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-swu32idoCW7KA2VEiUZGBSu9nB6qwGdV6k6HYhUoOo3M1FFpD+VgLzUqtt3mwL1ssz7r2x8MggpLSQach2Xy/Q==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-presence@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-primitive@1.0.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-zY6G5Qq4R8diFPNwtyoLRZBxzu1Z+SXMlfYpChN7Dv8gvmx9X3qhDqiLWvKseKVJMuedFeU/Sa0Sy/Ia+t06Dw==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-slot': 1.0.1(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-select@1.2.1(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-GULRMITaOHNj79BZvQs3iZO0+f2IgI8g5HDhMi7Bnc13t7IlG86NFtOCfTLme4PNZdEtU+no+oGgcl6IFiphpQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/number': 1.0.0 + '@radix-ui/primitive': 1.0.0 + '@radix-ui/react-collection': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + '@radix-ui/react-context': 1.0.0(react@18.2.0) + '@radix-ui/react-direction': 1.0.0(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.0(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.0(react@18.2.0) + '@radix-ui/react-popper': 1.1.1(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.1(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.0(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.0(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.2(react-dom@18.2.0)(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.6)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + dev: false + + /@radix-ui/react-slot@1.0.1(react@18.2.0): + resolution: {integrity: sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-use-callback-ref@1.0.0(react@18.2.0): + resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-controllable-state@1.0.0(react@18.2.0): + resolution: {integrity: sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-use-escape-keydown@1.0.2(react@18.2.0): + resolution: {integrity: sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-use-layout-effect@1.0.0(react@18.2.0): + resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-previous@1.0.0(react@18.2.0): + resolution: {integrity: sha512-RG2K8z/K7InnOKpq6YLDmT49HGjNmrK+fr82UCVKT2sW0GYfVnYp4wZWBooT/EYfQ5faA9uIjvsuMMhH61rheg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-rect@1.0.0(react@18.2.0): + resolution: {integrity: sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/rect': 1.0.0 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-size@1.0.0(react@18.2.0): + resolution: {integrity: sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-visually-hidden@1.0.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qirnJxtYn73HEk1rXL12/mXnu2rwsNHDID10th2JGtdK25T9wX+mxRmGt7iPSahw512GbZOc0syZX1nLQGoEOg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-primitive': 1.0.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/rect@1.0.0: + resolution: {integrity: sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==} + dependencies: + '@babel/runtime': 7.21.0 + dev: false + /@resvg/resvg-js-android-arm-eabi@2.4.1: resolution: {integrity: sha512-AA6f7hS0FAPpvQMhBCf6f1oD1LdlqNXKCxAAPpKh6tR11kqV0YIB9zOlIYgITM14mq2YooLFl6XIbbvmY+jwUw==} engines: {node: '>= 10'} @@ -1872,7 +2470,7 @@ packages: picomatch: 2.3.1 dev: false - /@rollup/pluginutils@5.0.2(rollup@3.21.7): + /@rollup/pluginutils@5.0.2(rollup@3.21.0): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1884,9 +2482,13 @@ packages: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.21.7 + rollup: 3.21.0 dev: false + /@rushstack/eslint-patch@1.2.0: + resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} + dev: true + /@shuding/opentype.js@1.4.0-beta.0: resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==} engines: {node: '>= 8.0.0'} @@ -1901,11 +2503,10 @@ packages: engines: {node: '>=6'} dev: false - /@swc/helpers@0.4.14: - resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + /@swc/helpers@0.5.1: + resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: tslib: 2.5.0 - dev: true /@szmarczak/http-timer@1.1.2: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} @@ -1922,7 +2523,6 @@ packages: dependencies: typescript: 5.0.4 zod: 3.21.4 - dev: true /@t3-oss/env-nextjs@0.3.1(typescript@5.0.4)(zod@3.21.4): resolution: {integrity: sha512-W1OgOn5xtpdEGraAQesyLzO2aNLRfSJEyK6qjQFfEUnrPbkvB+WxABX2bPMqfn4KJQ8pziLCSdBFiUN8OagqAg==} @@ -1933,7 +2533,6 @@ packages: '@t3-oss/env-core': 0.3.1(typescript@5.0.4)(zod@3.21.4) typescript: 5.0.4 zod: 3.21.4 - dev: true /@tanstack/query-core@4.29.7: resolution: {integrity: sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA==} @@ -1969,7 +2568,7 @@ packages: '@trpc/server': 10.26.0 dev: true - /@trpc/next@10.26.0(@tanstack/react-query@4.29.7)(@trpc/client@10.26.0)(@trpc/react-query@10.26.0)(@trpc/server@10.26.0)(next@13.2.4)(react-dom@18.2.0)(react@18.2.0): + /@trpc/next@10.26.0(@tanstack/react-query@4.29.7)(@trpc/client@10.26.0)(@trpc/react-query@10.26.0)(@trpc/server@10.26.0)(next@13.4.1)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-p328crXBH6C228LKxjqbpDEXdLmy4+LdgsZuYK3oFMqaJEmCT22b+zcQ9IvQrcPfDxhKOpJym0QpuDNaWpG2qg==} peerDependencies: '@tanstack/react-query': ^4.18.0 @@ -1984,7 +2583,7 @@ packages: '@trpc/client': 10.26.0(@trpc/server@10.26.0) '@trpc/react-query': 10.26.0(@tanstack/react-query@4.29.7)(@trpc/client@10.26.0)(@trpc/server@10.26.0)(react-dom@18.2.0)(react@18.2.0) '@trpc/server': 10.26.0 - next: 13.2.4(@babel/core@7.21.3)(react-dom@18.2.0)(react@18.2.0) + next: 13.4.1(@babel/core@7.21.3)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-ssr-prepass: 1.5.0(react@18.2.0) @@ -2046,12 +2645,18 @@ packages: dependencies: '@types/ms': 0.7.31 + /@types/eslint-scope@3.7.4: + resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} + dependencies: + '@types/eslint': 8.37.0 + '@types/estree': 1.0.0 + dev: false + /@types/eslint@8.37.0: resolution: {integrity: sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.0 '@types/json-schema': 7.0.11 - dev: false /@types/estree-jsx@1.0.0: resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} @@ -2061,17 +2666,12 @@ packages: /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} - dev: false - - /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} - dev: false /@types/fs-extra@11.0.1: resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} dependencies: '@types/jsonfile': 6.1.1 - '@types/node': 20.1.5 + '@types/node': 18.16.1 dev: true /@types/gradient-string@1.1.2: @@ -2100,11 +2700,9 @@ packages: /@types/json-schema@7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - dev: false /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: false /@types/json5@0.0.30: resolution: {integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==} @@ -2112,13 +2710,13 @@ packages: /@types/jsonfile@6.1.1: resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 18.16.0 + '@types/node': 18.16.1 dev: true /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.16.0 + '@types/node': 18.16.1 dev: false /@types/mdast@3.0.11: @@ -2126,9 +2724,8 @@ packages: dependencies: '@types/unist': 2.0.6 - /@types/mdx@2.0.3: - resolution: {integrity: sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==} - dev: false + /@types/mdx@2.0.5: + resolution: {integrity: sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==} /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} @@ -2150,12 +2747,8 @@ packages: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: false - /@types/node@18.16.0: - resolution: {integrity: sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ==} - - /@types/node@20.1.5: - resolution: {integrity: sha512-IvGD1CD/nego63ySR7vrAKEX3AJTcmrAN2kn+/sDNLi1Ff5kBzDeEdqWDplK+0HAEoLYej137Sk0cUU8OLOlMg==} - dev: true + /@types/node@18.16.1: + resolution: {integrity: sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==} /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -2166,7 +2759,9 @@ packages: /@types/prettier@2.7.2: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} - dev: false + + /@types/prismjs@1.26.0: + resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==} /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} @@ -2190,19 +2785,25 @@ packages: '@types/scheduler': 0.16.3 csstype: 3.1.1 + /@types/refractor@3.0.2: + resolution: {integrity: sha512-2HMXuwGuOqzUG+KUTm9GDJCHl0LCBKsB5cg28ujEmVi/0qgTb6jOmkVSO5K48qXksyl2Fr3C0Q2VrgD4zbwyXg==} + dependencies: + '@types/prismjs': 1.26.0 + dev: true + /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.16.0 + '@types/node': 18.16.1 dev: false /@types/sax@1.2.4: resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==} dependencies: - '@types/node': 18.16.0 + '@types/node': 18.16.1 dev: false /@types/scheduler@0.16.3: @@ -2212,14 +2813,13 @@ packages: resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} dev: false - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} - dev: false + /@types/semver@7.3.13: + resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} /@types/through@0.0.30: resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==} dependencies: - '@types/node': 18.16.0 + '@types/node': 18.16.1 dev: true /@types/tinycolor2@1.4.3: @@ -2246,7 +2846,7 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.1 + '@eslint-community/regexpp': 4.4.1 '@typescript-eslint/parser': 5.59.6(eslint@8.40.0)(typescript@5.0.4) '@typescript-eslint/scope-manager': 5.59.6 '@typescript-eslint/type-utils': 5.59.6(eslint@8.40.0)(typescript@5.0.4) @@ -2256,12 +2856,11 @@ packages: grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.5.1 + semver: 7.3.8 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - supports-color - dev: false /@typescript-eslint/parser@5.59.6(eslint@8.40.0)(typescript@5.0.4): resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==} @@ -2307,7 +2906,6 @@ packages: typescript: 5.0.4 transitivePeerDependencies: - supports-color - dev: false /@typescript-eslint/types@5.59.6: resolution: {integrity: sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==} @@ -2339,9 +2937,9 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) + '@eslint-community/eslint-utils': 4.3.0(eslint@8.40.0) '@types/json-schema': 7.0.11 - '@types/semver': 7.5.0 + '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.59.6 '@typescript-eslint/types': 5.59.6 '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) @@ -2351,7 +2949,6 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: false /@typescript-eslint/visitor-keys@5.59.6: resolution: {integrity: sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==} @@ -2377,38 +2974,160 @@ packages: engines: {node: '>=14'} hasBin: true dependencies: - '@mapbox/node-pre-gyp': 1.0.10 - '@rollup/pluginutils': 4.2.1 - acorn: 8.8.2 - async-sema: 3.1.1 - bindings: 1.5.0 - estree-walker: 2.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - node-gyp-build: 4.6.0 - resolve-from: 5.0.0 - transitivePeerDependencies: - - encoding - - supports-color + '@mapbox/node-pre-gyp': 1.0.10 + '@rollup/pluginutils': 4.2.1 + acorn: 8.8.2 + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + node-gyp-build: 4.6.0 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@vscode/emmet-helper@2.8.6: + resolution: {integrity: sha512-IIB8jbiKy37zN8bAIHx59YmnIelY78CGHtThnibD/d3tQOKRY83bYVi9blwmZVUZh6l9nfkYH3tvReaiNxY9EQ==} + dependencies: + emmet: 2.3.6 + jsonc-parser: 2.3.1 + vscode-languageserver-textdocument: 1.0.8 + vscode-languageserver-types: 3.17.3 + vscode-uri: 2.1.2 + + /@vscode/l10n@0.0.11: + resolution: {integrity: sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==} + + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: false + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: false + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: false + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: false + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: false + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: false + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + dev: false + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: false + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: false + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: false + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + dev: false + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: false + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + dev: false + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 dev: false - /@vscode/emmet-helper@2.8.6: - resolution: {integrity: sha512-IIB8jbiKy37zN8bAIHx59YmnIelY78CGHtThnibD/d3tQOKRY83bYVi9blwmZVUZh6l9nfkYH3tvReaiNxY9EQ==} + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} dependencies: - emmet: 2.3.6 - jsonc-parser: 2.3.1 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.3 - vscode-uri: 2.1.2 + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + dev: false - /@vscode/l10n@0.0.11: - resolution: {integrity: sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==} + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: false + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: false /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: false + /acorn-import-assertions@1.9.0(acorn@8.8.2): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.8.2 + dev: false + /acorn-jsx@5.3.2(acorn@8.8.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2430,6 +3149,14 @@ packages: - supports-color dev: false + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -2534,6 +3261,13 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + /aria-hidden@1.2.3: + resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + engines: {node: '>=10'} + dependencies: + tslib: 2.5.0 + dev: false + /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: @@ -2571,7 +3305,6 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - dev: false /array.prototype.flatmap@1.3.1: resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} @@ -2589,8 +3322,7 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.1 - dev: false + get-intrinsic: 1.2.0 /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} @@ -2622,7 +3354,7 @@ packages: - supports-color dev: true - /astro@2.4.5(@types/node@18.16.0)(sharp@0.32.1): + /astro@2.4.5(@types/node@18.16.1)(sharp@0.32.1): resolution: {integrity: sha512-osxLnuLXaOX0FjWOVQH8cmK4N/Gdj/ZdEkeyMJWsUss7xQU4Q64tAxB/dAv75f/XZiu+PprmndJkyQ4sYLOv1g==} engines: {node: '>=16.12.0', npm: '>=6.14.0'} hasBin: true @@ -2670,7 +3402,7 @@ packages: preferred-pm: 3.0.3 prompts: 2.4.2 rehype: 12.0.1 - semver: 7.5.1 + semver: 7.3.8 server-destroy: 1.0.1 sharp: 0.32.1 shiki: 0.14.2 @@ -2682,7 +3414,7 @@ packages: typescript: 5.0.4 unist-util-visit: 4.1.2 vfile: 5.3.7 - vite: 4.3.3(@types/node@18.16.0) + vite: 4.3.3(@types/node@18.16.1) vitefu: 0.2.4(vite@4.3.3) yargs-parser: 21.1.1 zod: 3.21.4 @@ -2754,6 +3486,10 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + /before-after-hook@2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + dev: false + /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -2826,6 +3562,10 @@ packages: node-releases: 2.0.10 update-browserslist-db: 1.0.10(browserslist@4.21.5) + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -2976,10 +3716,31 @@ packages: engines: {node: '>=10'} dev: false + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: false + /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} + /class-variance-authority@0.6.0(typescript@5.0.4): + resolution: {integrity: sha512-qdRDgfjx3GRb9fpwpSvn+YaidnT7IUJNe4wt5/SWwM+PmUwJUhQRk/8zAyNro0PmVfmen2635UboTjIBXXxy5A==} + peerDependencies: + typescript: '>= 4.5.5 < 6' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + clsx: 1.2.1 + typescript: 5.0.4 + dev: false + + /classnames@2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + dev: false + /cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -3084,6 +3845,10 @@ packages: engines: {node: '>=14'} dev: false + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false + /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -3196,7 +3961,6 @@ packages: optional: true dependencies: ms: 2.1.3 - dev: false /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -3302,6 +4066,10 @@ packages: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: false + /deprecation@2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + dev: false + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -3325,12 +4093,20 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: false + /devalue@4.3.0: resolution: {integrity: sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==} /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + /diff-match-patch@1.0.5: + resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} + dev: false + /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} @@ -3349,7 +4125,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 - dev: false /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} @@ -3409,6 +4184,13 @@ packages: dependencies: once: 1.4.0 + /enhanced-resolve@5.14.0: + resolution: {integrity: sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -3478,6 +4260,10 @@ packages: /es-module-lexer@1.2.0: resolution: {integrity: sha512-2BMfqBDeVCcOlLaL1ZAfp+D868SczNpKArrTM3dhpd7dK/OVlogzY15qpUngt+LMTq5UC/csb9vVQAgupucSbA==} + /es-module-lexer@1.2.1: + resolution: {integrity: sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==} + dev: false + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} @@ -3544,6 +4330,31 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + /eslint-config-next@13.4.1(eslint@8.40.0)(typescript@5.0.4): + resolution: {integrity: sha512-ajuxjCkW1hvirr0EQZb3/B/bFH52Z7CT89uCtTcICFL9l30i5c8hN4p0LXvTjdOXNPV5fEDcxBgGHgXdzTj1/A==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 13.4.1 + '@rushstack/eslint-patch': 1.2.0 + '@typescript-eslint/parser': 5.59.6(eslint@8.40.0)(typescript@5.0.4) + eslint: 8.40.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.40.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-typescript@3.5.5)(eslint@8.40.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.40.0) + eslint-plugin-react: 7.32.2(eslint@8.40.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.40.0) + typescript: 5.0.4 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-config-prettier@8.8.0(eslint@8.40.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true @@ -3566,14 +4377,36 @@ packages: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 - is-core-module: 2.12.0 - resolve: 1.22.2 + is-core-module: 2.11.0 + resolve: 1.22.1 transitivePeerDependencies: - supports-color - dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.7)(eslint@8.40.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.40.0): + resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.14.0 + eslint: 8.40.0 + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.40.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-typescript@3.5.5)(eslint@8.40.0) + get-tsconfig: 4.5.0 + globby: 13.1.3 + is-core-module: 2.11.0 + is-glob: 4.0.3 + synckit: 0.8.5 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.40.0): + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -3597,9 +4430,9 @@ packages: debug: 3.2.7 eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.40.0) transitivePeerDependencies: - supports-color - dev: false /eslint-plugin-astro@0.27.0(eslint@8.40.0): resolution: {integrity: sha512-r3PizFY+xwQMRWcEvRKCWQkfHNl2Q+7ANN1ZIpnvJZP97KUX8F2WUnTvPuk2jJGqnRa+zQ5NgoJ9aenFKcGP9A==} @@ -3618,7 +4451,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.6)(eslint@8.40.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-typescript@3.5.5)(eslint@8.40.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -3636,9 +4469,9 @@ packages: doctrine: 2.1.0 eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.7)(eslint@8.40.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.40.0) has: 1.0.3 - is-core-module: 2.12.0 + is-core-module: 2.11.0 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 @@ -3649,7 +4482,6 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: false /eslint-plugin-isaacscript@2.6.7(@typescript-eslint/parser@5.59.6)(eslint@8.40.0)(typescript@5.0.4): resolution: {integrity: sha512-DiXhGx078zJeMxTb+atnpJp70sCTNW+kgd8NEIQHn+7eabY+60Op3STT13ht5Jrs5FryGwZvUh3RqIrlmmAtIg==} @@ -3712,7 +4544,6 @@ packages: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: eslint: 8.40.0 - dev: false /eslint-plugin-react@7.32.2(eslint@8.40.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} @@ -3736,7 +4567,6 @@ packages: resolve: 2.0.0-next.4 semver: 6.3.0 string.prototype.matchall: 4.0.8 - dev: false /eslint-plugin-turbo@0.0.9(eslint@8.40.0): resolution: {integrity: sha512-fEsuSnYU3GLtT+s66mUuzDL1LaSieIx5uk3tPO0ToGv7hI2XzOfP24aPkQItTBGl7kq2JaVkRzPwcnfz8hkp0w==} @@ -3752,7 +4582,6 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: false /eslint-scope@7.2.0: resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} @@ -3770,8 +4599,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) - '@eslint-community/regexpp': 4.5.1 + '@eslint-community/eslint-utils': 4.3.0(eslint@8.40.0) + '@eslint-community/regexpp': 4.4.1 '@eslint/eslintrc': 2.0.3 '@eslint/js': 8.40.0 '@humanwhocodes/config-array': 0.11.8 @@ -3841,7 +4670,6 @@ packages: /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} - dev: false /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} @@ -4170,13 +4998,9 @@ packages: has: 1.0.3 has-symbols: 1.0.3 - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-proto: 1.0.1 - has-symbols: 1.0.3 + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} dev: false /get-stream@4.1.0: @@ -4204,10 +5028,17 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.2.0 + /get-tsconfig@4.5.0: + resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + /git-hooks-list@3.1.0: resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} dev: false + /gitdiff-parser@0.3.1: + resolution: {integrity: sha512-YQJnY8aew65id8okGxKCksH3efDCJ9HzV7M9rsvd65habf39Pkh4cgYJ27AaoDMqo1X98pgNJhNMrm/kpV7UVQ==} + dev: false + /github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -4229,6 +5060,10 @@ packages: dependencies: is-glob: 4.0.3 + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false + /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: @@ -4239,6 +5074,17 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -4288,7 +5134,6 @@ packages: ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 - dev: false /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -4390,6 +5235,15 @@ packages: dependencies: function-bind: 1.1.1 + /hash-obj@4.0.0: + resolution: {integrity: sha512-FwO1BUVWkyHasWDW4S8o0ssQXjvyghLV2rfVhnN36b2bbcj45eGiuzdn9XOvOpjV3TKQD7Gm2BWNXdE9V4KKYg==} + engines: {node: '>=12'} + dependencies: + is-obj: 3.0.0 + sort-keys: 5.0.0 + type-fest: 1.4.0 + dev: false + /hast-util-from-parse5@7.1.2: resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} dependencies: @@ -4636,6 +5490,12 @@ packages: has: 1.0.3 side-channel: 1.0.4 + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: false + /is-absolute-url@4.0.1: resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4712,12 +5572,6 @@ packages: dependencies: has: 1.0.3 - /is-core-module@2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} - dependencies: - has: 1.0.3 - dev: false - /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -4787,6 +5641,11 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + /is-obj@3.0.0: + resolution: {integrity: sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==} + engines: {node: '>=12'} + dev: false + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} @@ -4800,6 +5659,11 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} + /is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: false + /is-reference@3.0.1: resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} dependencies: @@ -4911,6 +5775,15 @@ packages: /javascript-natural-sort@0.7.1: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.16.1 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: false + /jiti@1.18.2: resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} hasBin: true @@ -4971,7 +5844,6 @@ packages: hasBin: true dependencies: minimist: 1.2.8 - dev: false /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} @@ -5068,6 +5940,11 @@ packages: pify: 4.0.1 strip-bom: 3.0.0 + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: false + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -5153,6 +6030,14 @@ packages: dependencies: yallist: 4.0.0 + /lucide-react@0.216.0(react@18.2.0): + resolution: {integrity: sha512-PGWXs6JXI/08rhfkmj/joji0MAKDCcms44j0LYILO4J36AWqKhgjjaZ6WECRSyZ9TQe5gOrAR0g38O8cKrQngw==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + /magic-string@0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} @@ -5709,6 +6594,18 @@ packages: braces: 3.0.2 picomatch: 2.3.1 + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + /mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} @@ -5796,7 +6693,6 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false /mute-stream@1.0.0: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} @@ -5810,12 +6706,6 @@ packages: object-assign: 4.1.1 thenify-all: 1.6.0 - /nanoid@3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -5826,12 +6716,15 @@ packages: /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: false /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - /next-auth@4.22.1(next@13.2.4)(react-dom@18.2.0)(react@18.2.0): + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false + + /next-auth@4.22.1(next@13.4.1)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-NTR3f6W7/AWXKw8GSsgSyQcDW6jkslZLH8AiZa5PQ09w1kR8uHtR9rez/E9gAq/o17+p0JYHE8QjF3RoniiObA==} peerDependencies: next: ^12.2.5 || ^13 @@ -5846,7 +6739,7 @@ packages: '@panva/hkdf': 1.0.4 cookie: 0.5.0 jose: 4.13.1 - next: 13.2.4(@babel/core@7.21.3)(react-dom@18.2.0)(react@18.2.0) + next: 13.4.1(@babel/core@7.21.3)(react-dom@18.2.0)(react@18.2.0) oauth: 0.9.15 openid-client: 5.4.0 preact: 10.13.1 @@ -5856,12 +6749,12 @@ packages: uuid: 8.3.2 dev: true - /next@13.2.4(@babel/core@7.21.3)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-g1I30317cThkEpvzfXujf0O4wtaQHtDCLhlivwlTJ885Ld+eOgcz7r3TGQzeU+cSRoNHtD8tsJgzxVdYojFssw==} - engines: {node: '>=14.6.0'} + /next@13.4.1(@babel/core@7.21.3)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JBw2kAIyhKDpjhEWvNVoFeIzNp9xNxg8wrthDOtMctfn3EpqGCmW0FSviNyGgOSOSn6zDaX48pmvbdf6X2W9xA==} + engines: {node: '>=16.8.0'} hasBin: true peerDependencies: - '@opentelemetry/api': ^1.4.0 + '@opentelemetry/api': ^1.1.0 fibers: '>= 3.1.0' node-sass: ^6.0.0 || ^7.0.0 react: ^18.2.0 @@ -5877,32 +6770,75 @@ packages: sass: optional: true dependencies: - '@next/env': 13.2.4 - '@swc/helpers': 0.4.14 + '@next/env': 13.4.1 + '@swc/helpers': 0.5.1 + busboy: 1.6.0 caniuse-lite: 1.0.30001469 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(@babel/core@7.21.3)(react@18.2.0) + zod: 3.21.4 optionalDependencies: - '@next/swc-android-arm-eabi': 13.2.4 - '@next/swc-android-arm64': 13.2.4 - '@next/swc-darwin-arm64': 13.2.4 - '@next/swc-darwin-x64': 13.2.4 - '@next/swc-freebsd-x64': 13.2.4 - '@next/swc-linux-arm-gnueabihf': 13.2.4 - '@next/swc-linux-arm64-gnu': 13.2.4 - '@next/swc-linux-arm64-musl': 13.2.4 - '@next/swc-linux-x64-gnu': 13.2.4 - '@next/swc-linux-x64-musl': 13.2.4 - '@next/swc-win32-arm64-msvc': 13.2.4 - '@next/swc-win32-ia32-msvc': 13.2.4 - '@next/swc-win32-x64-msvc': 13.2.4 + '@next/swc-darwin-arm64': 13.4.1 + '@next/swc-darwin-x64': 13.4.1 + '@next/swc-linux-arm64-gnu': 13.4.1 + '@next/swc-linux-arm64-musl': 13.4.1 + '@next/swc-linux-x64-gnu': 13.4.1 + '@next/swc-linux-x64-musl': 13.4.1 + '@next/swc-win32-arm64-msvc': 13.4.1 + '@next/swc-win32-ia32-msvc': 13.4.1 + '@next/swc-win32-x64-msvc': 13.4.1 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros dev: true + /next@13.4.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JBw2kAIyhKDpjhEWvNVoFeIzNp9xNxg8wrthDOtMctfn3EpqGCmW0FSviNyGgOSOSn6zDaX48pmvbdf6X2W9xA==} + engines: {node: '>=16.8.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + fibers: '>= 3.1.0' + node-sass: ^6.0.0 || ^7.0.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + '@next/env': 13.4.1 + '@swc/helpers': 0.5.1 + busboy: 1.6.0 + caniuse-lite: 1.0.30001469 + postcss: 8.4.14 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(react@18.2.0) + zod: 3.21.4 + optionalDependencies: + '@next/swc-darwin-arm64': 13.4.1 + '@next/swc-darwin-x64': 13.4.1 + '@next/swc-linux-arm64-gnu': 13.4.1 + '@next/swc-linux-arm64-musl': 13.4.1 + '@next/swc-linux-x64-gnu': 13.4.1 + '@next/swc-linux-x64-musl': 13.4.1 + '@next/swc-win32-arm64-msvc': 13.4.1 + '@next/swc-win32-ia32-msvc': 13.4.1 + '@next/swc-win32-x64-msvc': 13.4.1 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + /nlcst-to-string@3.1.1: resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==} dependencies: @@ -5917,18 +6853,6 @@ packages: /node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - /node-fetch@2.6.11: - resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: false - /node-fetch@2.6.9: resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} engines: {node: 4.x || >=6.0.0} @@ -6064,7 +6988,6 @@ packages: dependencies: define-properties: 1.2.0 es-abstract: 1.21.2 - dev: false /object.values@1.1.6: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} @@ -6073,7 +6996,6 @@ packages: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 - dev: false /oidc-token-hash@5.0.1: resolution: {integrity: sha512-EvoOtz6FIEBzE+9q253HsLCVRiK/0doEJ2HCvvqMQb3dHZrP3WlJKYtJ55CRTw4jmYomzH4wkPuCj/I3ZvpKxQ==} @@ -6258,7 +7180,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.21.4 + '@babel/code-frame': 7.18.6 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -6271,6 +7193,10 @@ packages: unist-util-modify-children: 3.1.1 unist-util-visit-children: 2.0.2 + /parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} + dev: false + /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -6408,10 +7334,9 @@ packages: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /postcss@8.4.23: resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} @@ -6481,12 +7406,66 @@ packages: resolution: {integrity: sha512-lJ/mG/Lz/ccSwNtwqpFS126mtMVzFVyYv0ddTF9wqwrEG4seECjKDAyw/oGv915rAcJi8jr89990nqfpmG+qdg==} engines: {node: ^14.15.0 || >=16.0.0, pnpm: '>=7.14.0'} dependencies: - '@astrojs/compiler': 1.4.1 + '@astrojs/compiler': 1.3.2 + prettier: 2.8.8 + sass-formatter: 0.7.6 + synckit: 0.8.5 + + /prettier-plugin-tailwindcss@0.2.8(@ianvs/prettier-plugin-sort-imports@3.7.2)(prettier-plugin-astro@0.8.1)(prettier@2.8.8): + resolution: {integrity: sha512-KgPcEnJeIijlMjsA6WwYgRs5rh3/q76oInqtMXBA/EMcamrcYJpyhtRhyX1ayT9hnHlHTuO8sIifHF10WuSDKg==} + engines: {node: '>=12.17.0'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@shufo/prettier-plugin-blade': '*' + '@trivago/prettier-plugin-sort-imports': '*' + prettier: '>=2.2.0' + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + prettier-plugin-twig-melody: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@shufo/prettier-plugin-blade': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + prettier-plugin-twig-melody: + optional: true + dependencies: + '@ianvs/prettier-plugin-sort-imports': 3.7.2(prettier@2.8.8) prettier: 2.8.8 - sass-formatter: 0.7.6 - synckit: 0.8.5 + prettier-plugin-astro: 0.8.1 + dev: true - /prettier-plugin-tailwindcss@0.2.8(@ianvs/prettier-plugin-sort-imports@3.7.2)(prettier-plugin-astro@0.8.1)(prettier@2.8.8): + /prettier-plugin-tailwindcss@0.2.8(prettier@2.8.8): resolution: {integrity: sha512-KgPcEnJeIijlMjsA6WwYgRs5rh3/q76oInqtMXBA/EMcamrcYJpyhtRhyX1ayT9hnHlHTuO8sIifHF10WuSDKg==} engines: {node: '>=12.17.0'} peerDependencies: @@ -6535,9 +7514,7 @@ packages: prettier-plugin-twig-melody: optional: true dependencies: - '@ianvs/prettier-plugin-sort-imports': 3.7.2(prettier@2.8.8) prettier: 2.8.8 - prettier-plugin-astro: 0.8.1 dev: true /prettier@2.8.8: @@ -6607,6 +7584,12 @@ packages: engines: {node: '>=8'} dev: false + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false + /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -6616,6 +7599,20 @@ packages: minimist: 1.2.8 strip-json-comments: 2.0.1 + /react-diff-view@3.0.3(prop-types@15.8.1)(react@18.2.0): + resolution: {integrity: sha512-orETYmQbptfMbOnbkSHH61Ew5RBTYWAO2M1MDx2ZvsEDHPygn6U8mWh7kUCm/z40YzVKmd3+8hpH872Y0uioIg==} + peerDependencies: + prop-types: '>=15.6' + react: '>=16.8' + dependencies: + classnames: 2.3.2 + diff-match-patch: 1.0.5 + prop-types: 15.8.1 + react: 18.2.0 + shallow-equal: 3.1.0 + warning: 4.0.3 + dev: false + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -6628,6 +7625,41 @@ packages: /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + /react-remove-scroll-bar@2.3.4(@types/react@18.2.6)(react@18.2.0): + resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.6 + react: 18.2.0 + react-style-singleton: 2.2.1(@types/react@18.2.6)(react@18.2.0) + tslib: 2.5.0 + dev: false + + /react-remove-scroll@2.5.5(@types/react@18.2.6)(react@18.2.0): + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.6 + react: 18.2.0 + react-remove-scroll-bar: 2.3.4(@types/react@18.2.6)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.6)(react@18.2.0) + tslib: 2.5.0 + use-callback-ref: 1.3.0(@types/react@18.2.6)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.6)(react@18.2.0) + dev: false + /react-ssr-prepass@1.5.0(react@18.2.0): resolution: {integrity: sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==} peerDependencies: @@ -6636,6 +7668,23 @@ packages: react: 18.2.0 dev: true + /react-style-singleton@2.2.1(@types/react@18.2.6)(react@18.2.0): + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.6 + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.2.0 + tslib: 2.5.0 + dev: false + /react-typist@2.0.5(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-iZCkeqeegO0TlkTMiH2JD1tvMtY9RrXkRylnAI6m8aCVAUUwNzoWTVF7CKLij6THeOMcUDCznLDDvNp55s+YZA==} peerDependencies: @@ -6709,6 +7758,15 @@ packages: strip-indent: 3.0.0 dev: false + /refractor@4.8.1: + resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} + dependencies: + '@types/hast': 2.3.4 + '@types/prismjs': 1.26.0 + hastscript: 7.2.0 + parse-entities: 4.0.1 + dev: false + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} @@ -6720,15 +7778,6 @@ packages: define-properties: 1.2.0 functions-have-names: 1.2.3 - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 - dev: false - /registry-auth-token@4.2.2: resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} engines: {node: '>=6.0.0'} @@ -6774,6 +7823,17 @@ packages: parse5: 6.0.1 unified: 10.1.2 + /rehype-pretty-code@0.9.5(shiki@0.14.2): + resolution: {integrity: sha512-TYA4oDxxn4z/YZ6ZNz7BX5BuyeJzi7D6XxI44T/eqUOBYypwwOd7RZ+IBb1NkERpian/k7sZ1+KsdIbWDRenQw==} + engines: {node: ^12.16.0 || >=13.2.0} + peerDependencies: + shiki: '*' + dependencies: + hash-obj: 4.0.0 + parse-numeric-range: 1.3.0 + shiki: 0.14.2 + dev: false + /rehype-raw@6.1.1: resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} dependencies: @@ -6904,10 +7964,9 @@ packages: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: - is-core-module: 2.12.0 + is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: false /responselike@1.0.2: resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} @@ -6986,14 +8045,6 @@ packages: optionalDependencies: fsevents: 2.3.2 - /rollup@3.21.7: - resolution: {integrity: sha512-KXPaEuR8FfUoK2uHwNjxTmJ18ApyvD6zJpYv9FOJSqLStmt6xOY84l1IjK2dSolQmoXknrhEFRaPRgOPdqCT5w==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: false - /run-async@3.0.0: resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} @@ -7068,6 +8119,15 @@ packages: dependencies: loose-envify: 1.4.0 + /schema-utils@3.1.2: + resolution: {integrity: sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false + /section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} @@ -7091,6 +8151,13 @@ packages: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true + /semver@7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + /semver@7.5.1: resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} engines: {node: '>=10'} @@ -7098,6 +8165,12 @@ packages: dependencies: lru-cache: 6.0.0 + /serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + dependencies: + randombytes: 2.1.0 + dev: false + /server-destroy@1.0.1: resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} @@ -7109,6 +8182,10 @@ packages: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: false + /shallow-equal@3.1.0: + resolution: {integrity: sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg==} + dev: false + /sharp@0.32.1: resolution: {integrity: sha512-kQTFtj7ldpUqSe8kDxoGLZc1rnMFU0AO2pqbX6pLy3b7Oj8ivJIdoKNwxHVQG2HN6XpHPJqCSM2nsma2gOXvOg==} engines: {node: '>=14.15.0'} @@ -7213,6 +8290,13 @@ packages: yargs: 15.4.1 dev: false + /sort-keys@5.0.0: + resolution: {integrity: sha512-Pdz01AvCAottHTPQGzndktFNdbRA75BgOfeT1hH+AMnJFv8lynkPi42rfeEhpx1saTEI3YNMWxfqu0sFD1G8pw==} + engines: {node: '>=12'} + dependencies: + is-plain-obj: 4.1.0 + dev: false + /sort-object-keys@1.1.3: resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} dev: false @@ -7233,6 +8317,18 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: false + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: false + /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} @@ -7329,12 +8425,11 @@ packages: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.0 has-symbols: 1.0.3 internal-slot: 1.0.5 - regexp.prototype.flags: 1.5.0 + regexp.prototype.flags: 1.4.3 side-channel: 1.0.4 - dev: false /string.prototype.trim@1.2.7: resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} @@ -7441,6 +8536,23 @@ packages: react: 18.2.0 dev: true + /styled-jsx@5.1.1(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + client-only: 0.0.1 + react: 18.2.0 + dev: false + /sucrase@3.30.0: resolution: {integrity: sha512-7d37d3vLF0IeH2dzvHpzDNDxUqpbDHJXTJOAnQ8jvMW04o2Czps6mxtaSnKWpE+hUS/eczqfWPUgQTrazKZPnQ==} engines: {node: '>=8'} @@ -7491,6 +8603,13 @@ packages: dependencies: has-flag: 4.0.0 + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: false + /supports-esm@1.0.0: resolution: {integrity: sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==} dependencies: @@ -7507,6 +8626,10 @@ packages: '@pkgr/utils': 2.3.1 tslib: 2.5.0 + /tailwind-merge@1.12.0: + resolution: {integrity: sha512-Y17eDp7FtN1+JJ4OY0Bqv9OA41O+MS8c1Iyr3T6JFLnOgLg3EvcyMKZAnQ8AGyvB5Nxm3t9Xb5Mhe139m8QT/g==} + dev: false + /tailwind-scrollbar@3.0.0(tailwindcss@3.3.2): resolution: {integrity: sha512-OkVRX9Q1T769vk979UZ519jhj/j/zNBHql7zPLI+tlhX+ahksYO4ZryWD29lOETDx9Wj1sw+K1OeW7W3+ECQOA==} engines: {node: '>=12.13.0'} @@ -7516,6 +8639,14 @@ packages: tailwindcss: 3.3.2 dev: false + /tailwindcss-animate@1.0.5(tailwindcss@3.3.2): + resolution: {integrity: sha512-UU3qrOJ4lFQABY+MVADmBm+0KW3xZyhMdRvejwtXqYOL7YjHYxmuREFAZdmVG5LPe5E9CAst846SLC4j5I3dcw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + tailwindcss: 3.3.2 + dev: false + /tailwindcss@3.3.2: resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} engines: {node: '>=14.0.0'} @@ -7547,6 +8678,10 @@ packages: transitivePeerDependencies: - ts-node + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} dependencies: @@ -7582,6 +8717,41 @@ packages: engines: {node: '>=8'} dev: false + /terser-webpack-plugin@5.3.9(webpack@5.83.1): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.17 + jest-worker: 27.5.1 + schema-utils: 3.1.2 + serialize-javascript: 6.0.1 + terser: 5.17.4 + webpack: 5.83.1 + dev: false + + /terser@5.17.4: + resolution: {integrity: sha512-jcEKZw6UPrgugz/0Tuk/PVyLAPfMBJf5clnGueo45wTweoV8yh7Q7PEkhkJ5uuUbC7zAxEcG3tqNr1bstkQ8nw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.3 + acorn: 8.8.2 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: false + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -7684,7 +8854,6 @@ packages: json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - dev: false /tsconfig-resolver@3.0.1: resolution: {integrity: sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==} @@ -7692,7 +8861,7 @@ packages: '@types/json5': 0.0.30 '@types/resolve': 1.20.2 json5: 2.2.3 - resolve: 1.22.1 + resolve: 1.22.2 strip-bom: 4.0.0 type-fest: 0.13.1 @@ -7758,7 +8927,7 @@ packages: smartwrap: 2.0.2 strip-ansi: 6.0.1 wcwidth: 1.0.1 - yargs: 17.7.2 + yargs: 17.7.1 dev: false /tunnel-agent@0.6.0: @@ -7856,6 +9025,11 @@ packages: engines: {node: '>=8'} dev: false + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: false + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -7983,6 +9157,10 @@ packages: unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 + /universal-user-agent@6.0.0: + resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} + dev: false + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -8015,6 +9193,50 @@ packages: prepend-http: 2.0.0 dev: false + /use-callback-ref@1.3.0(@types/react@18.2.6)(react@18.2.0): + resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.6 + react: 18.2.0 + tslib: 2.5.0 + dev: false + + /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.6)(react@18.2.0): + resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.6 + react: 18.2.0 + dev: false + + /use-sidecar@1.1.2(@types/react@18.2.6)(react@18.2.0): + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.6 + detect-node-es: 1.1.0 + react: 18.2.0 + tslib: 2.5.0 + dev: false + /use-sync-external-store@1.2.0(react@18.2.0): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: @@ -8074,7 +9296,7 @@ packages: unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - /vite@4.3.3(@types/node@18.16.0): + /vite@4.3.3(@types/node@18.16.1): resolution: {integrity: sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -8099,7 +9321,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.16.0 + '@types/node': 18.16.1 esbuild: 0.17.12 postcss: 8.4.23 rollup: 3.21.0 @@ -8114,7 +9336,7 @@ packages: vite: optional: true dependencies: - vite: 4.3.3(@types/node@18.16.0) + vite: 4.3.3(@types/node@18.16.1) /vscode-css-languageservice@6.2.4: resolution: {integrity: sha512-9UG0s3Ss8rbaaPZL1AkGzdjrGY8F+P+Ne9snsrvD9gxltDGhsn8C2dQpqQewHrMW37OvlqJoI8sUU2AWDb+qNw==} @@ -8166,6 +9388,20 @@ packages: /vscode-uri@3.0.7: resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} + /warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: false + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: @@ -8186,6 +9422,51 @@ packages: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} dev: true + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: false + + /webpack@5.83.1: + resolution: {integrity: sha512-TNsG9jDScbNuB+Lb/3+vYolPplCS3bbEaJf+Bj0Gw4DhP3ioAflBb1flcRt9zsWITyvOhM96wMQNRWlSX52DgA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.4 + '@types/estree': 1.0.0 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.8.2 + acorn-import-assertions: 1.9.0(acorn@8.8.2) + browserslist: 4.21.5 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.14.0 + es-module-lexer: 1.2.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.1.2 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.9(webpack@5.83.1) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: false + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -8219,8 +9500,8 @@ packages: is-weakset: 2.0.2 dev: true - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + /which-module@2.0.0: + resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} dev: false /which-pm-runs@1.1.0: @@ -8356,13 +9637,13 @@ packages: require-main-filename: 2.0.0 set-blocking: 2.0.0 string-width: 4.2.3 - which-module: 2.0.1 + which-module: 2.0.0 y18n: 4.0.3 yargs-parser: 18.1.3 dev: false - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + /yargs@17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f729765cee..6fd8617d2d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: - "cli" - "www" + - "upgrade" diff --git a/turbo.json b/turbo.json index 54ab28d9f6..c651c8ff77 100644 --- a/turbo.json +++ b/turbo.json @@ -2,7 +2,7 @@ "$schema": "https://turbo.build/schema.json", "pipeline": { "build": { - "outputs": ["dist/**", ".vercel/output/**"], + "outputs": ["dist/**", ".vercel/output/**", ".next/**"], "dependsOn": ["^build"] }, "dev": { diff --git a/upgrade/.env.example b/upgrade/.env.example new file mode 100644 index 0000000000..3506d9144d --- /dev/null +++ b/upgrade/.env.example @@ -0,0 +1,3 @@ +GITHUB_PERSONAL_ACCESS_TOKEN= +GITHUB_DIFFS_OWNER= +GITHUB_DIFFS_REPO= diff --git a/upgrade/README.md b/upgrade/README.md new file mode 100644 index 0000000000..8e63165fdb --- /dev/null +++ b/upgrade/README.md @@ -0,0 +1,40 @@ +# T3 Upgrade + +T3 Upgrade Helper is a project designed to assist users in upgrading from their current version of the T3 stack to the latest version. + +## Usage + +On the website, select the version you are currently on and the version you want to upgrade to. The website will then show you a diff of the changes between the two versions. + +1. Apply the diff + + To apply the patch, you can use the following command: + +```bash +git apply --reject ./t3-upgrade.patch +``` + +This will create a new file with the changes that could not be applied. + +2. Apply the changes manually + + You can then use wiggle to apply the changes manually: + +```bash +wiggle -r ./package.json ./package.json.rej +``` + +This will apply the changes to the file and create a file called package.json.porig with the original file. + +3. Resolve conflicts + + In case of conflicts, it will add the conflict markers to the file. You can then resolve the conflicts manually. + +## Contributing + +If you want to contribute to this project, follow the steps below: + +1. Raise an issue with the changes you want to make (or find an existing issue) +2. Fork the repository +3. Make your changes +4. Create a pull request diff --git a/upgrade/next.config.mjs b/upgrade/next.config.mjs new file mode 100644 index 0000000000..74833ea8a0 --- /dev/null +++ b/upgrade/next.config.mjs @@ -0,0 +1,29 @@ +import withMdx from "@next/mdx"; +import rehypePrettyCode from "rehype-pretty-code"; +import { getHighlighter } from "shiki"; + +/** + * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially useful + * for Docker builds. + */ +await import("./src/env.mjs"); + +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, +}; + +export default withMdx({ + options: { + rehypePlugins: [ + [ + rehypePrettyCode, + /** @type {Partial} */ + ({ + theme: { dark: "one-dark-pro" }, + getHighlighter, + }), + ], + ], + }, +})(nextConfig); diff --git a/upgrade/package.json b/upgrade/package.json new file mode 100644 index 0000000000..79c41eebfb --- /dev/null +++ b/upgrade/package.json @@ -0,0 +1,62 @@ +{ + "name": "upgrade", + "version": "0.1.0", + "scripts": { + "build": "next build", + "clean": "rm -rf node_modules .turbo dist .eslintcache", + "dev": "next dev", + "format": "pnpm format:check --write", + "format:check": "prettier --check --plugin-search-dir=. **/*.{cjs,mjs,ts,tsx,md,json,astro} --ignore-path ../.gitignore --ignore-unknown --no-error-on-unmatched-pattern", + "lint": "eslint . --report-unused-disable-directives", + "lint:fix": "pnpm lint --fix", + "typecheck": "tsc --noEmit", + "start": "next start" + }, + "dependencies": { + "@mdx-js/loader": "^2.3.0", + "@next/mdx": "^13.4.1", + "@octokit/rest": "^19.0.8", + "@radix-ui/react-checkbox": "^1.0.3", + "@radix-ui/react-dialog": "^1.0.3", + "@radix-ui/react-label": "^2.0.1", + "@radix-ui/react-select": "^1.2.1", + "@radix-ui/react-slot": "^1.0.1", + "@t3-oss/env-nextjs": "^0.3.1", + "class-variance-authority": "^0.6.0", + "clsx": "^1.2.1", + "gitdiff-parser": "^0.3.1", + "lucide-react": "^0.216.0", + "next": "^13.4.1", + "react": "18.2.0", + "react-diff-view": "^3.0.3", + "react-dom": "18.2.0", + "refractor": "^4.8.1", + "rehype-pretty-code": "^0.9.5", + "shiki": "^0.14.1", + "tailwind-merge": "^1.12.0", + "tailwindcss-animate": "^1.0.5", + "zod": "^3.21.4" + }, + "devDependencies": { + "@types/eslint": "^8.37.0", + "@types/mdx": "^2.0.5", + "@types/node": "^18.16.0", + "@types/prettier": "^2.7.2", + "@types/react": "^18.2.6", + "@types/react-dom": "^18.2.4", + "@types/refractor": "^3.0.2", + "@typescript-eslint/eslint-plugin": "^5.59.6", + "@typescript-eslint/parser": "^5.59.6", + "autoprefixer": "^10.4.14", + "eslint": "^8.40.0", + "eslint-config-next": "^13.4.1", + "postcss": "^8.4.21", + "prettier": "^2.8.8", + "prettier-plugin-tailwindcss": "^0.2.8", + "tailwindcss": "^3.3.2", + "typescript": "^5.0.4" + }, + "ct3aMetadata": { + "initVersion": "7.13.0" + } +} diff --git a/upgrade/postcss.config.cjs b/upgrade/postcss.config.cjs new file mode 100644 index 0000000000..e305dd92ab --- /dev/null +++ b/upgrade/postcss.config.cjs @@ -0,0 +1,8 @@ +const config = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; + +module.exports = config; diff --git a/upgrade/prettier.config.cjs b/upgrade/prettier.config.cjs new file mode 100644 index 0000000000..ec47112409 --- /dev/null +++ b/upgrade/prettier.config.cjs @@ -0,0 +1,13 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const baseConfig = require("../.prettierrc.cjs"); + +/** @type {import("prettier").Config} */ +const config = { + ...baseConfig, + plugins: [ + ...(baseConfig.plugins ?? []), + require.resolve("prettier-plugin-tailwindcss"), + ], +}; + +module.exports = config; diff --git a/upgrade/public/opengraph-image.png b/upgrade/public/opengraph-image.png new file mode 100644 index 0000000000..595ae5834d Binary files /dev/null and b/upgrade/public/opengraph-image.png differ diff --git a/upgrade/src/app/api/og/route.tsx b/upgrade/src/app/api/og/route.tsx new file mode 100644 index 0000000000..a2ec2df9a4 --- /dev/null +++ b/upgrade/src/app/api/og/route.tsx @@ -0,0 +1,133 @@ +import { ImageResponse } from "next/server"; + +export const runtime = "edge"; + +export async function GET(req: Request) { + try { + const { searchParams } = new URL(req.url); + const inter = await getFont({ + family: "Inter", + weights: [400, 700] as const, + }); + // get current version and upgrade version from the search params + const currentVersion = searchParams.get("currentVersion"); + const upgradeVersion = searchParams.get("upgradeVersion"); + const additions = searchParams.get("additions"); + const removals = searchParams.get("removals"); + const total = Number(additions) + Number(removals); + + const greenSquares = Math.floor((Number(additions) * 5) / total); + const redSquares = Math.floor((Number(removals) * 5) / total); + const graySquares = 5 - greenSquares - redSquares; + + return new ImageResponse( + ( +
+
+

+ Upgrade T3 App +

+ {currentVersion && upgradeVersion && additions && removals && ( +
+

+ From{" "} + + {currentVersion} + {" "} + to{" "} + + {upgradeVersion} + +

+
+ +{additions} + -{removals} +
+ {Array.from({ length: greenSquares }).map((_, i) => ( +
+ ))} + {Array.from({ length: redSquares }).map((_, i) => ( +
+ ))} + {Array.from({ length: graySquares }).map((_, i) => ( +
+ ))} +
+
+
+ )} +
+
+ ), + { + width: 1200, + height: 627, + fonts: [ + { name: "Inter", data: inter[700], weight: 700 }, + { name: "Inter", data: inter[400], weight: 400 }, + ], + }, + ); + } catch (e) { + console.log(`${e}`); + return new Response(`Failed to generate the image`, { + status: 500, + }); + } +} + +/** https://github.com/juliusmarminge/jumr.dev/blob/main/app/og-image/get-fonts.ts */ + +async function getFont({ + family, + weights, + text, +}: { + family: string; + weights: TWeights; + text?: string; +}): Promise> { + const API = `https://fonts.googleapis.com/css2?family=${family}:wght@${weights.join( + ";", + )}${text ? `&text=${encodeURIComponent(text)}` : ""}`; + + const css = await ( + await fetch(API, { + headers: { + // Make sure it returns TTF. + "User-Agent": + "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1", + }, + }) + ).text(); + + const fonts = css + .split("@font-face {") + .splice(1) + .map((font) => { + const u = font.match(/src: url\((.+)\) format\('(opentype|truetype)'\)/); + const w = font.match(/font-weight: (\d+)/); + return u?.[1] && w?.[1] ? { url: u[1], weight: parseInt(w[1]) } : null; + }) + .filter( + (font): font is { url: string; weight: TWeights[number] } => !!font, + ); + + const promises = fonts.map(async (font) => { + const res = await fetch(font.url); + return [font.weight, await res.arrayBuffer()]; + }); + return Object.fromEntries(await Promise.all(promises)); +} diff --git a/upgrade/src/app/diff/[slug]/files.tsx b/upgrade/src/app/diff/[slug]/files.tsx new file mode 100644 index 0000000000..e0f0163eae --- /dev/null +++ b/upgrade/src/app/diff/[slug]/files.tsx @@ -0,0 +1,123 @@ +"use client"; + +import { type File as FileData } from "gitdiff-parser"; +import { Fragment, useMemo, useState } from "react"; +import { type ViewType, parseDiff } from "react-diff-view"; +import { Decoration, Diff, Hunk } from "react-diff-view"; +import { markEdits, tokenize } from "react-diff-view"; +import { refractor } from "refractor"; +import ts from "refractor/lang/typescript"; +import { cn } from "~/lib/utils"; + +export function Files(props: { diffText: string; viewType: ViewType }) { + const files = parseDiff(props.diffText ?? ""); + const [expandedDiffs, setExpandedDiffs] = useState( + Array.from({ length: files.length }, (_, i) => i == 0), + ); + + return ( +
+ {files.map((file, index) => ( +
+ { + expandedDiffs[index] = a; + setExpandedDiffs([...expandedDiffs]); + }} + /> +
+ ))} +
+ ); +} + +function FileComponent({ + viewType, + file, + isExpanded, + setIsExpanded, +}: { + viewType: ViewType; + file: FileData; + isExpanded: boolean; + setIsExpanded: (a: boolean) => void; +}) { + const { oldRevision, newRevision, type, hunks, oldPath, newPath } = file; + + const tokens = useMemo(() => { + if (!hunks) return undefined; + + refractor.register(ts); + + try { + return tokenize(hunks, { + highlight: true, + enhancers: [markEdits(hunks, { type: "block" })], + language: "typescript", + refractor, + }); + } catch (e) { + return undefined; + } + }, [hunks]); + + return ( +
+ + {isExpanded && ( + + {(hunks) => + hunks.map((hunk, i) => ( + + + {hunk.content} + + + + )) + } + + )} +
+ ); +} diff --git a/upgrade/src/app/diff/[slug]/how-to-apply-diff.mdx b/upgrade/src/app/diff/[slug]/how-to-apply-diff.mdx new file mode 100644 index 0000000000..247e00534a --- /dev/null +++ b/upgrade/src/app/diff/[slug]/how-to-apply-diff.mdx @@ -0,0 +1,31 @@ +import { Steps } from "~/components/mdx"; + +## Patching + + + +### Apply the diff + +To apply the patch, you can use the following command: + +`git apply --reject ./t3-upgrade.patch` + +This will create a new file with the changes that could not be applied. + +### Apply the changes manually + +You can then use wiggle to apply the changes manually: + +`wiggle -r ./package.json ./package.json.rej` + +This will apply the changes to the file and create a file called +package.json.porig with the original file. + +### Resolve conflicts + +In case of conflicts, it will add the conflict markers to the file. +You can then resolve the conflicts manually. + + + +Remember to place your patch file in the project directory, or use the correct file path. diff --git a/upgrade/src/app/diff/[slug]/loading.tsx b/upgrade/src/app/diff/[slug]/loading.tsx new file mode 100644 index 0000000000..7c5e4eede3 --- /dev/null +++ b/upgrade/src/app/diff/[slug]/loading.tsx @@ -0,0 +1,23 @@ +export default function Loading() { + return ( +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ); +} diff --git a/upgrade/src/app/diff/[slug]/page.tsx b/upgrade/src/app/diff/[slug]/page.tsx new file mode 100644 index 0000000000..7e445d9778 --- /dev/null +++ b/upgrade/src/app/diff/[slug]/page.tsx @@ -0,0 +1,172 @@ +import { Files } from "./files"; +import HowToApplyDiff from "./how-to-apply-diff.mdx"; +import gitdiffParser from "gitdiff-parser"; +import { CheckIcon, ChevronRight, XIcon } from "lucide-react"; +import Link from "next/link"; +import { notFound } from "next/navigation"; +import { Button, buttonVariants } from "~/components/ui/button"; +import { Dialog, DialogContent, DialogTrigger } from "~/components/ui/dialog"; +import { + cn, + extractVersionsAndFeatures, + getDiffFromGithub, + getFeatureUrl, + prettyFeatureNameMap, + type Features, +} from "~/lib/utils"; + +export async function generateMetadata({ + params, +}: { + params: { slug: string }; +}) { + const versionsAndFeatures = extractVersionsAndFeatures(params.slug); + if (!versionsAndFeatures) notFound(); + const diff = await getDiffFromGithub(versionsAndFeatures).catch(notFound); + const files = gitdiffParser.parse(diff ?? ""); + let totalAdditions = 0; + let totalRemovals = 0; + files.forEach((file) => { + file.hunks?.forEach((hunk) => { + hunk.changes.forEach((change) => { + if (change.type === "insert") totalAdditions++; + if (change.type === "delete") totalRemovals++; + }); + }); + }); + + const queryParams = new URLSearchParams({ + currentVersion: versionsAndFeatures.currentVersion, + upgradeVersion: versionsAndFeatures.upgradeVersion, + additions: String(totalAdditions), + removals: String(totalRemovals), + }); + + return { + openGraph: { + images: [{ url: `/api/og?${queryParams}` }], + }, + twitter: { + card: "summary_large_image", + images: [{ url: `/api/og?${queryParams}` }], + }, + }; +} + +export default async function Page({ + params, + searchParams, +}: { + params: { slug: string }; + searchParams: Record; +}) { + if (!params?.slug) notFound(); + const versionsAndFeatures = extractVersionsAndFeatures(params.slug); + const viewType = searchParams["viewType"] === "unified" ? "unified" : "split"; + + if (!versionsAndFeatures) notFound(); + const diff = await getDiffFromGithub(versionsAndFeatures).catch(notFound); + + return ( +
+
+

+ Changes from {versionsAndFeatures?.currentVersion} to{" "} + {versionsAndFeatures?.upgradeVersion} +

+
+ + Download .patch file + + + + + + + + + + +
+ +
+ +
+
+ + Split + + + Unified + + or + + View on Github + +
+ +
+
+ ); +} diff --git a/upgrade/src/app/favicon.ico b/upgrade/src/app/favicon.ico new file mode 100644 index 0000000000..f0058b404f Binary files /dev/null and b/upgrade/src/app/favicon.ico differ diff --git a/upgrade/src/app/layout.tsx b/upgrade/src/app/layout.tsx new file mode 100644 index 0000000000..028c2bb756 --- /dev/null +++ b/upgrade/src/app/layout.tsx @@ -0,0 +1,54 @@ +import "react-diff-view/style/index.css"; +import "~/styles/globals.css"; +import { Github } from "lucide-react"; +import { type Metadata } from "next"; +import { Inter } from "next/font/google"; +import { cn } from "~/lib/utils"; + +const inter = Inter({ + subsets: ["latin"], + variable: "--font-sans", +}); + +export const metadata: Metadata = { + title: "Upgrade T3 App", + description: "A tool to upgrade your create-t3-app instance", + openGraph: { + images: [{ url: "/opengraph-image.png" }], + }, + twitter: { + card: "summary_large_image", + images: [{ url: "/opengraph-image.png" }], + }, + metadataBase: new URL("https://t3-upgrade.vercel.app/"), +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + + + + + ); +} diff --git a/upgrade/src/app/page.tsx b/upgrade/src/app/page.tsx new file mode 100644 index 0000000000..f6b618f594 --- /dev/null +++ b/upgrade/src/app/page.tsx @@ -0,0 +1,17 @@ +import { UpgradePanel } from "~/app/upgrade-panel"; +import { getT3VersionsGroupedByMajor } from "~/lib/utils"; + +export default async function Page() { + const t3Versions = await getT3VersionsGroupedByMajor(); + + return ( +
+
+

+ Upgrade T3 App +

+ +
+
+ ); +} diff --git a/upgrade/src/app/upgrade-panel.tsx b/upgrade/src/app/upgrade-panel.tsx new file mode 100644 index 0000000000..c271c93d0f --- /dev/null +++ b/upgrade/src/app/upgrade-panel.tsx @@ -0,0 +1,210 @@ +"use client"; + +import WheresMyVersion from "./wheres-my-version.mdx"; +import { Info } from "lucide-react"; +import Link from "next/link"; +import { useEffect, useMemo, useState } from "react"; +import { buttonVariants } from "~/components/ui/button"; +import { Checkbox } from "~/components/ui/checkbox"; +import { Dialog, DialogContent, DialogTrigger } from "~/components/ui/dialog"; +import { Label } from "~/components/ui/label"; +import { + Select, + SelectContent, + SelectGroup, + SelectItem, + SelectLabel, + SelectTrigger, + SelectValue, +} from "~/components/ui/select"; +import { cn, prettyFeatureNameMap } from "~/lib/utils"; +import { type Features, type VersionsGroupedByMajor } from "~/lib/utils"; + +export function UpgradePanel({ + versionOptions, +}: { + versionOptions: VersionsGroupedByMajor; +}) { + const [currentVersion, setCurrentVersion] = useState(); + const [upgradeVersion, setUpgradeVersion] = useState(); + const [features, setFeatures] = useState({ + nextAuth: false, + prisma: false, + trpc: false, + tailwind: false, + }); + + const upgradeVersionOptions = useMemo(() => { + if (!currentVersion) return versionOptions; + const [major, minor, patch] = currentVersion.split("."); + + // filter out versions that are older than the current version + const filteredVersions = versionOptions + .filter((option) => Number(option.major) >= Number(major)) + .reduce((acc, option) => { + if (Number(option.major) === Number(major)) { + acc.push({ + major: option.major, + versions: ( + versionOptions.find((v) => v.major === option.major)?.versions ?? + [] + ).filter((version) => { + const [, versionMinor, versionPatch] = version.split("."); + if (Number(versionMinor) > Number(minor)) return true; + if ( + Number(versionMinor) === Number(minor) && + Number(versionPatch) > Number(patch) + ) + return true; + return false; + }), + }); + } else { + acc.push({ + major: option.major, + versions: + versionOptions.find((v) => v.major === option.major)?.versions ?? + [], + }); + } + + return acc; + }, []); + + // if only one major version is available and it has no versions, return empty object + if ( + filteredVersions.length === 1 && + (filteredVersions[0]?.versions.length ?? []) === 0 + ) + return []; + + return filteredVersions; + }, [currentVersion, versionOptions]); + + const noUpgradeAvailable = upgradeVersionOptions.length === 0; + + useEffect(() => { + if (noUpgradeAvailable) { + setUpgradeVersion(undefined); + } else { + setUpgradeVersion(upgradeVersionOptions[0]?.versions[0] ?? undefined); + } + }, [noUpgradeAvailable, upgradeVersionOptions]); + + return ( +
+
+ +
+ {Object.keys(features).map((feature) => ( +
+ + value !== "indeterminate" + ? setFeatures((prev) => ({ + ...prev, + [feature]: value, + })) + : null + } + /> + +
+ ))} +
+
+ +
+
+
+
+ + + + + + + + + +
+ +
+ +
+ + +
+
+ features[feature as keyof typeof features]) + .join("-")}`} + className={cn( + buttonVariants(), + (!currentVersion || !upgradeVersion) && + "pointer-events-none opacity-50", + )} + > + Upgrade + +
+
+ ); +} diff --git a/upgrade/src/app/wheres-my-version.mdx b/upgrade/src/app/wheres-my-version.mdx new file mode 100644 index 0000000000..ee60ba102a --- /dev/null +++ b/upgrade/src/app/wheres-my-version.mdx @@ -0,0 +1,23 @@ +import { Steps } from "~/components/mdx"; + +## How do I find my version? + + + +### Open your package.json + +First, open your `package.json` file. + +### Find the version + +Then, look for a field like this: + +```json +{ + "ct3aMetadata": { + "initVersion": "YOUR_VERSION" + } +} +``` + + diff --git a/upgrade/src/components/mdx.tsx b/upgrade/src/components/mdx.tsx new file mode 100644 index 0000000000..c4a5038c0a --- /dev/null +++ b/upgrade/src/components/mdx.tsx @@ -0,0 +1,8 @@ +export function Steps(props: React.ComponentProps<"div">) { + return ( +
+ ); +} diff --git a/upgrade/src/components/ui/button.tsx b/upgrade/src/components/ui/button.tsx new file mode 100644 index 0000000000..c88d60eb9d --- /dev/null +++ b/upgrade/src/components/ui/button.tsx @@ -0,0 +1,54 @@ +import { Slot } from "@radix-ui/react-slot"; +import { type VariantProps, cva } from "class-variance-authority"; +import * as React from "react"; +import { cn } from "~/lib/utils"; + +const buttonVariants = cva( + "inline-flex items-center justify-center rounded text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "underline-offset-4 hover:underline text-primary", + }, + size: { + default: "h-10 py-2 px-4", + sm: "h-9 px-3 rounded", + lg: "h-11 px-8 rounded", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + }, +); + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean; +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button"; + return ( + + ); + }, +); +Button.displayName = "Button"; + +export { Button, buttonVariants }; diff --git a/upgrade/src/components/ui/checkbox.tsx b/upgrade/src/components/ui/checkbox.tsx new file mode 100644 index 0000000000..5466d4db04 --- /dev/null +++ b/upgrade/src/components/ui/checkbox.tsx @@ -0,0 +1,29 @@ +"use client"; + +import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; +import { Check } from "lucide-react"; +import * as React from "react"; +import { cn } from "~/lib/utils"; + +const Checkbox = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + + +)); +Checkbox.displayName = CheckboxPrimitive.Root.displayName; + +export { Checkbox }; diff --git a/upgrade/src/components/ui/dialog.tsx b/upgrade/src/components/ui/dialog.tsx new file mode 100644 index 0000000000..d234d1e483 --- /dev/null +++ b/upgrade/src/components/ui/dialog.tsx @@ -0,0 +1,127 @@ +"use client"; + +import * as DialogPrimitive from "@radix-ui/react-dialog"; +import { X } from "lucide-react"; +import * as React from "react"; +import { cn } from "~/lib/utils"; + +const Dialog = DialogPrimitive.Root; + +const DialogTrigger = DialogPrimitive.Trigger; + +const DialogPortal = ({ + className, + children, + ...props +}: DialogPrimitive.DialogPortalProps) => ( + +
+ {children} +
+
+); +DialogPortal.displayName = DialogPrimitive.Portal.displayName; + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)); +DialogContent.displayName = DialogPrimitive.Content.displayName; + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+); +DialogHeader.displayName = "DialogHeader"; + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+); +DialogFooter.displayName = "DialogFooter"; + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogTitle.displayName = DialogPrimitive.Title.displayName; + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogDescription.displayName = DialogPrimitive.Description.displayName; + +export { + Dialog, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +}; diff --git a/upgrade/src/components/ui/label.tsx b/upgrade/src/components/ui/label.tsx new file mode 100644 index 0000000000..b73917dc87 --- /dev/null +++ b/upgrade/src/components/ui/label.tsx @@ -0,0 +1,25 @@ +"use client"; + +import * as LabelPrimitive from "@radix-ui/react-label"; +import { type VariantProps, cva } from "class-variance-authority"; +import * as React from "react"; +import { cn } from "~/lib/utils"; + +const labelVariants = cva( + "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", +); + +const Label = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & + VariantProps +>(({ className, ...props }, ref) => ( + +)); +Label.displayName = LabelPrimitive.Root.displayName; + +export { Label }; diff --git a/upgrade/src/components/ui/select.tsx b/upgrade/src/components/ui/select.tsx new file mode 100644 index 0000000000..b4cbd853b9 --- /dev/null +++ b/upgrade/src/components/ui/select.tsx @@ -0,0 +1,119 @@ +"use client"; + +import * as SelectPrimitive from "@radix-ui/react-select"; +import { Check, ChevronDown } from "lucide-react"; +import * as React from "react"; +import { cn } from "~/lib/utils"; + +const Select = SelectPrimitive.Root; + +const SelectGroup = SelectPrimitive.Group; + +const SelectValue = SelectPrimitive.Value; + +const SelectTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + {children} + + + + +)); +SelectTrigger.displayName = SelectPrimitive.Trigger.displayName; + +const SelectContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, position = "popper", ...props }, ref) => ( + + + + {children} + + + +)); +SelectContent.displayName = SelectPrimitive.Content.displayName; + +const SelectLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +SelectLabel.displayName = SelectPrimitive.Label.displayName; + +const SelectItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + + {children} + +)); +SelectItem.displayName = SelectPrimitive.Item.displayName; + +const SelectSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +SelectSeparator.displayName = SelectPrimitive.Separator.displayName; + +export { + Select, + SelectGroup, + SelectValue, + SelectTrigger, + SelectContent, + SelectLabel, + SelectItem, + SelectSeparator, +}; diff --git a/upgrade/src/env.mjs b/upgrade/src/env.mjs new file mode 100644 index 0000000000..24b6ff5e33 --- /dev/null +++ b/upgrade/src/env.mjs @@ -0,0 +1,37 @@ +import { createEnv } from "@t3-oss/env-nextjs"; +import { z } from "zod"; + +export const env = createEnv({ + /** + * Specify your server-side environment variables schema here. This way you can ensure the app + * isn't built with invalid env vars. + */ + server: { + NODE_ENV: z.enum(["development", "test", "production"]), + GITHUB_PERSONAL_ACCESS_TOKEN: z.string().min(1), + GITHUB_DIFFS_OWNER: z.string().min(1), + GITHUB_DIFFS_REPO: z.string().min(1), + }, + + /** + * Specify your client-side environment variables schema here. This way you can ensure the app + * isn't built with invalid env vars. To expose them to the client, prefix them with + * `NEXT_PUBLIC_`. + */ + client: { + // NEXT_PUBLIC_CLIENTVAR: z.string().min(1), + }, + + /** + * You can't destruct `process.env` as a regular object in the Next.js edge runtimes (e.g. + * middlewares) or client-side so we need to destruct manually. + */ + runtimeEnv: { + NODE_ENV: process.env.NODE_ENV, + GITHUB_PERSONAL_ACCESS_TOKEN: process.env.GITHUB_PERSONAL_ACCESS_TOKEN, + GITHUB_DIFFS_OWNER: process.env.GITHUB_DIFFS_OWNER, + GITHUB_DIFFS_REPO: process.env.GITHUB_DIFFS_REPO, + // NEXT_PUBLIC_CLIENTVAR: process.env.NEXT_PUBLIC_CLIENTVAR, + }, + skipValidation: !!process.env.SKIP_ENV_VALIDATION, +}); diff --git a/upgrade/src/lib/utils.ts b/upgrade/src/lib/utils.ts new file mode 100644 index 0000000000..c4c558bd83 --- /dev/null +++ b/upgrade/src/lib/utils.ts @@ -0,0 +1,177 @@ +import { Octokit } from "@octokit/rest"; +import { clsx, type ClassValue } from "clsx"; +import { twMerge } from "tailwind-merge"; +import { env } from "~/env.mjs"; + +export const cn = (...inputs: ClassValue[]) => { + return twMerge(clsx(inputs)); +}; + +export const prettyFeatureNameMap: Record = { + nextAuth: "NextAuth.js", + prisma: "Prisma", + trpc: "tRPC", + tailwind: "Tailwind CSS", +}; + +export type VersionsGroupedByMajor = Array<{ + major: string; + versions: string[]; +}>; + +export const getT3Versions = async () => { + const octokit = new Octokit({ + auth: env.GITHUB_PERSONAL_ACCESS_TOKEN, + }); + + const releases = await octokit.repos.listReleases({ + owner: "t3-oss", + repo: "create-t3-app", + per_page: 100, + }); + + return releases.data + .map((release) => release.tag_name.split("@")[1] ?? "") + .filter((v) => { + if (!v) return false; + // ignore versions under 5.10.3 + const [majorStr, minorStr, patchStr] = v.split("."); + const major = Number(majorStr); + const minor = Number(minorStr); + const patch = Number(patchStr); + if (isNaN(major) || isNaN(minor) || isNaN(patch)) { + console.warn(`Failed to parse version ${v}`); + return false; + } + + if (major > 5) return true; + if (major === 5 && minor > 10) return true; + if (major === 5 && minor === 10 && patch >= 3) return true; + return false; + }) + .filter((v) => v !== ""); +}; + +export const getT3VersionsGroupedByMajor = async () => { + const actualVersions = await getT3Versions(); + + const versionsGroupedByMajor: VersionsGroupedByMajor = []; + + actualVersions.forEach((version) => { + const [major] = version.split("."); + if (!major) return; + + const majorGroup = versionsGroupedByMajor.find( + (group) => group.major === major, + ); + + if (majorGroup) { + majorGroup.versions.push(version); + } else { + versionsGroupedByMajor.push({ + major, + versions: [version], + }); + } + }); + + return versionsGroupedByMajor.sort( + (a, b) => Number(b.major) - Number(a.major), + ); +}; + +export interface Features { + nextAuth?: boolean; + prisma?: boolean; + trpc?: boolean; + tailwind?: boolean; +} + +export const getFeaturesString = (features: Features) => { + return Object.entries(features) + .filter(([, value]) => value) + .map(([key]) => key) + .join("-"); +}; + +export const getFeatureUrl = (feature: string) => { + if (feature === "nextAuth") { + return "https://next-auth.js.org/"; + } else if (feature === "prisma") { + return "https://www.prisma.io/"; + } else if (feature === "trpc") { + return "https://trpc.io/"; + } else if (feature === "tailwind") { + return "https://tailwindcss.com/"; + } +}; + +type VersionsRegex = { + currentVersion: string; + upgradeVersion: string; +}; + +export const extractVersionsAndFeatures = (slug: string) => { + const regex = + /(?\d+\.\d+\.\d+).*(?\d+\.\d+\.\d+)/; + const match = + (slug.match(regex) as RegExpMatchArray & { + groups: VersionsRegex; + }) || null; + + if (!match) { + return null; + } + const { currentVersion, upgradeVersion } = match.groups; + + return { + currentVersion: currentVersion, + upgradeVersion: upgradeVersion, + features: { + nextAuth: slug.includes("nextAuth"), + prisma: slug.includes("prisma"), + trpc: slug.includes("trpc"), + tailwind: slug.includes("tailwind"), + }, + }; +}; + +export interface DiffLocation { + currentVersion: string; + upgradeVersion: string; + features: Features; +} + +export const getDiffFromGithub = async (props: DiffLocation) => { + const octokit = new Octokit({ + auth: env.GITHUB_PERSONAL_ACCESS_TOKEN, + }); + + const featuresString = getFeaturesString(props.features); + const path = `diffs/diff-${props.currentVersion}-${props.upgradeVersion}${ + featuresString ? `-${featuresString}` : "" + }.patch`; + + const { data } = await octokit.repos.getContent({ + owner: env.GITHUB_DIFFS_OWNER, + repo: env.GITHUB_DIFFS_REPO, + path, + }); + + if (Array.isArray(data)) { + throw new Error("No file found"); + } + + const downloadUrl = data.download_url; + if (!downloadUrl) { + throw new Error("No download url found"); + } + + const response = await fetch(downloadUrl); + + if (!response.ok) { + throw new Error("Failed to download diff"); + } + + return response.text(); +}; diff --git a/upgrade/src/mdx-components.tsx b/upgrade/src/mdx-components.tsx new file mode 100644 index 0000000000..cf768dc97f --- /dev/null +++ b/upgrade/src/mdx-components.tsx @@ -0,0 +1,57 @@ +import { Steps } from "./components/mdx"; +import { type MDXComponents } from "mdx/types"; +import Link from "next/link"; +import * as React from "react"; + +// This file is required to use MDX in `app` directory. +export function useMDXComponents(components: MDXComponents): MDXComponents { + return { + // Allows customizing built-in components, e.g. to add styling. + h1: (props) => ( +

+ ), + h2: (props) => ( +

+ ), + h3: (props) => ( +

+ ), + p: (props) => ( +

+ ), + a: ({ children, href }) => { + const isExternal = href?.startsWith("http"); + const Component = isExternal ? "a" : Link; + return ( + + {children} + + ); + }, + code: (props) => ( + + ), + pre: ({ children, ...rest }) => ( +

+        {children}
+      
+ ), + + Steps: Steps, + + // Pass through all other components. + ...components, + }; +} diff --git a/upgrade/src/styles/globals.css b/upgrade/src/styles/globals.css new file mode 100644 index 0000000000..e3e64748ac --- /dev/null +++ b/upgrade/src/styles/globals.css @@ -0,0 +1,119 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 222.2 47.4% 11.2%; + + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + + --popover: 0 0% 100%; + --popover-foreground: 222.2 47.4% 11.2%; + + --card: 0 0% 100%; + --card-foreground: 222.2 47.4% 11.2%; + + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + + --primary: 222.2 47.4% 11.2%; + --primary-foreground: 210 40% 98%; + + --secondary: 210 40% 96.1%; + --secondary-foreground: 222.2 47.4% 11.2%; + + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; + + --destructive: 0 100% 50%; + --destructive-foreground: 210 40% 98%; + + --ring: 215 20.2% 65.1%; + + --radius: 0.5rem; + + --diff-code-insert-background-color: hsl(var(--success)) !important; + --diff-gutter-insert-background-color: hsl(var(--success)) !important; + --diff-code-delete-background-color: hsla(var(--destructive)) !important; + --diff-gutter-delete-background-color: hsla(var(--destructive)) !important; + --diff-omit-gutter-line-color: hsla(var(--destructive)) !important; + } + + .dark { + --background: 224 71% 4%; + --foreground: 213 31% 91%; + + --muted: 223 47% 11%; + --muted-foreground: 215.4 16.3% 56.9%; + + --popover: 224 71% 4%; + --popover-foreground: 215 20.2% 65.1%; + + --card: 224 71% 4%; + --card-foreground: 213 31% 91%; + + --border: 216 34% 17%; + --input: 216 34% 17%; + + --primary: 210 40% 98%; + --primary-foreground: 222.2 47.4% 1.2%; + + --secondary: 222.2 47.4% 11.2%; + --secondary-foreground: 210 40% 98%; + + --accent: 216 34% 17%; + --accent-foreground: 210 40% 98%; + + --success: 132 37% 26%; + --success-foreground: 210 40% 98%; + + --destructive: 0 63% 31%; + --destructive-foreground: 210 40% 98%; + + --ring: 216 34% 17%; + + --radius: 0.5rem; + + --diff-code-insert-background-color: hsl(var(--success)) !important; + --diff-gutter-insert-background-color: hsl(var(--success)) !important; + --diff-code-delete-background-color: hsla(var(--destructive)) !important; + --diff-gutter-delete-background-color: hsla(var(--destructive)) !important; + --diff-omit-gutter-line-color: hsla(var(--destructive)) !important; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + font-feature-settings: "rlig" 1, "calt" 1; + } +} + +@layer utilities { + .step { + counter-increment: step; + } + + .step:before { + @apply absolute inline-flex h-8 w-8 items-center justify-center rounded-full bg-accent text-center -indent-px text-base font-medium; + @apply ml-[-41px]; + content: counter(step); + } +} + +@layer components { + pre > code { + counter-reset: line; + padding: unset !important; + } + + .diff { + @apply overflow-hidden rounded-b; + } +} diff --git a/upgrade/tailwind.config.ts b/upgrade/tailwind.config.ts new file mode 100644 index 0000000000..8911c377b1 --- /dev/null +++ b/upgrade/tailwind.config.ts @@ -0,0 +1,85 @@ +import { type Config } from "tailwindcss"; +import { fontFamily } from "tailwindcss/defaultTheme"; + +export default { + darkMode: ["class"], + content: ["./src/**/*.{js,ts,jsx,tsx}"], + theme: { + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, + }, + extend: { + fontFamily: { + sans: ["var(--font-sans)", ...fontFamily.sans], + }, + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))", + }, + success: { + DEFAULT: "hsl(var(--success))", + foreground: "hsl(var(--success-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, + keyframes: { + "accordion-down": { + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, + }, + shimmer: { + "100%": { + transform: "translateX(100%)", + }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + }, + }, + }, + plugins: [require("tailwindcss-animate")], +} satisfies Config; diff --git a/upgrade/tsconfig.json b/upgrade/tsconfig.json new file mode 100644 index 0000000000..08e658968e --- /dev/null +++ b/upgrade/tsconfig.json @@ -0,0 +1,39 @@ +{ + "compilerOptions": { + "target": "es2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "checkJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "noUncheckedIndexedAccess": true, + "baseUrl": ".", + "paths": { + "~/*": ["./src/*"] + }, + "plugins": [ + { + "name": "next" + } + ] + }, + "include": [ + ".eslintrc.cjs", + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + "**/*.cjs", + "**/*.mjs", + ".next/types/**/*.ts" + ], + "exclude": ["node_modules"] +}