From ddf1c9d3ca5e63f566adc11fa09b7e0fffc89636 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Tue, 8 Aug 2023 12:11:35 -0600 Subject: [PATCH 1/6] smol event changes --- package.json | 18 +- pnpm-lock.yaml | 490 +++++++++++++-------------------- src/pages/room/[id].tsx | 16 +- src/server/api/routers/room.ts | 21 +- src/server/api/routers/vote.ts | 7 +- src/utils/types.ts | 8 +- 6 files changed, 222 insertions(+), 338 deletions(-) diff --git a/package.json b/package.json index a123f11..8b20c79 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@auth/prisma-adapter": "^1.0.1", "@prisma/client": "5.1.1", "@react-email/components": "^0.0.7", - "@tanstack/react-query": "^4.32.1", + "@tanstack/react-query": "^4.32.6", "@trpc/client": "10.37.1", "@trpc/next": "10.37.1", "@trpc/react-query": "10.37.1", @@ -27,8 +27,8 @@ "ably": "^1.2.42", "autoprefixer": "^10.4.14", "json2csv": "6.0.0-alpha.2", - "next": "^13.4.12", - "next-auth": "^4.22.3", + "next": "^13.4.13", + "next-auth": "^4.22.5", "nextjs-cors": "^2.1.2", "postcss": "^8.4.27", "react": "18.2.0", @@ -42,15 +42,15 @@ "zod": "^3.21.4" }, "devDependencies": { - "@types/eslint": "^8.44.1", + "@types/eslint": "^8.44.2", "@types/json2csv": "^5.0.3", - "@types/node": "^20.4.6", - "@types/react": "^18.2.18", - "@typescript-eslint/eslint-plugin": "^6.2.1", - "@typescript-eslint/parser": "^6.2.1", + "@types/node": "^20.4.8", + "@types/react": "^18.2.19", + "@typescript-eslint/eslint-plugin": "^6.3.0", + "@typescript-eslint/parser": "^6.3.0", "daisyui": "^3.5.1", "eslint": "^8.46.0", - "eslint-config-next": "^13.4.12", + "eslint-config-next": "^13.4.13", "prisma": "5.1.1", "tailwindcss": "^3.3.3", "typescript": "^5.1.6" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f2b82e..7c9872b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,17 +18,17 @@ dependencies: specifier: ^0.0.7 version: 0.0.7 '@tanstack/react-query': - specifier: ^4.32.1 - version: 4.32.1(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.32.6 + version: 4.32.6(react-dom@18.2.0)(react@18.2.0) '@trpc/client': specifier: 10.37.1 version: 10.37.1(@trpc/server@10.37.1) '@trpc/next': specifier: 10.37.1 - version: 10.37.1(@tanstack/react-query@4.32.1)(@trpc/client@10.37.1)(@trpc/react-query@10.37.1)(@trpc/server@10.37.1)(next@13.4.12)(react-dom@18.2.0)(react@18.2.0) + version: 10.37.1(@tanstack/react-query@4.32.6)(@trpc/client@10.37.1)(@trpc/react-query@10.37.1)(@trpc/server@10.37.1)(next@13.4.13)(react-dom@18.2.0)(react@18.2.0) '@trpc/react-query': specifier: 10.37.1 - version: 10.37.1(@tanstack/react-query@4.32.1)(@trpc/client@10.37.1)(@trpc/server@10.37.1)(react-dom@18.2.0)(react@18.2.0) + version: 10.37.1(@tanstack/react-query@4.32.6)(@trpc/client@10.37.1)(@trpc/server@10.37.1)(react-dom@18.2.0)(react@18.2.0) '@trpc/server': specifier: 10.37.1 version: 10.37.1 @@ -51,14 +51,14 @@ dependencies: specifier: 6.0.0-alpha.2 version: 6.0.0-alpha.2 next: - specifier: ^13.4.12 - version: 13.4.12(react-dom@18.2.0)(react@18.2.0) + specifier: ^13.4.13 + version: 13.4.13(react-dom@18.2.0)(react@18.2.0) next-auth: - specifier: ^4.22.3 - version: 4.22.3(next@13.4.12)(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.22.5 + version: 4.22.5(next@13.4.13)(react-dom@18.2.0)(react@18.2.0) nextjs-cors: specifier: ^2.1.2 - version: 2.1.2(next@13.4.12) + version: 2.1.2(next@13.4.13) postcss: specifier: ^8.4.27 version: 8.4.27 @@ -92,23 +92,23 @@ dependencies: devDependencies: '@types/eslint': - specifier: ^8.44.1 - version: 8.44.1 + specifier: ^8.44.2 + version: 8.44.2 '@types/json2csv': specifier: ^5.0.3 version: 5.0.3 '@types/node': - specifier: ^20.4.6 - version: 20.4.6 + specifier: ^20.4.8 + version: 20.4.8 '@types/react': - specifier: ^18.2.18 - version: 18.2.18 + specifier: ^18.2.19 + version: 18.2.19 '@typescript-eslint/eslint-plugin': - specifier: ^6.2.1 - version: 6.2.1(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.6) + specifier: ^6.3.0 + version: 6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.46.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: ^6.2.1 - version: 6.2.1(eslint@8.46.0)(typescript@5.1.6) + specifier: ^6.3.0 + version: 6.3.0(eslint@8.46.0)(typescript@5.1.6) daisyui: specifier: ^3.5.1 version: 3.5.1 @@ -116,8 +116,8 @@ devDependencies: specifier: ^8.46.0 version: 8.46.0 eslint-config-next: - specifier: ^13.4.12 - version: 13.4.12(eslint@8.46.0)(typescript@5.1.6) + specifier: ^13.4.13 + version: 13.4.13(eslint@8.46.0)(typescript@5.1.6) prisma: specifier: 5.1.1 version: 5.1.1 @@ -187,11 +187,12 @@ packages: - nodemailer dev: false - /@babel/code-frame@7.22.5: - resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} + /@babel/code-frame@7.22.10: + resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.5 + '@babel/highlight': 7.22.10 + chalk: 2.4.2 dev: false /@babel/helper-validator-identifier@7.22.5: @@ -199,8 +200,8 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/highlight@7.22.5: - resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} + /@babel/highlight@7.22.10: + resolution: {integrity: sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.5 @@ -208,11 +209,11 @@ packages: js-tokens: 4.0.0 dev: false - /@babel/runtime@7.22.6: - resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} + /@babel/runtime@7.22.10: + resolution: {integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.11 + regenerator-runtime: 0.14.0 /@commander-js/extra-typings@9.4.1(commander@9.4.1): resolution: {integrity: sha512-v0BqORYamk1koxDon6femDGLWSL7P78vYTyOU5nFaALnmNALL+ktgdHvWbxzzBBJIKS7kv3XvM/DqNwiLcgFTA==} @@ -483,11 +484,11 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 dev: true - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} dev: true @@ -496,19 +497,15 @@ packages: engines: {node: '>=6.0.0'} dev: true - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + /@jridgewell/trace-mapping@0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true /@manypkg/find-root@2.1.0: @@ -531,18 +528,18 @@ packages: read-yaml-file: 1.1.0 dev: false - /@next/env@13.4.12: - resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==} + /@next/env@13.4.13: + resolution: {integrity: sha512-fwz2QgVg08v7ZL7KmbQBLF2PubR/6zQdKBgmHEl3BCyWTEDsAQEijjw2gbFhI1tcKfLdOOJUXntz5vZ4S0Polg==} dev: false - /@next/eslint-plugin-next@13.4.12: - resolution: {integrity: sha512-6rhK9CdxEgj/j1qvXIyLTWEaeFv7zOK8yJMulz3Owel0uek0U9MJCGzmKgYxM3aAUBo3gKeywCZKyQnJKto60A==} + /@next/eslint-plugin-next@13.4.13: + resolution: {integrity: sha512-RpZeXlPxQ9FLeYN84XHDqRN20XxmVNclYCraLYdifRsmibtcWUWdwE/ANp2C8kgesFRsvwfsw6eOkYNl9sLJ3A==} dependencies: glob: 7.1.7 dev: true - /@next/swc-darwin-arm64@13.4.12: - resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==} + /@next/swc-darwin-arm64@13.4.13: + resolution: {integrity: sha512-ZptVhHjzUuivnXMNCJ6lER33HN7lC+rZ01z+PM10Ows21NHFYMvGhi5iXkGtBDk6VmtzsbqnAjnx4Oz5um0FjA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -550,8 +547,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@13.4.12: - resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==} + /@next/swc-darwin-x64@13.4.13: + resolution: {integrity: sha512-t9nTiWCLApw8W4G1kqJyYP7y6/7lyal3PftmRturIxAIBlZss9wrtVN8nci50StDHmIlIDxfguYIEGVr9DbFTg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -559,8 +556,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@13.4.12: - resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==} + /@next/swc-linux-arm64-gnu@13.4.13: + resolution: {integrity: sha512-xEHUqC8eqR5DHe8SOmMnDU1K3ggrJ28uIKltrQAwqFSSSmzjnN/XMocZkcVhuncuxYrpbri0iMQstRyRVdQVWg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -568,8 +565,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@13.4.12: - resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==} + /@next/swc-linux-arm64-musl@13.4.13: + resolution: {integrity: sha512-sNf3MnLAm8rquSSAoeD9nVcdaDeRYOeey4stOWOyWIgbBDtP+C93amSgH/LPTDoUV7gNiU6f+ghepTjTjRgIUQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -577,8 +574,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@13.4.12: - resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==} + /@next/swc-linux-x64-gnu@13.4.13: + resolution: {integrity: sha512-WhcRaJJSHyx9OWmKjjz+OWHumiPZWRqmM/09Bt7Up4UqUJFFhGExeztR4trtv3rflvULatu9IH/nTV8fUUgaMA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -586,8 +583,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@13.4.12: - resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==} + /@next/swc-linux-x64-musl@13.4.13: + resolution: {integrity: sha512-+Y4LLhOWWZQIDKVwr2R17lq2KSN0F1c30QVgGIWfnjjHpH8nrIWHEndhqYU+iFuW8It78CiJjQKTw4f51HD7jA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -595,8 +592,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@13.4.12: - resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==} + /@next/swc-win32-arm64-msvc@13.4.13: + resolution: {integrity: sha512-rWurdOR20uxjfqd1X9vDAgv0Jb26KjyL8akF9CBeFqX8rVaBAnW/Wf6A2gYEwyYY4Bai3T7p1kro6DFrsvBAAw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -604,8 +601,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@13.4.12: - resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==} + /@next/swc-win32-ia32-msvc@13.4.13: + resolution: {integrity: sha512-E8bSPwRuY5ibJ3CzLQmJEt8qaWrPYuUTwnrwygPUEWoLzD5YRx9SD37oXRdU81TgGwDzCxpl7z5Nqlfk50xAog==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -613,8 +610,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@13.4.12: - resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==} + /@next/swc-win32-x64-msvc@13.4.13: + resolution: {integrity: sha512-4KlyC6jWRubPnppgfYsNTPeWfGCxtWLh5vaOAW/kdzAk9widqho8Qb5S4K2vHmal1tsURi7Onk2MMCV1phvyqA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -811,7 +808,7 @@ packages: peerDependencies: react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.22.10 react: 18.2.0 dev: false @@ -820,7 +817,7 @@ packages: peerDependencies: react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.22.10 '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) react: 18.2.0 dev: false @@ -983,8 +980,8 @@ packages: react: 18.2.0 dev: false - /@rushstack/eslint-patch@1.3.2: - resolution: {integrity: sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==} + /@rushstack/eslint-patch@1.3.3: + resolution: {integrity: sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==} dev: true /@selderee/plugin-htmlparser2@0.10.0: @@ -1016,12 +1013,12 @@ packages: defer-to-connect: 2.0.1 dev: false - /@tanstack/query-core@4.32.1: - resolution: {integrity: sha512-VEAGHboOFWN/bvf/7cCoeLQfld0AA8n0V/kfc77W+FvxnnSwJufEh6gfjqpX5bRE/DEYfYDYdNtuL3KM+lIs8Q==} + /@tanstack/query-core@4.32.6: + resolution: {integrity: sha512-YVB+mVWENQwPyv+40qO7flMgKZ0uI41Ph7qXC2Zf1ft5AIGfnXnMZyifB2ghhZ27u+5wm5mlzO4Y6lwwadzxCA==} dev: false - /@tanstack/react-query@4.32.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-lPTfOq6bR6DorPaS018gTMd3zs8r06tlERiVY6BRP9SnDkkl4ckqeANava/jPLWrSZP+EA15loQUTmvZs6k2GA==} + /@tanstack/react-query@4.32.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-AITu/IKJJJXsHHeXNBy5bclu12t08usMCY0vFC2dh9SP/w6JAk5U9GwfjOIPj3p+ATADZvxQPe8UiCtMLNeQbg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -1032,7 +1029,7 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.32.1 + '@tanstack/query-core': 4.32.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0) @@ -1046,7 +1043,7 @@ packages: '@trpc/server': 10.37.1 dev: false - /@trpc/next@10.37.1(@tanstack/react-query@4.32.1)(@trpc/client@10.37.1)(@trpc/react-query@10.37.1)(@trpc/server@10.37.1)(next@13.4.12)(react-dom@18.2.0)(react@18.2.0): + /@trpc/next@10.37.1(@tanstack/react-query@4.32.6)(@trpc/client@10.37.1)(@trpc/react-query@10.37.1)(@trpc/server@10.37.1)(next@13.4.13)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-0KEgr09mBfao56lkj7ZBfVOY86d3+bDH1o0zJkDHSH60Dp/hIJ7wLCnZJIhePlZxEwknCQjVeLsTy4Pqlu8NyQ==} peerDependencies: '@tanstack/react-query': ^4.18.0 @@ -1057,17 +1054,17 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@tanstack/react-query': 4.32.1(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query': 4.32.6(react-dom@18.2.0)(react@18.2.0) '@trpc/client': 10.37.1(@trpc/server@10.37.1) - '@trpc/react-query': 10.37.1(@tanstack/react-query@4.32.1)(@trpc/client@10.37.1)(@trpc/server@10.37.1)(react-dom@18.2.0)(react@18.2.0) + '@trpc/react-query': 10.37.1(@tanstack/react-query@4.32.6)(@trpc/client@10.37.1)(@trpc/server@10.37.1)(react-dom@18.2.0)(react@18.2.0) '@trpc/server': 10.37.1 - next: 13.4.12(react-dom@18.2.0)(react@18.2.0) + next: 13.4.13(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) dev: false - /@trpc/react-query@10.37.1(@tanstack/react-query@4.32.1)(@trpc/client@10.37.1)(@trpc/server@10.37.1)(react-dom@18.2.0)(react@18.2.0): + /@trpc/react-query@10.37.1(@tanstack/react-query@4.32.6)(@trpc/client@10.37.1)(@trpc/server@10.37.1)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-TbOOPp0fZVaKfaeEyDoV8QeTHW1vgPTbfOs0uSQ4AzBXqXPu+9v1B44z8GGRJSdUxuOX9pG/6Ap5Kx8PQ3eF+Q==} peerDependencies: '@tanstack/react-query': ^4.18.0 @@ -1076,7 +1073,7 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@tanstack/react-query': 4.32.1(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query': 4.32.6(react-dom@18.2.0)(react@18.2.0) '@trpc/client': 10.37.1(@trpc/server@10.37.1) '@trpc/server': 10.37.1 react: 18.2.0 @@ -1092,12 +1089,12 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 20.4.6 + '@types/node': 20.4.8 '@types/responselike': 1.0.0 dev: false - /@types/eslint@8.44.1: - resolution: {integrity: sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==} + /@types/eslint@8.44.2: + resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} dependencies: '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 @@ -1118,7 +1115,7 @@ packages: /@types/json2csv@5.0.3: resolution: {integrity: sha512-ZJEv6SzhPhgpBpxZU4n/TZekbZqI4EcyXXRwms1lAITG2kIAtj85PfNYafUOY1zy8bWs5ujaub0GU4copaA0sw==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.4.8 dev: true /@types/json5@0.0.29: @@ -1128,15 +1125,15 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.4.8 dev: false /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: false - /@types/node@20.4.6: - resolution: {integrity: sha512-q0RkvNgMweWWIvSMDiXhflGUKMdIxBo2M2tYM/0kEGDueQByFzK4KZAgu5YHGFNxziTlppNpTIBcqHQAxlfHdA==} + /@types/node@20.4.8: + resolution: {integrity: sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==} /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -1146,8 +1143,8 @@ packages: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/react@18.2.18: - resolution: {integrity: sha512-da4NTSeBv/P34xoZPhtcLkmZuJ+oYaCxHmyHzwaDQo9RQPBeXV+06gEk2FpqEcsX9XrnNLvRpVh6bdavDSjtiQ==} + /@types/react@18.2.19: + resolution: {integrity: sha512-e2S8wmY1ePfM517PqCG80CcE48Xs5k0pwJzuDZsfE8IZRRBfOMCF+XqnFxu6mWtyivum1MQm4aco+WIt6Coimw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -1157,7 +1154,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.4.8 dev: false /@types/scheduler@0.16.3: @@ -1168,8 +1165,8 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@6.2.1(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-iZVM/ALid9kO0+I81pnp1xmYiFyqibAHzrqX4q5YvvVEyJqY+e6rfTXSCsc2jUxGNqJqTfFSSij/NFkZBiBzLw==} + /@typescript-eslint/eslint-plugin@6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-IZYjYZ0ifGSLZbwMqIip/nOamFiWJ9AH+T/GYNZBWkVcyNQOFGtSMoWV7RvY4poYCMZ/4lHzNl796WOSNxmk8A==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -1180,11 +1177,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.2.1(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.2.1 - '@typescript-eslint/type-utils': 6.2.1(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.1(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/parser': 6.3.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.3.0 + '@typescript-eslint/type-utils': 6.3.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.3.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.3.0 debug: 4.3.4 eslint: 8.46.0 graphemer: 1.4.0 @@ -1198,28 +1195,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) - debug: 4.3.4 - eslint: 8.46.0 - typescript: 5.1.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@6.2.1(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==} + /@typescript-eslint/parser@6.3.0(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-ibP+y2Gr6p0qsUkhs7InMdXrwldjxZw66wpcQq9/PzAroM45wdwyu81T+7RibNCh8oc0AgrsyCwJByncY0Ongg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1228,10 +1205,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.2.1 - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/scope-manager': 6.3.0 + '@typescript-eslint/types': 6.3.0 + '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.3.0 debug: 4.3.4 eslint: 8.46.0 typescript: 5.1.6 @@ -1239,24 +1216,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - - /@typescript-eslint/scope-manager@6.2.1: - resolution: {integrity: sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==} + /@typescript-eslint/scope-manager@6.3.0: + resolution: {integrity: sha512-WlNFgBEuGu74ahrXzgefiz/QlVb+qg8KDTpknKwR7hMH+lQygWyx0CQFoUmMn1zDkQjTBBIn75IxtWss77iBIQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/types': 6.3.0 + '@typescript-eslint/visitor-keys': 6.3.0 dev: true - /@typescript-eslint/type-utils@6.2.1(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-fTfCgomBMIgu2Dh2Or3gMYgoNAnQm3RLtRp+jP7A8fY+LJ2+9PNpi5p6QB5C4RSP+U3cjI0vDlI3mspAkpPVbQ==} + /@typescript-eslint/type-utils@6.3.0(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-7Oj+1ox1T2Yc8PKpBvOKWhoI/4rWFd1j7FA/rPE0lbBPXTKjdbtC+7Ev0SeBjEKkIhKWVeZSP+mR7y1Db1CdfQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1265,8 +1234,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.1(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.3.0(eslint@8.46.0)(typescript@5.1.6) debug: 4.3.4 eslint: 8.46.0 ts-api-utils: 1.0.1(typescript@5.1.6) @@ -1275,39 +1244,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/types@6.2.1: - resolution: {integrity: sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==} + /@typescript-eslint/types@6.3.0: + resolution: {integrity: sha512-K6TZOvfVyc7MO9j60MkRNWyFSf86IbOatTKGrpTQnzarDZPYPVy0oe3myTMq7VjhfsUAbNUW8I5s+2lZvtx1gg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@6.2.1(typescript@5.1.6): - resolution: {integrity: sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==} + /@typescript-eslint/typescript-estree@6.3.0(typescript@5.1.6): + resolution: {integrity: sha512-Xh4NVDaC4eYKY4O3QGPuQNp5NxBAlEvNQYOqJquR2MePNxO11E5K3t5x4M4Mx53IZvtpW+mBxIT0s274fLUocg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1315,8 +1258,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/types': 6.3.0 + '@typescript-eslint/visitor-keys': 6.3.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -1327,8 +1270,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.2.1(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==} + /@typescript-eslint/utils@6.3.0(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-hLLg3BZE07XHnpzglNBG8P/IXq/ZVXraEbgY7FM0Cnc1ehM8RMdn9mat3LubJ3KBeYXXPxV1nugWbQPjGeJk6Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1336,9 +1279,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.2.1 - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.3.0 + '@typescript-eslint/types': 6.3.0 + '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.1.6) eslint: 8.46.0 semver: 7.5.4 transitivePeerDependencies: @@ -1346,19 +1289,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.2 - dev: true - - /@typescript-eslint/visitor-keys@6.2.1: - resolution: {integrity: sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==} + /@typescript-eslint/visitor-keys@6.3.0: + resolution: {integrity: sha512-kEhRRj7HnvaSjux1J9+7dBen15CdWmDnwrpyiHsFX6Qx2iW5LOBUgNefOFeh2PjWPlNwN8TOn6+4eBU3J/gupw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.1 + '@typescript-eslint/types': 6.3.0 eslint-visitor-keys: 3.4.2 dev: true @@ -1718,7 +1653,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001519 - electron-to-chromium: 1.4.483 + electron-to-chromium: 1.4.487 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) dev: false @@ -2251,8 +2186,8 @@ packages: semver: 7.5.4 dev: false - /electron-to-chromium@1.4.483: - resolution: {integrity: sha512-YLwU0iF//9R3cCEfq0wgL+pf9vglE4kwAg4S5tkVVZljUDKv7Wcz67mTY4OOj+T7YUbTGuqlbqgdl/s+7Q8KTw==} + /electron-to-chromium@1.4.487: + resolution: {integrity: sha512-XbCRs/34l31np/p33m+5tdBrdXu9jJkZxSbNxj5I0H1KtV2ZMSB+i/HYqDiRzHaFx2T5EdytjoBRe8QRJE2vQg==} dev: false /emoji-regex@9.2.2: @@ -2398,8 +2333,8 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-next@13.4.12(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-ZF0r5vxKaVazyZH/37Au/XItiG7qUOBw+HaH3PeyXltIMwXorsn6bdrl0Nn9N5v5v9spc+6GM2ryjugbjF6X2g==} + /eslint-config-next@13.4.13(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-EXAh5h1yG/YTNa5YdskzaSZncBjKjvFe2zclMCi2KXyTsXha22wB6MPs/U7idB6a2qjpBdbZcruQY1TWjfNMZw==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 typescript: '>=3.3.1' @@ -2407,13 +2342,13 @@ packages: typescript: optional: true dependencies: - '@next/eslint-plugin-next': 13.4.12 - '@rushstack/eslint-patch': 1.3.2 - '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6) + '@next/eslint-plugin-next': 13.4.13 + '@rushstack/eslint-patch': 1.3.3 + '@typescript-eslint/parser': 6.3.0(eslint@8.46.0)(typescript@5.1.6) eslint: 8.46.0 - eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.0)(eslint@8.46.0) - eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.2.1)(eslint@8.46.0) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.0)(eslint@8.46.0) + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.46.0) eslint-plugin-react: 7.33.1(eslint@8.46.0) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.46.0) @@ -2423,17 +2358,17 @@ packages: - supports-color dev: true - /eslint-import-resolver-node@0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 - is-core-module: 2.12.1 - resolve: 1.22.2 + is-core-module: 2.13.0 + resolve: 1.22.4 transitivePeerDependencies: - supports-color dev: true - /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.0)(eslint@8.46.0): + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.0)(eslint@8.46.0): resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -2443,11 +2378,11 @@ packages: debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.46.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) - eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.2.1)(eslint@8.46.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) get-tsconfig: 4.6.2 globby: 13.2.2 - is-core-module: 2.12.1 + is-core-module: 2.13.0 is-glob: 4.0.3 synckit: 0.8.5 transitivePeerDependencies: @@ -2457,7 +2392,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -2478,45 +2413,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.3.0(eslint@8.46.0)(typescript@5.1.6) debug: 3.2.7 eslint: 8.46.0 - eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.0)(eslint@8.46.0) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.0)(eslint@8.46.0) transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-node@0.3.7)(eslint@8.46.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 6.2.1(eslint@8.46.0)(typescript@5.1.6) - debug: 3.2.7 - eslint: 8.46.0 - eslint-import-resolver-node: 0.3.7 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.2.1)(eslint@8.46.0): + /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0): resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} engines: {node: '>=4'} peerDependencies: @@ -2526,7 +2432,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.2.1(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.3.0(eslint@8.46.0)(typescript@5.1.6) array-includes: 3.1.6 array.prototype.findlastindex: 1.2.2 array.prototype.flat: 1.3.1 @@ -2534,16 +2440,16 @@ packages: debug: 3.2.7 doctrine: 2.1.0 eslint: 8.46.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-node@0.3.7)(eslint@8.46.0) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) has: 1.0.3 - is-core-module: 2.12.1 + is-core-module: 2.13.0 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.6 object.groupby: 1.0.0 object.values: 1.1.6 - resolve: 1.22.3 + resolve: 1.22.4 semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: @@ -2558,7 +2464,7 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.22.10 aria-query: 5.3.0 array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 @@ -3352,8 +3258,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: has: 1.0.3 @@ -3854,8 +3760,8 @@ packages: engines: {node: '>= 0.6'} dev: false - /next-auth@4.22.3(next@13.4.12)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-XAgy9xV3J2eJOXrQhmxdjV6MLM29ibm6WtMXc3KY6IPZeApf+SuBuPvlqCUfbu5YsAzlg9WSw6u01dChTfeZOA==} + /next-auth@4.22.5(next@13.4.13)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-zPVEpqDp4cx1y0HbonCSrz2sA4qw0grTMd/S0PezUKXvDzmVemtsJnfNK/xo5pO2sz5ilM541+EVCTp9QoRLbA==} peerDependencies: next: ^12.2.5 || ^13 nodemailer: ^6.6.5 @@ -3865,11 +3771,11 @@ packages: nodemailer: optional: true dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.22.10 '@panva/hkdf': 1.1.1 cookie: 0.5.0 jose: 4.14.4 - next: 13.4.12(react-dom@18.2.0)(react@18.2.0) + next: 13.4.13(react-dom@18.2.0)(react@18.2.0) oauth: 0.9.15 openid-client: 5.4.3 preact: 10.16.0 @@ -3879,25 +3785,22 @@ packages: uuid: 8.3.2 dev: false - /next@13.4.12(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==} + /next@13.4.13(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-A3YVbVDNeXLhWsZ8Nf6IkxmNlmTNz0yVg186NJ97tGZqPDdPzTrHotJ+A1cuJm2XfuWPrKOUZILl5iBQkIf8Jw==} engines: {node: '>=16.8.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - fibers: '>= 3.1.0' react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true - fibers: - optional: true sass: optional: true dependencies: - '@next/env': 13.4.12 + '@next/env': 13.4.13 '@swc/helpers': 0.5.1 busboy: 1.6.0 caniuse-lite: 1.0.30001519 @@ -3908,27 +3811,27 @@ packages: watchpack: 2.4.0 zod: 3.21.4 optionalDependencies: - '@next/swc-darwin-arm64': 13.4.12 - '@next/swc-darwin-x64': 13.4.12 - '@next/swc-linux-arm64-gnu': 13.4.12 - '@next/swc-linux-arm64-musl': 13.4.12 - '@next/swc-linux-x64-gnu': 13.4.12 - '@next/swc-linux-x64-musl': 13.4.12 - '@next/swc-win32-arm64-msvc': 13.4.12 - '@next/swc-win32-ia32-msvc': 13.4.12 - '@next/swc-win32-x64-msvc': 13.4.12 + '@next/swc-darwin-arm64': 13.4.13 + '@next/swc-darwin-x64': 13.4.13 + '@next/swc-linux-arm64-gnu': 13.4.13 + '@next/swc-linux-arm64-musl': 13.4.13 + '@next/swc-linux-x64-gnu': 13.4.13 + '@next/swc-linux-x64-musl': 13.4.13 + '@next/swc-win32-arm64-msvc': 13.4.13 + '@next/swc-win32-ia32-msvc': 13.4.13 + '@next/swc-win32-x64-msvc': 13.4.13 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros dev: false - /nextjs-cors@2.1.2(next@13.4.12): + /nextjs-cors@2.1.2(next@13.4.13): resolution: {integrity: sha512-2yOVivaaf2ILe4f/qY32hnj3oC77VCOsUQJQfhVMGsXE/YMEWUY2zy78sH9FKUCM7eG42/l3pDofIzMD781XGA==} peerDependencies: next: ^8.1.1-canary.54 || ^9.0.0 || ^10.0.0-0 || ^11.0.0 || ^12.0.0 || ^13.0.0 dependencies: cors: 2.8.5 - next: 13.4.12(react-dom@18.2.0)(react@18.2.0) + next: 13.4.13(react-dom@18.2.0)(react@18.2.0) dev: false /node-abi@3.45.0: @@ -3986,7 +3889,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.2 + resolve: 1.22.4 semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: false @@ -4222,7 +4125,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.5 + '@babel/code-frame': 7.22.10 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -4309,7 +4212,7 @@ packages: postcss: 8.4.21 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.2 + resolve: 1.22.4 dev: false /postcss-import@15.1.0(postcss@8.4.27): @@ -4321,7 +4224,7 @@ packages: postcss: 8.4.27 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.2 + resolve: 1.22.4 dev: true /postcss-js@4.0.1(postcss@8.4.21): @@ -4712,11 +4615,11 @@ packages: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.2 + resolve: 1.22.4 dev: false - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} @@ -4750,28 +4653,19 @@ packages: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + /resolve@1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@1.22.3: - resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==} - hasBin: true - dependencies: - is-core-module: 2.12.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /resolve@2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -4999,8 +4893,8 @@ packages: engines: {node: '>=10.0.0'} dev: false - /streamx@2.15.0: - resolution: {integrity: sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==} + /streamx@2.15.1: + resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==} dependencies: fast-fifo: 1.3.0 queue-tick: 1.0.1 @@ -5189,7 +5083,7 @@ packages: postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 - resolve: 1.22.2 + resolve: 1.22.4 transitivePeerDependencies: - ts-node dev: false @@ -5219,7 +5113,7 @@ packages: postcss-load-config: 4.0.1(postcss@8.4.27) postcss-nested: 6.0.1(postcss@8.4.27) postcss-selector-parser: 6.0.13 - resolve: 1.22.2 + resolve: 1.22.4 sucrase: 3.34.0 transitivePeerDependencies: - ts-node @@ -5263,7 +5157,7 @@ packages: dependencies: b4a: 1.6.4 fast-fifo: 1.3.0 - streamx: 2.15.0 + streamx: 2.15.1 dev: false /text-table@0.2.0: @@ -5358,23 +5252,9 @@ packages: strip-bom: 3.0.0 dev: true - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true - /tslib@2.6.1: resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} - /tsutils@3.21.0(typescript@5.1.6): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.1.6 - dev: true - /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: diff --git a/src/pages/room/[id].tsx b/src/pages/room/[id].tsx index d91a065..7088ba3 100644 --- a/src/pages/room/[id].tsx +++ b/src/pages/room/[id].tsx @@ -2,6 +2,7 @@ import { type GetServerSideProps, type NextPage } from "next"; import Head from "next/head"; import Image from "next/image"; import { useEffect, useState } from "react"; +import { EventType, EventTypes } from "~/utils/types"; import { useSession } from "next-auth/react"; import { useRouter } from "next/router"; @@ -95,10 +96,10 @@ const RoomBody: React.FC = ({}) => { channelName: `${env.NEXT_PUBLIC_APP_ENV}-${roomId}`, }, ({ name }) => { - if (name === "ROOM_UPDATE") { + if (name === EventTypes.ROOM_UPDATE) { void refetchVotesFromDb(); void refetchRoomFromDb(); - } else if (name === "VOTE_UPDATE") { + } else if (name === EventTypes.VOTE_UPDATE) { void refetchVotesFromDb(); } } @@ -115,17 +116,6 @@ const RoomBody: React.FC = ({}) => { } ); - // Subscribe on mount and unsubscribe on unmount - useEffect(() => { - window.addEventListener("beforeunload", () => channel.presence.leave()); - return () => { - window.removeEventListener("beforeunload", () => - channel.presence.leave() - ); - channel.presence.leave(); - }; - }, [channel.presence, roomId]); - // Init story name useEffect(() => { if (sessionData && roomFromDb) { diff --git a/src/server/api/routers/room.ts b/src/server/api/routers/room.ts index 05c477e..154d5a2 100644 --- a/src/server/api/routers/room.ts +++ b/src/server/api/routers/room.ts @@ -7,6 +7,7 @@ import { } from "~/server/api/trpc"; import { fetchCache, invalidateCache, setCache } from "~/server/redis"; +import { EventTypes } from "~/utils/types"; export const roomRouter = createTRPCRouter({ // Create @@ -33,8 +34,8 @@ export const roomRouter = createTRPCRouter({ await publishToChannel( `${ctx.session.user.id}`, - "ROOM_LIST_UPDATE", - "CREATE" + EventTypes.ROOM_LIST_UPDATE, + JSON.stringify(room) ); } // happy path @@ -205,7 +206,11 @@ export const roomRouter = createTRPCRouter({ }); if (newRoom) { - await publishToChannel(`${newRoom.id}`, "ROOM_UPDATE", "UPDATE"); + await publishToChannel( + `${newRoom.id}`, + EventTypes.ROOM_UPDATE, + JSON.stringify(newRoom) + ); } return !!newRoom; @@ -228,11 +233,15 @@ export const roomRouter = createTRPCRouter({ await publishToChannel( `${ctx.session.user.id}`, - "ROOM_LIST_UPDATE", - "DELETE" + EventTypes.ROOM_LIST_UPDATE, + JSON.stringify(deletedRoom) ); - await publishToChannel(`${deletedRoom.id}`, "ROOM_UPDATE", "DELETE"); + await publishToChannel( + `${deletedRoom.id}`, + EventTypes.ROOM_UPDATE, + JSON.stringify(deletedRoom) + ); } return !!deletedRoom; diff --git a/src/server/api/routers/vote.ts b/src/server/api/routers/vote.ts index 7ac337f..b4b9f53 100644 --- a/src/server/api/routers/vote.ts +++ b/src/server/api/routers/vote.ts @@ -8,6 +8,7 @@ import { protectedProcedure, } from "~/server/api/trpc"; import { fetchCache, invalidateCache, setCache } from "~/server/redis"; +import { EventTypes } from "~/utils/types"; export const voteRouter = createTRPCRouter({ countAll: adminProcedure.query(async ({ ctx }) => { @@ -104,7 +105,11 @@ export const voteRouter = createTRPCRouter({ await invalidateCache(`kv_votecount_admin`); await invalidateCache(`kv_votes_${input.roomId}`); - await publishToChannel(`${vote.roomId}`, "VOTE_UPDATE", "UPDATE"); + await publishToChannel( + `${vote.roomId}`, + EventTypes.VOTE_UPDATE, + input.value + ); } return !!vote; diff --git a/src/utils/types.ts b/src/utils/types.ts index 53579c5..ca0f2d1 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -1,9 +1,9 @@ type BetterEnum = T[keyof T]; -const EventTypes = { - ROOM_LIST_UPDATE: "ROOM_LIST_UPDATE", - ROOM_UPDATE: "ROOM_UPDATE", - VOTE_UPDATE: "VOTE_UPDATE", +export const EventTypes = { + ROOM_LIST_UPDATE: "room.list.update", + ROOM_UPDATE: "room.update", + VOTE_UPDATE: "vote.update", } as const; export type EventType = BetterEnum; From fdb7640a60c7c167452b2ba1dc55a81fe89ddeb3 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Tue, 8 Aug 2023 12:12:40 -0600 Subject: [PATCH 2/6] REST Endpoints get their own tRPC router --- src/server/api/root.ts | 4 ++-- src/server/api/routers/{hook.ts => rest.ts} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/server/api/routers/{hook.ts => rest.ts} (93%) diff --git a/src/server/api/root.ts b/src/server/api/root.ts index 9f41918..7d5426a 100644 --- a/src/server/api/root.ts +++ b/src/server/api/root.ts @@ -3,7 +3,7 @@ import { createTRPCRouter } from "~/server/api/trpc"; import { sessionRouter } from "./routers/session"; import { userRouter } from "./routers/user"; import { voteRouter } from "./routers/vote"; -import { hookRouter } from "./routers/hook"; +import { restRouter } from "./routers/rest"; /** * This is the primary router for your server. @@ -15,7 +15,7 @@ export const appRouter = createTRPCRouter({ vote: voteRouter, user: userRouter, session: sessionRouter, - hook: hookRouter, + rest: restRouter, }); // export type definition of API diff --git a/src/server/api/routers/hook.ts b/src/server/api/routers/rest.ts similarity index 93% rename from src/server/api/routers/hook.ts rename to src/server/api/routers/rest.ts index 3fabe57..3c4e448 100644 --- a/src/server/api/routers/hook.ts +++ b/src/server/api/routers/rest.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { createTRPCRouter, publicProcedure } from "~/server/api/trpc"; import { TRPCError } from "@trpc/server"; -export const hookRouter = createTRPCRouter({ +export const restRouter = createTRPCRouter({ dbWarmer: publicProcedure .meta({ openapi: { method: "POST", path: "/rest/dbwarmer" } }) .input(z.object({ key: z.string() })) From fc8a90ffc44de4c2d0ede2e250fd1f80c84b43cd Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Tue, 8 Aug 2023 12:28:47 -0600 Subject: [PATCH 3/6] lint --- src/pages/room/[id].tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/room/[id].tsx b/src/pages/room/[id].tsx index 7088ba3..7fc02b5 100644 --- a/src/pages/room/[id].tsx +++ b/src/pages/room/[id].tsx @@ -2,7 +2,7 @@ import { type GetServerSideProps, type NextPage } from "next"; import Head from "next/head"; import Image from "next/image"; import { useEffect, useState } from "react"; -import { EventType, EventTypes } from "~/utils/types"; +import { EventTypes } from "~/utils/types"; import { useSession } from "next-auth/react"; import { useRouter } from "next/router"; @@ -91,7 +91,7 @@ const RoomBody: React.FC = ({}) => { }, }); - const [channel] = useChannel( + useChannel( { channelName: `${env.NEXT_PUBLIC_APP_ENV}-${roomId}`, }, From aa5485d8fd8e5f240e49985ac57fea955f338fae Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Tue, 8 Aug 2023 12:39:06 -0600 Subject: [PATCH 4/6] :| --- src/pages/room/[id].tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/pages/room/[id].tsx b/src/pages/room/[id].tsx index 7fc02b5..7243cd3 100644 --- a/src/pages/room/[id].tsx +++ b/src/pages/room/[id].tsx @@ -91,7 +91,7 @@ const RoomBody: React.FC = ({}) => { }, }); - useChannel( + const [channel] = useChannel( { channelName: `${env.NEXT_PUBLIC_APP_ENV}-${roomId}`, }, @@ -116,6 +116,17 @@ const RoomBody: React.FC = ({}) => { } ); + // Subscribe on mount and unsubscribe on unmount + useEffect(() => { + window.addEventListener("beforeunload", () => channel.presence.leave()); + return () => { + window.removeEventListener("beforeunload", () => + channel.presence.leave() + ); + channel.presence.leave(); + }; + }, [channel.presence, roomId]); + // Init story name useEffect(() => { if (sessionData && roomFromDb) { From 369c352390f12b7ac99c81dc42c9154a9acb814f Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Tue, 8 Aug 2023 12:59:02 -0600 Subject: [PATCH 5/6] new rest endpoints --- pnpm-lock.yaml | 6 ++-- src/pages/admin/index.tsx | 6 ++-- src/server/api/routers/rest.ts | 55 ++++++++++++++++++++++++++++++++++ src/server/api/routers/room.ts | 14 --------- src/server/api/routers/user.ts | 14 --------- src/server/api/routers/vote.ts | 13 -------- 6 files changed, 61 insertions(+), 47 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7c9872b..65320f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1653,7 +1653,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001519 - electron-to-chromium: 1.4.487 + electron-to-chromium: 1.4.488 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) dev: false @@ -2186,8 +2186,8 @@ packages: semver: 7.5.4 dev: false - /electron-to-chromium@1.4.487: - resolution: {integrity: sha512-XbCRs/34l31np/p33m+5tdBrdXu9jJkZxSbNxj5I0H1KtV2ZMSB+i/HYqDiRzHaFx2T5EdytjoBRe8QRJE2vQg==} + /electron-to-chromium@1.4.488: + resolution: {integrity: sha512-Dv4sTjiW7t/UWGL+H8ZkgIjtUAVZDgb/PwGWvMsCT7jipzUV/u5skbLXPFKb6iV0tiddVi/bcS2/kUrczeWgIQ==} dev: false /emoji-regex@9.2.2: diff --git a/src/pages/admin/index.tsx b/src/pages/admin/index.tsx index 9d9a86f..3e4037e 100644 --- a/src/pages/admin/index.tsx +++ b/src/pages/admin/index.tsx @@ -61,7 +61,7 @@ const AdminBody: React.FC = () => { isLoading: usersCountLoading, isFetching: usersCountFetching, refetch: refetchUsersCount, - } = api.user.countAll.useQuery(); + } = api.rest.userCount.useQuery(); const { data: users, isLoading: usersLoading, @@ -73,13 +73,13 @@ const AdminBody: React.FC = () => { isLoading: roomsCountLoading, isFetching: roomsCountFetching, refetch: refetchRoomsCount, - } = api.room.countAll.useQuery(); + } = api.rest.roomCount.useQuery(); const { data: votesCount, isLoading: votesCountLoading, isFetching: votesCountFetching, refetch: refetchVotesCount, - } = api.vote.countAll.useQuery(); + } = api.rest.voteCount.useQuery(); const getProviders = (user: { createdAt: Date; diff --git a/src/server/api/routers/rest.ts b/src/server/api/routers/rest.ts index 3c4e448..7a6a356 100644 --- a/src/server/api/routers/rest.ts +++ b/src/server/api/routers/rest.ts @@ -3,6 +3,7 @@ import { z } from "zod"; import { createTRPCRouter, publicProcedure } from "~/server/api/trpc"; import { TRPCError } from "@trpc/server"; +import { fetchCache, setCache } from "~/server/redis"; export const restRouter = createTRPCRouter({ dbWarmer: publicProcedure @@ -18,4 +19,58 @@ export const restRouter = createTRPCRouter({ throw new TRPCError({ code: "UNAUTHORIZED" }); } }), + + voteCount: publicProcedure + .meta({ openapi: { method: "GET", path: "/rest/votes/count" } }) + .input(z.void()) + .output(z.number()) + .query(async ({ ctx }) => { + const cachedResult = await fetchCache(`kv_votecount_admin`); + + if (cachedResult) { + return cachedResult; + } else { + const votesCount = await ctx.prisma.vote.count(); + + await setCache(`kv_votecount_admin`, votesCount); + + return votesCount; + } + }), + + userCount: publicProcedure + .meta({ openapi: { method: "GET", path: "/rest/users/count" } }) + .input(z.void()) + .output(z.number()) + .query(async ({ ctx }) => { + const cachedResult = await fetchCache(`kv_usercount`); + + if (cachedResult) { + return cachedResult; + } else { + const usersCount = await ctx.prisma.user.count(); + + await setCache(`kv_usercount`, usersCount); + + return usersCount; + } + }), + + roomCount: publicProcedure + .meta({ openapi: { method: "GET", path: "/rest/rooms/count" } }) + .input(z.void()) + .output(z.number()) + .query(async ({ ctx }) => { + const cachedResult = await fetchCache(`kv_roomcount`); + + if (cachedResult) { + return cachedResult; + } else { + const roomsCount = await ctx.prisma.room.count(); + + await setCache(`kv_roomcount`, roomsCount); + + return roomsCount; + } + }), }); diff --git a/src/server/api/routers/room.ts b/src/server/api/routers/room.ts index 154d5a2..ee8b1c1 100644 --- a/src/server/api/routers/room.ts +++ b/src/server/api/routers/room.ts @@ -97,20 +97,6 @@ export const roomRouter = createTRPCRouter({ } }), - countAll: adminProcedure.query(async ({ ctx }) => { - const cachedResult = await fetchCache(`kv_roomcount_admin`); - - if (cachedResult) { - return cachedResult; - } else { - const roomsCount = await ctx.prisma.room.count(); - - await setCache(`kv_roomcount_admin`, roomsCount); - - return roomsCount; - } - }), - // Update One set: protectedProcedure .input( diff --git a/src/server/api/routers/user.ts b/src/server/api/routers/user.ts index ff355b0..7bf3d02 100644 --- a/src/server/api/routers/user.ts +++ b/src/server/api/routers/user.ts @@ -14,20 +14,6 @@ import { fetchCache, invalidateCache, setCache } from "~/server/redis"; const resend = new Resend(process.env.RESEND_API_KEY); export const userRouter = createTRPCRouter({ - countAll: adminProcedure.query(async ({ ctx }) => { - const cachedResult = await fetchCache(`kv_usercount_admin`); - - if (cachedResult) { - return cachedResult; - } else { - const usersCount = await ctx.prisma.user.count(); - - await setCache(`kv_usercount_admin`, usersCount); - - return usersCount; - } - }), - getProviders: protectedProcedure.query(async ({ ctx }) => { const providers = await ctx.prisma.user.findUnique({ where: { diff --git a/src/server/api/routers/vote.ts b/src/server/api/routers/vote.ts index b4b9f53..1dfe0ca 100644 --- a/src/server/api/routers/vote.ts +++ b/src/server/api/routers/vote.ts @@ -11,19 +11,6 @@ import { fetchCache, invalidateCache, setCache } from "~/server/redis"; import { EventTypes } from "~/utils/types"; export const voteRouter = createTRPCRouter({ - countAll: adminProcedure.query(async ({ ctx }) => { - const cachedResult = await fetchCache(`kv_votecount_admin`); - - if (cachedResult) { - return cachedResult; - } else { - const votesCount = await ctx.prisma.vote.count(); - - await setCache(`kv_votecount_admin`, votesCount); - - return votesCount; - } - }), getAllByRoomId: protectedProcedure .input(z.object({ roomId: z.string() })) .query(async ({ ctx, input }) => { From 1c86864b8dc8611daab0ebe44d1fd8e74a7cb6b6 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Tue, 8 Aug 2023 17:23:39 -0600 Subject: [PATCH 6/6] 1.2.6 --- package.json | 4 ++-- pnpm-lock.yaml | 16 ++++++++-------- src/server/api/routers/room.ts | 6 +----- src/server/api/routers/vote.ts | 6 +----- 4 files changed, 12 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 8b20c79..7143ab3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sprintpadawan", - "version": "1.2.5", + "version": "1.2.6", "description": "Plan. Sprint. Repeat.", "private": true, "scripts": { @@ -44,7 +44,7 @@ "devDependencies": { "@types/eslint": "^8.44.2", "@types/json2csv": "^5.0.3", - "@types/node": "^20.4.8", + "@types/node": "^20.4.9", "@types/react": "^18.2.19", "@typescript-eslint/eslint-plugin": "^6.3.0", "@typescript-eslint/parser": "^6.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 65320f6..86e28d7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -98,8 +98,8 @@ devDependencies: specifier: ^5.0.3 version: 5.0.3 '@types/node': - specifier: ^20.4.8 - version: 20.4.8 + specifier: ^20.4.9 + version: 20.4.9 '@types/react': specifier: ^18.2.19 version: 18.2.19 @@ -1089,7 +1089,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 20.4.8 + '@types/node': 20.4.9 '@types/responselike': 1.0.0 dev: false @@ -1115,7 +1115,7 @@ packages: /@types/json2csv@5.0.3: resolution: {integrity: sha512-ZJEv6SzhPhgpBpxZU4n/TZekbZqI4EcyXXRwms1lAITG2kIAtj85PfNYafUOY1zy8bWs5ujaub0GU4copaA0sw==} dependencies: - '@types/node': 20.4.8 + '@types/node': 20.4.9 dev: true /@types/json5@0.0.29: @@ -1125,15 +1125,15 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.4.8 + '@types/node': 20.4.9 dev: false /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: false - /@types/node@20.4.8: - resolution: {integrity: sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==} + /@types/node@20.4.9: + resolution: {integrity: sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==} /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -1154,7 +1154,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 20.4.8 + '@types/node': 20.4.9 dev: false /@types/scheduler@0.16.3: diff --git a/src/server/api/routers/room.ts b/src/server/api/routers/room.ts index ee8b1c1..55cb39e 100644 --- a/src/server/api/routers/room.ts +++ b/src/server/api/routers/room.ts @@ -1,10 +1,6 @@ import { z } from "zod"; import { publishToChannel } from "~/server/ably"; -import { - createTRPCRouter, - protectedProcedure, - adminProcedure, -} from "~/server/api/trpc"; +import { createTRPCRouter, protectedProcedure } from "~/server/api/trpc"; import { fetchCache, invalidateCache, setCache } from "~/server/redis"; import { EventTypes } from "~/utils/types"; diff --git a/src/server/api/routers/vote.ts b/src/server/api/routers/vote.ts index 1dfe0ca..68f0100 100644 --- a/src/server/api/routers/vote.ts +++ b/src/server/api/routers/vote.ts @@ -2,11 +2,7 @@ import { z } from "zod"; import { publishToChannel } from "~/server/ably"; import type { Room } from "@prisma/client"; -import { - adminProcedure, - createTRPCRouter, - protectedProcedure, -} from "~/server/api/trpc"; +import { createTRPCRouter, protectedProcedure } from "~/server/api/trpc"; import { fetchCache, invalidateCache, setCache } from "~/server/redis"; import { EventTypes } from "~/utils/types";