Updated to using fms-ts for email

This commit is contained in:
Atridad Lahiji 2023-05-20 21:00:51 -06:00
parent 4e4997d5d5
commit 77bf97c234
No known key found for this signature in database
5 changed files with 174 additions and 272 deletions

View file

@ -16,18 +16,19 @@
"@prisma/client": "4.14.1", "@prisma/client": "4.14.1",
"@tailwindcss/typography": "^0.5.9", "@tailwindcss/typography": "^0.5.9",
"@tanstack/react-query": "^4.29.7", "@tanstack/react-query": "^4.29.7",
"@trpc/client": "10.26.0", "@trpc/client": "10.27.1",
"@trpc/next": "10.26.0", "@trpc/next": "10.27.1",
"@trpc/react-query": "10.26.0", "@trpc/react-query": "10.27.1",
"@trpc/server": "10.26.0", "@trpc/server": "10.27.1",
"@types/json2csv": "^5.0.3", "@types/json2csv": "^5.0.3",
"@types/next-pwa": "^5.6.2", "@types/next-pwa": "^5.6.2",
"ably": "^1.2.39", "ably": "^1.2.39",
"autoprefixer": "^10.4.14", "autoprefixer": "^10.4.14",
"daisyui": "^2.51.6", "daisyui": "^2.51.6",
"fms-ts": "^0.1.6",
"ioredis": "^5.3.2", "ioredis": "^5.3.2",
"json2csv": "6.0.0-alpha.2", "json2csv": "6.0.0-alpha.2",
"next": "^13.4.2", "next": "^13.4.3",
"next-auth": "^4.22.1", "next-auth": "^4.22.1",
"next-pwa": "^5.6.0", "next-pwa": "^5.6.0",
"postcss": "^8.4.23", "postcss": "^8.4.23",
@ -45,8 +46,8 @@
"@types/react-dom": "^18.2.4", "@types/react-dom": "^18.2.4",
"@typescript-eslint/eslint-plugin": "^5.59.6", "@typescript-eslint/eslint-plugin": "^5.59.6",
"@typescript-eslint/parser": "^5.59.6", "@typescript-eslint/parser": "^5.59.6",
"eslint": "^8.40.0", "eslint": "^8.41.0",
"eslint-config-next": "^13.4.2", "eslint-config-next": "^13.4.3",
"prisma": "4.14.1", "prisma": "4.14.1",
"typescript": "^5.0.4" "typescript": "^5.0.4"
}, },

292
pnpm-lock.yaml generated
View file

@ -17,17 +17,17 @@ dependencies:
specifier: ^4.29.7 specifier: ^4.29.7
version: 4.29.7(react-dom@18.2.0)(react@18.2.0) version: 4.29.7(react-dom@18.2.0)(react@18.2.0)
'@trpc/client': '@trpc/client':
specifier: 10.26.0 specifier: 10.27.1
version: 10.26.0(@trpc/server@10.26.0) version: 10.27.1(@trpc/server@10.27.1)
'@trpc/next': '@trpc/next':
specifier: 10.26.0 specifier: 10.27.1
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.2)(react-dom@18.2.0)(react@18.2.0) version: 10.27.1(@tanstack/react-query@4.29.7)(@trpc/client@10.27.1)(@trpc/react-query@10.27.1)(@trpc/server@10.27.1)(next@13.4.3)(react-dom@18.2.0)(react@18.2.0)
'@trpc/react-query': '@trpc/react-query':
specifier: 10.26.0 specifier: 10.27.1
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) version: 10.27.1(@tanstack/react-query@4.29.7)(@trpc/client@10.27.1)(@trpc/server@10.27.1)(react-dom@18.2.0)(react@18.2.0)
'@trpc/server': '@trpc/server':
specifier: 10.26.0 specifier: 10.27.1
version: 10.26.0 version: 10.27.1
'@types/json2csv': '@types/json2csv':
specifier: ^5.0.3 specifier: ^5.0.3
version: 5.0.3 version: 5.0.3
@ -43,6 +43,9 @@ dependencies:
daisyui: daisyui:
specifier: ^2.51.6 specifier: ^2.51.6
version: 2.51.6(autoprefixer@10.4.14)(postcss@8.4.23) version: 2.51.6(autoprefixer@10.4.14)(postcss@8.4.23)
fms-ts:
specifier: ^0.1.6
version: 0.1.6
ioredis: ioredis:
specifier: ^5.3.2 specifier: ^5.3.2
version: 5.3.2 version: 5.3.2
@ -50,14 +53,14 @@ dependencies:
specifier: 6.0.0-alpha.2 specifier: 6.0.0-alpha.2
version: 6.0.0-alpha.2 version: 6.0.0-alpha.2
next: next:
specifier: ^13.4.2 specifier: ^13.4.3
version: 13.4.2(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0) version: 13.4.3(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0)
next-auth: next-auth:
specifier: ^4.22.1 specifier: ^4.22.1
version: 4.22.1(next@13.4.2)(react-dom@18.2.0)(react@18.2.0) version: 4.22.1(next@13.4.3)(react-dom@18.2.0)(react@18.2.0)
next-pwa: next-pwa:
specifier: ^5.6.0 specifier: ^5.6.0
version: 5.6.0(@babel/core@7.21.8)(next@13.4.2)(webpack@5.83.1) version: 5.6.0(@babel/core@7.21.8)(next@13.4.3)(webpack@5.83.1)
postcss: postcss:
specifier: ^8.4.23 specifier: ^8.4.23
version: 8.4.23 version: 8.4.23
@ -95,16 +98,16 @@ devDependencies:
version: 18.2.4 version: 18.2.4
'@typescript-eslint/eslint-plugin': '@typescript-eslint/eslint-plugin':
specifier: ^5.59.6 specifier: ^5.59.6
version: 5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.40.0)(typescript@5.0.4) version: 5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4)
'@typescript-eslint/parser': '@typescript-eslint/parser':
specifier: ^5.59.6 specifier: ^5.59.6
version: 5.59.6(eslint@8.40.0)(typescript@5.0.4) version: 5.59.6(eslint@8.41.0)(typescript@5.0.4)
eslint: eslint:
specifier: ^8.40.0 specifier: ^8.41.0
version: 8.40.0 version: 8.41.0
eslint-config-next: eslint-config-next:
specifier: ^13.4.2 specifier: ^13.4.3
version: 13.4.2(eslint@8.40.0)(typescript@5.0.4) version: 13.4.3(eslint@8.41.0)(typescript@5.0.4)
prisma: prisma:
specifier: 4.14.1 specifier: 4.14.1
version: 4.14.1 version: 4.14.1
@ -1308,13 +1311,13 @@ packages:
to-fast-properties: 2.0.0 to-fast-properties: 2.0.0
dev: false dev: false
/@eslint-community/eslint-utils@4.4.0(eslint@8.40.0): /@eslint-community/eslint-utils@4.4.0(eslint@8.41.0):
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies: dependencies:
eslint: 8.40.0 eslint: 8.41.0
eslint-visitor-keys: 3.4.1 eslint-visitor-keys: 3.4.1
dev: true dev: true
@ -1340,8 +1343,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@eslint/js@8.40.0: /@eslint/js@8.41.0:
resolution: {integrity: sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==} resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true dev: true
@ -1417,21 +1420,21 @@ packages:
next-auth: ^4 next-auth: ^4
dependencies: dependencies:
'@prisma/client': 4.14.1(prisma@4.14.1) '@prisma/client': 4.14.1(prisma@4.14.1)
next-auth: 4.22.1(next@13.4.2)(react-dom@18.2.0)(react@18.2.0) next-auth: 4.22.1(next@13.4.3)(react-dom@18.2.0)(react@18.2.0)
dev: false dev: false
/@next/env@13.4.2: /@next/env@13.4.3:
resolution: {integrity: sha512-Wqvo7lDeS0KGwtwg9TT9wKQ8raelmUxt+TQKWvG/xKfcmDXNOtCuaszcfCF8JzlBG1q0VhpI6CKaRMbVPMDWgw==} resolution: {integrity: sha512-pa1ErjyFensznttAk3EIv77vFbfSYT6cLzVRK5jx4uiRuCQo+m2wCFAREaHKIy63dlgvOyMlzh6R8Inu8H3KrQ==}
dev: false dev: false
/@next/eslint-plugin-next@13.4.2: /@next/eslint-plugin-next@13.4.3:
resolution: {integrity: sha512-ZeFWgrxwckxTpYM+ANeUL9E7LOGPbZKmI94LJIjbDU69iEIgqd4WD0l2pVbOJMr/+vgoZmJ9Dx1m0WJ7WScXHA==} resolution: {integrity: sha512-5B0uOnh7wyUY9vNNdIA6NUvWozhrZaTMZOzdirYAefqD0ZBK5C/h3+KMYdCKrR7JrXGvVpWnHtv54b3dCzwICA==}
dependencies: dependencies:
glob: 7.1.7 glob: 7.1.7
dev: true dev: true
/@next/swc-darwin-arm64@13.4.2: /@next/swc-darwin-arm64@13.4.3:
resolution: {integrity: sha512-6BBlqGu3ewgJflv9iLCwO1v1hqlecaIH2AotpKfVUEzUxuuDNJQZ2a4KLb4MBl8T9/vca1YuWhSqtbF6ZuUJJw==} resolution: {integrity: sha512-yx18udH/ZmR4Bw4M6lIIPE3JxsAZwo04iaucEfA2GMt1unXr2iodHUX/LAKNyi6xoLP2ghi0E+Xi1f4Qb8f1LQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@ -1439,8 +1442,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-darwin-x64@13.4.2: /@next/swc-darwin-x64@13.4.3:
resolution: {integrity: sha512-iZuYr7ZvGLPjPmfhhMl0ISm+z8EiyLBC1bLyFwGBxkWmPXqdJ60mzuTaDSr5WezDwv0fz32HB7JHmRC6JVHSZg==} resolution: {integrity: sha512-Mi8xJWh2IOjryAM1mx18vwmal9eokJ2njY4nDh04scy37F0LEGJ/diL6JL6kTXi0UfUCGbMsOItf7vpReNiD2A==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@ -1448,8 +1451,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-arm64-gnu@13.4.2: /@next/swc-linux-arm64-gnu@13.4.3:
resolution: {integrity: sha512-2xVabFtIge6BJTcJrW8YuUnYTuQjh4jEuRuS2mscyNVOj6zUZkom3CQg+egKOoS+zh2rrro66ffSKIS+ztFJTg==} resolution: {integrity: sha512-aBvtry4bxJ1xwKZ/LVPeBGBwWVwxa4bTnNkRRw6YffJnn/f4Tv4EGDPaVeYHZGQVA56wsGbtA6nZMuWs/EIk4Q==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@ -1457,8 +1460,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-arm64-musl@13.4.2: /@next/swc-linux-arm64-musl@13.4.3:
resolution: {integrity: sha512-wKRCQ27xCUJx5d6IivfjYGq8oVngqIhlhSAJntgXLt7Uo9sRT/3EppMHqUZRfyuNBTbykEre1s5166z+pvRB5A==} resolution: {integrity: sha512-krT+2G3kEsEUvZoYte3/2IscscDraYPc2B+fDJFipPktJmrv088Pei/RjrhWm5TMIy5URYjZUoDZdh5k940Dyw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@ -1466,8 +1469,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-x64-gnu@13.4.2: /@next/swc-linux-x64-gnu@13.4.3:
resolution: {integrity: sha512-NpCa+UVhhuNeaFVUP1Bftm0uqtvLWq2JTm7+Ta48+2Uqj2mNXrDIvyn1DY/ZEfmW/1yvGBRaUAv9zkMkMRixQA==} resolution: {integrity: sha512-AMdFX6EKJjC0G/CM6hJvkY8wUjCcbdj3Qg7uAQJ7PVejRWaVt0sDTMavbRfgMchx8h8KsAudUCtdFkG9hlEClw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -1475,8 +1478,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-x64-musl@13.4.2: /@next/swc-linux-x64-musl@13.4.3:
resolution: {integrity: sha512-ZWVC72x0lW4aj44e3khvBrj2oSYj1bD0jESmyah3zG/3DplEy/FOtYkMzbMjHTdDSheso7zH8GIlW6CDQnKhmQ==} resolution: {integrity: sha512-jySgSXE48shaLtcQbiFO9ajE9mqz7pcAVLnVLvRIlUHyQYR/WyZdK8ehLs65Mz6j9cLrJM+YdmdJPyV4WDaz2g==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -1484,8 +1487,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-win32-arm64-msvc@13.4.2: /@next/swc-win32-arm64-msvc@13.4.3:
resolution: {integrity: sha512-pLT+OWYpzJig5K4VKhLttlIfBcVZfr2+Xbjra0Tjs83NQSkFS+y7xx+YhCwvpEmXYLIvaggj2ONPyjbiigOvHQ==} resolution: {integrity: sha512-5DxHo8uYcaADiE9pHrg8o28VMt/1kR8voDehmfs9AqS0qSClxAAl+CchjdboUvbCjdNWL1MISCvEfKY2InJ3JA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@ -1493,8 +1496,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-win32-ia32-msvc@13.4.2: /@next/swc-win32-ia32-msvc@13.4.3:
resolution: {integrity: sha512-dhpiksQCyGca4WY0fJyzK3FxMDFoqMb0Cn+uDB+9GYjpU2K5//UGPQlCwiK4JHxuhg8oLMag5Nf3/IPSJNG8jw==} resolution: {integrity: sha512-LaqkF3d+GXRA5X6zrUjQUrXm2MN/3E2arXBtn5C7avBCNYfm9G3Xc646AmmmpN3DJZVaMYliMyCIQCMDEzk80w==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
@ -1502,8 +1505,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-win32-x64-msvc@13.4.2: /@next/swc-win32-x64-msvc@13.4.3:
resolution: {integrity: sha512-O7bort1Vld00cu8g0jHZq3cbSTUNMohOEvYqsqE10+yfohhdPHzvzO+ziJRz4Dyyr/fYKREwS7gR4JC0soSOMw==} resolution: {integrity: sha512-jglUk/x7ZWeOJWlVoKyIAkHLTI+qEkOriOOV+3hr1GyiywzcqfI7TpFSiwC7kk1scOiH7NTFKp8mA3XPNO9bDw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -1690,53 +1693,53 @@ packages:
use-sync-external-store: 1.2.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0)
dev: false dev: false
/@trpc/client@10.26.0(@trpc/server@10.26.0): /@trpc/client@10.27.1(@trpc/server@10.27.1):
resolution: {integrity: sha512-ojHxQFIE97rBEGPK8p1ijbzo0T1IdEBoJ9fFSgWWL9FMuEEA/DNQ9s0uuiOrDKhCCdTFT1unfRharoJhB2/O2w==} resolution: {integrity: sha512-e9Syj6F41OHDSUg3JvT67fgoD22UbxPzYgp9Bno13NFpyeJc6vkXRlAgDc8ZuouqUPQuouJWll/I90CsuxEqvA==}
peerDependencies: peerDependencies:
'@trpc/server': 10.26.0 '@trpc/server': 10.27.1
dependencies: dependencies:
'@trpc/server': 10.26.0 '@trpc/server': 10.27.1
dev: false dev: false
/@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.2)(react-dom@18.2.0)(react@18.2.0): /@trpc/next@10.27.1(@tanstack/react-query@4.29.7)(@trpc/client@10.27.1)(@trpc/react-query@10.27.1)(@trpc/server@10.27.1)(next@13.4.3)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-p328crXBH6C228LKxjqbpDEXdLmy4+LdgsZuYK3oFMqaJEmCT22b+zcQ9IvQrcPfDxhKOpJym0QpuDNaWpG2qg==} resolution: {integrity: sha512-3aMGjhJXiJOj/tjqkyMot3x/nbxbHeEcCWjgYiCHmiXVk9h9liIG73f2is8jWEPs3o/eJ+eNwNSzkfhrhIWq2g==}
peerDependencies: peerDependencies:
'@tanstack/react-query': ^4.18.0 '@tanstack/react-query': ^4.18.0
'@trpc/client': 10.26.0 '@trpc/client': 10.27.1
'@trpc/react-query': 10.26.0 '@trpc/react-query': 10.27.1
'@trpc/server': 10.26.0 '@trpc/server': 10.27.1
next: '*' next: '*'
react: '>=16.8.0' react: '>=16.8.0'
react-dom: '>=16.8.0' react-dom: '>=16.8.0'
dependencies: dependencies:
'@tanstack/react-query': 4.29.7(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': 4.29.7(react-dom@18.2.0)(react@18.2.0)
'@trpc/client': 10.26.0(@trpc/server@10.26.0) '@trpc/client': 10.27.1(@trpc/server@10.27.1)
'@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/react-query': 10.27.1(@tanstack/react-query@4.29.7)(@trpc/client@10.27.1)(@trpc/server@10.27.1)(react-dom@18.2.0)(react@18.2.0)
'@trpc/server': 10.26.0 '@trpc/server': 10.27.1
next: 13.4.2(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0) next: 13.4.3(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0 react: 18.2.0
react-dom: 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) react-ssr-prepass: 1.5.0(react@18.2.0)
dev: false dev: false
/@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/react-query@10.27.1(@tanstack/react-query@4.29.7)(@trpc/client@10.27.1)(@trpc/server@10.27.1)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-n+enpalaCZhd3A/mbZmXeydRZHsAJo7mzc2ncgHn5S+C3SrfOM897uQdbHdj02Li25ULxzP1O92w+vZzmFbgkA==} resolution: {integrity: sha512-6Q6B5cGKvxnmy/B5VsOjOG4sBl19VJJrGloFp93jc3Hq3+EfniOssdoA81VLI3fInif8ns0Z4jgWUIpq8741cA==}
peerDependencies: peerDependencies:
'@tanstack/react-query': ^4.18.0 '@tanstack/react-query': ^4.18.0
'@trpc/client': 10.26.0 '@trpc/client': 10.27.1
'@trpc/server': 10.26.0 '@trpc/server': 10.27.1
react: '>=16.8.0' react: '>=16.8.0'
react-dom: '>=16.8.0' react-dom: '>=16.8.0'
dependencies: dependencies:
'@tanstack/react-query': 4.29.7(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': 4.29.7(react-dom@18.2.0)(react@18.2.0)
'@trpc/client': 10.26.0(@trpc/server@10.26.0) '@trpc/client': 10.27.1(@trpc/server@10.27.1)
'@trpc/server': 10.26.0 '@trpc/server': 10.27.1
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0)
dev: false dev: false
/@trpc/server@10.26.0: /@trpc/server@10.27.1:
resolution: {integrity: sha512-+Wt0NFAeflVSNiUnHIDNN3C8jP7XIRmYrcgJ6IsAnm0lK4p/FkpCpeu1aig5qxrgZx30PHNDLZ/3FttVSEW2aQ==} resolution: {integrity: sha512-oMTNpei0+CAet0BuDdBE9cup0SseJAOlWRhWhcTAU05rETsJnzCA5DfNkf+aP3XiAM8rMJfrTfC0Z3aeADhHaA==}
dev: false dev: false
/@types/cacheable-request@6.0.3: /@types/cacheable-request@6.0.3:
@ -1806,7 +1809,7 @@ packages:
resolution: {integrity: sha512-K5zLZSzrJCOQBay5E7abGp7gQ0q1Pv58dE3RuBo5LQXYQFaCO4JPju0XYdzgLoQ20yhBVZ43AwIcSgCzx9KvqA==} resolution: {integrity: sha512-K5zLZSzrJCOQBay5E7abGp7gQ0q1Pv58dE3RuBo5LQXYQFaCO4JPju0XYdzgLoQ20yhBVZ43AwIcSgCzx9KvqA==}
dependencies: dependencies:
'@types/react': 18.2.6 '@types/react': 18.2.6
next: 13.4.2(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0) next: 13.4.3(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0)
workbox-build: 6.5.4 workbox-build: 6.5.4
transitivePeerDependencies: transitivePeerDependencies:
- '@babel/core' - '@babel/core'
@ -1863,7 +1866,7 @@ packages:
resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==}
dev: false dev: false
/@typescript-eslint/eslint-plugin@5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.40.0)(typescript@5.0.4): /@typescript-eslint/eslint-plugin@5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4):
resolution: {integrity: sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==} resolution: {integrity: sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -1875,12 +1878,12 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@eslint-community/regexpp': 4.5.1 '@eslint-community/regexpp': 4.5.1
'@typescript-eslint/parser': 5.59.6(eslint@8.40.0)(typescript@5.0.4) '@typescript-eslint/parser': 5.59.6(eslint@8.41.0)(typescript@5.0.4)
'@typescript-eslint/scope-manager': 5.59.6 '@typescript-eslint/scope-manager': 5.59.6
'@typescript-eslint/type-utils': 5.59.6(eslint@8.40.0)(typescript@5.0.4) '@typescript-eslint/type-utils': 5.59.6(eslint@8.41.0)(typescript@5.0.4)
'@typescript-eslint/utils': 5.59.6(eslint@8.40.0)(typescript@5.0.4) '@typescript-eslint/utils': 5.59.6(eslint@8.41.0)(typescript@5.0.4)
debug: 4.3.4 debug: 4.3.4
eslint: 8.40.0 eslint: 8.41.0
grapheme-splitter: 1.0.4 grapheme-splitter: 1.0.4
ignore: 5.2.4 ignore: 5.2.4
natural-compare-lite: 1.4.0 natural-compare-lite: 1.4.0
@ -1891,7 +1894,7 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/parser@5.59.6(eslint@8.40.0)(typescript@5.0.4): /@typescript-eslint/parser@5.59.6(eslint@8.41.0)(typescript@5.0.4):
resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==} resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -1905,7 +1908,7 @@ packages:
'@typescript-eslint/types': 5.59.6 '@typescript-eslint/types': 5.59.6
'@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4)
debug: 4.3.4 debug: 4.3.4
eslint: 8.40.0 eslint: 8.41.0
typescript: 5.0.4 typescript: 5.0.4
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -1919,7 +1922,7 @@ packages:
'@typescript-eslint/visitor-keys': 5.59.6 '@typescript-eslint/visitor-keys': 5.59.6
dev: true dev: true
/@typescript-eslint/type-utils@5.59.6(eslint@8.40.0)(typescript@5.0.4): /@typescript-eslint/type-utils@5.59.6(eslint@8.41.0)(typescript@5.0.4):
resolution: {integrity: sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==} resolution: {integrity: sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -1930,9 +1933,9 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4)
'@typescript-eslint/utils': 5.59.6(eslint@8.40.0)(typescript@5.0.4) '@typescript-eslint/utils': 5.59.6(eslint@8.41.0)(typescript@5.0.4)
debug: 4.3.4 debug: 4.3.4
eslint: 8.40.0 eslint: 8.41.0
tsutils: 3.21.0(typescript@5.0.4) tsutils: 3.21.0(typescript@5.0.4)
typescript: 5.0.4 typescript: 5.0.4
transitivePeerDependencies: transitivePeerDependencies:
@ -1965,19 +1968,19 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/utils@5.59.6(eslint@8.40.0)(typescript@5.0.4): /@typescript-eslint/utils@5.59.6(eslint@8.41.0)(typescript@5.0.4):
resolution: {integrity: sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==} resolution: {integrity: sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0)
'@types/json-schema': 7.0.11 '@types/json-schema': 7.0.11
'@types/semver': 7.5.0 '@types/semver': 7.5.0
'@typescript-eslint/scope-manager': 5.59.6 '@typescript-eslint/scope-manager': 5.59.6
'@typescript-eslint/types': 5.59.6 '@typescript-eslint/types': 5.59.6
'@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4)
eslint: 8.40.0 eslint: 8.41.0
eslint-scope: 5.1.1 eslint-scope: 5.1.1
semver: 7.5.1 semver: 7.5.1
transitivePeerDependencies: transitivePeerDependencies:
@ -2431,8 +2434,8 @@ packages:
hasBin: true hasBin: true
dependencies: dependencies:
caniuse-lite: 1.0.30001488 caniuse-lite: 1.0.30001488
electron-to-chromium: 1.4.400 electron-to-chromium: 1.4.402
node-releases: 2.0.10 node-releases: 2.0.11
update-browserslist-db: 1.0.11(browserslist@4.21.5) update-browserslist-db: 1.0.11(browserslist@4.21.5)
dev: false dev: false
@ -2631,7 +2634,7 @@ packages:
resolution: {integrity: sha512-MaQ9FwzlZ/KLeVCLhzI3rZw0EhrIryfZa3AyT4agVybR0DjlkDHA8898lamLD6kfkf9MMn8D+zDAUR4+GxaymQ==} resolution: {integrity: sha512-MaQ9FwzlZ/KLeVCLhzI3rZw0EhrIryfZa3AyT4agVybR0DjlkDHA8898lamLD6kfkf9MMn8D+zDAUR4+GxaymQ==}
engines: {node: '>=12.13'} engines: {node: '>=12.13'}
dependencies: dependencies:
is-what: 4.1.9 is-what: 4.1.10
dev: false dev: false
/core-js-compat@3.30.2: /core-js-compat@3.30.2:
@ -2840,8 +2843,8 @@ packages:
jake: 10.8.6 jake: 10.8.6
dev: false dev: false
/electron-to-chromium@1.4.400: /electron-to-chromium@1.4.402:
resolution: {integrity: sha512-Lsvf7cvwbIxCfB8VqbnVtEsjGi3+48ejDiQZfWo5gkT+1vQ2DHQI5pl0nUvPD6z1IQk6JgFeMC5ZQJqVhalEHg==} resolution: {integrity: sha512-gWYvJSkohOiBE6ecVYXkrDgNaUjo47QEKK0kQzmWyhkH+yoYiG44bwuicTGNSIQRG3WDMsWVZJLRnJnLNkbWvA==}
dev: false dev: false
/emoji-regex@9.2.2: /emoji-regex@9.2.2:
@ -2960,8 +2963,8 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: true dev: true
/eslint-config-next@13.4.2(eslint@8.40.0)(typescript@5.0.4): /eslint-config-next@13.4.3(eslint@8.41.0)(typescript@5.0.4):
resolution: {integrity: sha512-zjLJ9B9bbeWSo5q+iHfdt8gVYyT+y2BpWDfjR6XMBtFRSMKRGjllDKxnuKBV1q2Y/QpwLM2PXHJTMRyblCmRAg==} resolution: {integrity: sha512-1lXwdFi29fKxzeugof/TUE7lpHyJQt5+U4LaUHyvQfHjvsWO77vFNicJv5sX6k0VDVSbnfz0lw+avxI+CinbMg==}
peerDependencies: peerDependencies:
eslint: ^7.23.0 || ^8.0.0 eslint: ^7.23.0 || ^8.0.0
typescript: '>=3.3.1' typescript: '>=3.3.1'
@ -2969,16 +2972,16 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@next/eslint-plugin-next': 13.4.2 '@next/eslint-plugin-next': 13.4.3
'@rushstack/eslint-patch': 1.2.0 '@rushstack/eslint-patch': 1.2.0
'@typescript-eslint/parser': 5.59.6(eslint@8.40.0)(typescript@5.0.4) '@typescript-eslint/parser': 5.59.6(eslint@8.41.0)(typescript@5.0.4)
eslint: 8.40.0 eslint: 8.41.0
eslint-import-resolver-node: 0.3.7 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-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.41.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-import: 2.27.5(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-typescript@3.5.5)(eslint@8.41.0)
eslint-plugin-jsx-a11y: 6.7.1(eslint@8.40.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.41.0)
eslint-plugin-react: 7.32.2(eslint@8.40.0) eslint-plugin-react: 7.32.2(eslint@8.41.0)
eslint-plugin-react-hooks: 4.6.0(eslint@8.40.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.41.0)
typescript: 5.0.4 typescript: 5.0.4
transitivePeerDependencies: transitivePeerDependencies:
- eslint-import-resolver-webpack - eslint-import-resolver-webpack
@ -2995,7 +2998,7 @@ packages:
- supports-color - supports-color
dev: true dev: true
/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-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.41.0):
resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==}
engines: {node: ^14.18.0 || >=16.0.0} engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -3004,9 +3007,9 @@ packages:
dependencies: dependencies:
debug: 4.3.4 debug: 4.3.4
enhanced-resolve: 5.14.0 enhanced-resolve: 5.14.0
eslint: 8.40.0 eslint: 8.41.0
eslint-module-utils: 2.8.0(@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-module-utils: 2.8.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.41.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-import: 2.27.5(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-typescript@3.5.5)(eslint@8.41.0)
get-tsconfig: 4.5.0 get-tsconfig: 4.5.0
globby: 13.1.4 globby: 13.1.4
is-core-module: 2.12.1 is-core-module: 2.12.1
@ -3019,7 +3022,7 @@ packages:
- supports-color - supports-color
dev: true dev: true
/eslint-module-utils@2.8.0(@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-module-utils@2.8.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.41.0):
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
engines: {node: '>=4'} engines: {node: '>=4'}
peerDependencies: peerDependencies:
@ -3040,16 +3043,16 @@ packages:
eslint-import-resolver-webpack: eslint-import-resolver-webpack:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/parser': 5.59.6(eslint@8.40.0)(typescript@5.0.4) '@typescript-eslint/parser': 5.59.6(eslint@8.41.0)(typescript@5.0.4)
debug: 3.2.7 debug: 3.2.7
eslint: 8.40.0 eslint: 8.41.0
eslint-import-resolver-node: 0.3.7 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-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.41.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
/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-import@2.27.5(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-typescript@3.5.5)(eslint@8.41.0):
resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
engines: {node: '>=4'} engines: {node: '>=4'}
peerDependencies: peerDependencies:
@ -3059,15 +3062,15 @@ packages:
'@typescript-eslint/parser': '@typescript-eslint/parser':
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/parser': 5.59.6(eslint@8.40.0)(typescript@5.0.4) '@typescript-eslint/parser': 5.59.6(eslint@8.41.0)(typescript@5.0.4)
array-includes: 3.1.6 array-includes: 3.1.6
array.prototype.flat: 1.3.1 array.prototype.flat: 1.3.1
array.prototype.flatmap: 1.3.1 array.prototype.flatmap: 1.3.1
debug: 3.2.7 debug: 3.2.7
doctrine: 2.1.0 doctrine: 2.1.0
eslint: 8.40.0 eslint: 8.41.0
eslint-import-resolver-node: 0.3.7 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-import-resolver-typescript@3.5.5)(eslint@8.40.0) eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.41.0)
has: 1.0.3 has: 1.0.3
is-core-module: 2.12.1 is-core-module: 2.12.1
is-glob: 4.0.3 is-glob: 4.0.3
@ -3082,7 +3085,7 @@ packages:
- supports-color - supports-color
dev: true dev: true
/eslint-plugin-jsx-a11y@6.7.1(eslint@8.40.0): /eslint-plugin-jsx-a11y@6.7.1(eslint@8.41.0):
resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==}
engines: {node: '>=4.0'} engines: {node: '>=4.0'}
peerDependencies: peerDependencies:
@ -3097,7 +3100,7 @@ packages:
axobject-query: 3.1.1 axobject-query: 3.1.1
damerau-levenshtein: 1.0.8 damerau-levenshtein: 1.0.8
emoji-regex: 9.2.2 emoji-regex: 9.2.2
eslint: 8.40.0 eslint: 8.41.0
has: 1.0.3 has: 1.0.3
jsx-ast-utils: 3.3.3 jsx-ast-utils: 3.3.3
language-tags: 1.0.5 language-tags: 1.0.5
@ -3107,16 +3110,16 @@ packages:
semver: 6.3.0 semver: 6.3.0
dev: true dev: true
/eslint-plugin-react-hooks@4.6.0(eslint@8.40.0): /eslint-plugin-react-hooks@4.6.0(eslint@8.41.0):
resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
engines: {node: '>=10'} engines: {node: '>=10'}
peerDependencies: peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
dependencies: dependencies:
eslint: 8.40.0 eslint: 8.41.0
dev: true dev: true
/eslint-plugin-react@7.32.2(eslint@8.40.0): /eslint-plugin-react@7.32.2(eslint@8.41.0):
resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==}
engines: {node: '>=4'} engines: {node: '>=4'}
peerDependencies: peerDependencies:
@ -3126,7 +3129,7 @@ packages:
array.prototype.flatmap: 1.3.1 array.prototype.flatmap: 1.3.1
array.prototype.tosorted: 1.1.1 array.prototype.tosorted: 1.1.1
doctrine: 2.1.0 doctrine: 2.1.0
eslint: 8.40.0 eslint: 8.41.0
estraverse: 5.3.0 estraverse: 5.3.0
jsx-ast-utils: 3.3.3 jsx-ast-utils: 3.3.3
minimatch: 3.1.2 minimatch: 3.1.2
@ -3160,15 +3163,15 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true dev: true
/eslint@8.40.0: /eslint@8.41.0:
resolution: {integrity: sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==} resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true hasBin: true
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0)
'@eslint-community/regexpp': 4.5.1 '@eslint-community/regexpp': 4.5.1
'@eslint/eslintrc': 2.0.3 '@eslint/eslintrc': 2.0.3
'@eslint/js': 8.40.0 '@eslint/js': 8.41.0
'@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/config-array': 0.11.8
'@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8 '@nodelib/fs.walk': 1.2.8
@ -3188,13 +3191,12 @@ packages:
find-up: 5.0.0 find-up: 5.0.0
glob-parent: 6.0.2 glob-parent: 6.0.2
globals: 13.20.0 globals: 13.20.0
grapheme-splitter: 1.0.4 graphemer: 1.4.0
ignore: 5.2.4 ignore: 5.2.4
import-fresh: 3.3.0 import-fresh: 3.3.0
imurmurhash: 0.1.4 imurmurhash: 0.1.4
is-glob: 4.0.3 is-glob: 4.0.3
is-path-inside: 3.0.3 is-path-inside: 3.0.3
js-sdsl: 4.4.0
js-yaml: 4.1.0 js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1 json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1 levn: 0.4.1
@ -3367,6 +3369,10 @@ packages:
resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
dev: true dev: true
/fms-ts@0.1.6:
resolution: {integrity: sha512-udJ0KwyFEIF27DQDl0PUptyTYrWczBr8P9g/b4j+Zri4cxQZcKCqcLfHUeDaD8usoThpk4WO0jVjftcjs9fYRw==}
dev: false
/for-each@0.3.3: /for-each@0.3.3:
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
dependencies: dependencies:
@ -3580,6 +3586,10 @@ packages:
resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
dev: true dev: true
/graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
dev: true
/has-bigints@1.0.2: /has-bigints@1.0.2:
resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
@ -3896,8 +3906,8 @@ packages:
get-intrinsic: 1.2.1 get-intrinsic: 1.2.1
dev: true dev: true
/is-what@4.1.9: /is-what@4.1.10:
resolution: {integrity: sha512-I3FU0rkVvwhgLLEs6iITwZ/JaLXe7tQcHyzupXky8jigt1vu4KM0UOqDr963j36JRvJ835EATVIm6MnGz/i1/g==} resolution: {integrity: sha512-JBy26nXqBUwzTfgj6T5Y/UgXSmRd+03FTq5v3P+N1cOmOtI1hz7dBn+ZfqM7c86qqWTNBEH98h3pkpmI6USnQA==}
engines: {node: '>=12.13'} engines: {node: '>=12.13'}
dev: false dev: false
@ -3954,10 +3964,6 @@ packages:
resolution: {integrity: sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==} resolution: {integrity: sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==}
dev: false dev: false
/js-sdsl@4.4.0:
resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==}
dev: true
/js-tokens@4.0.0: /js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@ -4278,7 +4284,7 @@ packages:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
dev: false dev: false
/next-auth@4.22.1(next@13.4.2)(react-dom@18.2.0)(react@18.2.0): /next-auth@4.22.1(next@13.4.3)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-NTR3f6W7/AWXKw8GSsgSyQcDW6jkslZLH8AiZa5PQ09w1kR8uHtR9rez/E9gAq/o17+p0JYHE8QjF3RoniiObA==} resolution: {integrity: sha512-NTR3f6W7/AWXKw8GSsgSyQcDW6jkslZLH8AiZa5PQ09w1kR8uHtR9rez/E9gAq/o17+p0JYHE8QjF3RoniiObA==}
peerDependencies: peerDependencies:
next: ^12.2.5 || ^13 next: ^12.2.5 || ^13
@ -4293,7 +4299,7 @@ packages:
'@panva/hkdf': 1.1.1 '@panva/hkdf': 1.1.1
cookie: 0.5.0 cookie: 0.5.0
jose: 4.14.4 jose: 4.14.4
next: 13.4.2(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0) next: 13.4.3(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0)
oauth: 0.9.15 oauth: 0.9.15
openid-client: 5.4.2 openid-client: 5.4.2
preact: 10.14.1 preact: 10.14.1
@ -4303,7 +4309,7 @@ packages:
uuid: 8.3.2 uuid: 8.3.2
dev: false dev: false
/next-pwa@5.6.0(@babel/core@7.21.8)(next@13.4.2)(webpack@5.83.1): /next-pwa@5.6.0(@babel/core@7.21.8)(next@13.4.3)(webpack@5.83.1):
resolution: {integrity: sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==} resolution: {integrity: sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==}
peerDependencies: peerDependencies:
next: '>=9.0.0' next: '>=9.0.0'
@ -4311,7 +4317,7 @@ packages:
babel-loader: 8.3.0(@babel/core@7.21.8)(webpack@5.83.1) babel-loader: 8.3.0(@babel/core@7.21.8)(webpack@5.83.1)
clean-webpack-plugin: 4.0.0(webpack@5.83.1) clean-webpack-plugin: 4.0.0(webpack@5.83.1)
globby: 11.1.0 globby: 11.1.0
next: 13.4.2(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0) next: 13.4.3(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0)
terser-webpack-plugin: 5.3.9(webpack@5.83.1) terser-webpack-plugin: 5.3.9(webpack@5.83.1)
workbox-webpack-plugin: 6.5.4(webpack@5.83.1) workbox-webpack-plugin: 6.5.4(webpack@5.83.1)
workbox-window: 6.5.4 workbox-window: 6.5.4
@ -4325,8 +4331,8 @@ packages:
- webpack - webpack
dev: false dev: false
/next@13.4.2(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0): /next@13.4.3(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-aNFqLs3a3nTGvLWlO9SUhCuMUHVPSFQC0+tDNGAsDXqx+WJDFSbvc233gOJ5H19SBc7nw36A9LwQepOJ2u/8Kg==} resolution: {integrity: sha512-FV3pBrAAnAIfOclTvncw9dDohyeuEEXPe5KNcva91anT/rdycWbgtu3IjUj4n5yHnWK8YEPo0vrUecHmnmUNbA==}
engines: {node: '>=16.8.0'} engines: {node: '>=16.8.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -4346,7 +4352,7 @@ packages:
sass: sass:
optional: true optional: true
dependencies: dependencies:
'@next/env': 13.4.2 '@next/env': 13.4.3
'@swc/helpers': 0.5.1 '@swc/helpers': 0.5.1
busboy: 1.6.0 busboy: 1.6.0
caniuse-lite: 1.0.30001488 caniuse-lite: 1.0.30001488
@ -4356,22 +4362,22 @@ packages:
styled-jsx: 5.1.1(@babel/core@7.21.8)(react@18.2.0) styled-jsx: 5.1.1(@babel/core@7.21.8)(react@18.2.0)
zod: 3.21.4 zod: 3.21.4
optionalDependencies: optionalDependencies:
'@next/swc-darwin-arm64': 13.4.2 '@next/swc-darwin-arm64': 13.4.3
'@next/swc-darwin-x64': 13.4.2 '@next/swc-darwin-x64': 13.4.3
'@next/swc-linux-arm64-gnu': 13.4.2 '@next/swc-linux-arm64-gnu': 13.4.3
'@next/swc-linux-arm64-musl': 13.4.2 '@next/swc-linux-arm64-musl': 13.4.3
'@next/swc-linux-x64-gnu': 13.4.2 '@next/swc-linux-x64-gnu': 13.4.3
'@next/swc-linux-x64-musl': 13.4.2 '@next/swc-linux-x64-musl': 13.4.3
'@next/swc-win32-arm64-msvc': 13.4.2 '@next/swc-win32-arm64-msvc': 13.4.3
'@next/swc-win32-ia32-msvc': 13.4.2 '@next/swc-win32-ia32-msvc': 13.4.3
'@next/swc-win32-x64-msvc': 13.4.2 '@next/swc-win32-x64-msvc': 13.4.3
transitivePeerDependencies: transitivePeerDependencies:
- '@babel/core' - '@babel/core'
- babel-plugin-macros - babel-plugin-macros
dev: false dev: false
/node-releases@2.0.10: /node-releases@2.0.11:
resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} resolution: {integrity: sha512-+M0PwXeU80kRohZ3aT4J/OnR+l9/KD2nVLNNoRgFtnf+umQVFdGBAO2N8+nCnEi0xlh/Wk3zOGC+vNNx+uM79Q==}
dev: false dev: false
/normalize-path@3.0.0: /normalize-path@3.0.0:

View file

@ -1,7 +1,8 @@
import type { User } from "@prisma/client"; import type { User } from "@prisma/client";
import { z } from "zod"; import { z } from "zod";
import { env } from "~/env.mjs";
import { createTRPCRouter, protectedProcedure } from "~/server/api/trpc"; import { createTRPCRouter, protectedProcedure } from "~/server/api/trpc";
import { sendMail } from "~/server/jmap"; import { sendMail } from "fms-ts";
import { fetchFromCache, writeToCache, deleteFromCache } from "~/server/redis"; import { fetchFromCache, writeToCache, deleteFromCache } from "~/server/redis";
import type { Role } from "~/utils/types"; import type { Role } from "~/utils/types";
@ -113,7 +114,13 @@ export const userRouter = createTRPCRouter({
"-- \n" + "-- \n" +
"Sprint Padawan Admin - Atridad \n"; "Sprint Padawan Admin - Atridad \n";
await sendMail(subject, body, user.email); await sendMail(
env.JMAP_USERNAME,
env.JMAP_TOKEN,
subject,
body,
user.email
);
await deleteFromCache(`kv_usercount_admin`); await deleteFromCache(`kv_usercount_admin`);
await deleteFromCache(`kv_userlist_admin`); await deleteFromCache(`kv_userlist_admin`);
} }

View file

@ -10,7 +10,7 @@ import { PrismaAdapter } from "@next-auth/prisma-adapter";
import { env } from "~/env.mjs"; import { env } from "~/env.mjs";
import { prisma } from "~/server/db"; import { prisma } from "~/server/db";
import type { Role } from "~/utils/types"; import type { Role } from "~/utils/types";
import { sendMail } from "./jmap"; import { sendMail } from "fms-ts";
import { deleteFromCache } from "./redis"; import { deleteFromCache } from "./redis";
/** /**
@ -59,7 +59,13 @@ export const authOptions: NextAuthOptions = {
"-- \n" + "-- \n" +
"Sprint Padawan Admin - Atridad \n"; "Sprint Padawan Admin - Atridad \n";
await sendMail(subject, body, user.email); await sendMail(
env.JMAP_USERNAME,
env.JMAP_TOKEN,
subject,
body,
user.email
);
await deleteFromCache(`kv_userlist_admin`); await deleteFromCache(`kv_userlist_admin`);
await deleteFromCache(`kv_usercount_admin`); await deleteFromCache(`kv_usercount_admin`);
} }

View file

@ -1,118 +0,0 @@
/* eslint-disable */
import { env } from "~/env.mjs";
const hostname = env.JMAP_HOSTNAME || "api.fastmail.com";
const username = env.JMAP_USERNAME;
const authUrl = `https://${hostname}/.well-known/jmap`;
const headers = {
"Content-Type": "application/json",
Authorization: `Bearer ${env.JMAP_TOKEN}`,
};
export const getSession = async () => {
const response = await fetch(authUrl, {
method: "GET",
headers,
});
return response.json();
};
export const mailboxQuery = async (apiUrl: string, accountId: string) => {
const response = await fetch(apiUrl, {
method: "POST",
headers,
body: JSON.stringify({
using: ["urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail"],
methodCalls: [
["Mailbox/query", { accountId, filter: { name: "Drafts" } }, "a"],
],
}),
});
const data = await response.json();
return await data["methodResponses"][0][1].ids[0];
};
export const identityQuery = async (apiUrl: string, accountId: string) => {
const response = await fetch(apiUrl, {
method: "POST",
headers,
body: JSON.stringify({
using: [
"urn:ietf:params:jmap:core",
"urn:ietf:params:jmap:mail",
"urn:ietf:params:jmap:submission",
],
methodCalls: [["Identity/get", { accountId, ids: null }, "a"]],
}),
});
const data = await response.json();
return await data["methodResponses"][0][1].list.filter(
// eslint-disable-line
(identity: any) => identity.email === username
)[0].id;
};
export const draftResponse = async (
apiUrl: string,
accountId: string,
draftId: string,
identityId: string,
subject: string,
messageBody: string,
sendTo: string
) => {
const draftObject = {
from: [{ email: username }],
to: [{ email: sendTo }],
subject,
keywords: { $draft: true },
mailboxIds: { [draftId]: true },
bodyValues: { body: { value: messageBody, charset: "utf-8" } },
textBody: [{ partId: "body", type: "text/plain" }],
};
const response = await fetch(apiUrl, {
method: "POST",
headers,
body: JSON.stringify({
using: [
"urn:ietf:params:jmap:core",
"urn:ietf:params:jmap:mail",
"urn:ietf:params:jmap:submission",
],
methodCalls: [
["Email/set", { accountId, create: { draft: draftObject } }, "a"],
[
"EmailSubmission/set",
{
accountId,
onSuccessDestroyEmail: ["#sendIt"],
create: { sendIt: { emailId: "#draft", identityId } },
},
"b",
],
],
}),
});
const data = await response.json();
console.log(JSON.stringify(data, null, 2));
};
export const sendMail = async (
subject: string,
body: string,
sendTo: string
) => {
const session = await getSession();
const apiUrl = session.apiUrl;
const accountId = session.primaryAccounts["urn:ietf:params:jmap:mail"];
const draftId = await mailboxQuery(apiUrl, accountId);
const identityId = await identityQuery(apiUrl, accountId);
draftResponse(apiUrl, accountId, draftId, identityId, subject, body, sendTo);
};