Webhooks signature verification middleware
This commit is contained in:
parent
dc0082b1e0
commit
cc13260ef6
4 changed files with 236 additions and 136 deletions
12
package.json
12
package.json
|
@ -17,14 +17,16 @@
|
|||
"dependencies": {
|
||||
"fast-glob": "^3.2.11",
|
||||
"graphql": "^16.5.0",
|
||||
"retes": "^0.27.1"
|
||||
"jose": "^4.8.3",
|
||||
"retes": "^0.29.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^17.0.36",
|
||||
"@types/node": "^17.0.45",
|
||||
"clean-publish": "^4.0.1",
|
||||
"tsm": "^2.2.1",
|
||||
"tsup": "^6.0.1",
|
||||
"typescript": "^4.7.2",
|
||||
"uvu": "^0.5.3",
|
||||
"tsup": "^6.1.3",
|
||||
"typescript": "^4.7.4",
|
||||
"uvu": "^0.5.6",
|
||||
"watchlist": "^0.3.1"
|
||||
},
|
||||
"exports": {
|
||||
|
|
225
pnpm-lock.yaml
225
pnpm-lock.yaml
|
@ -1,27 +1,31 @@
|
|||
lockfileVersion: 5.4
|
||||
|
||||
specifiers:
|
||||
'@types/node': ^17.0.36
|
||||
'@types/node': ^17.0.45
|
||||
clean-publish: ^4.0.1
|
||||
fast-glob: ^3.2.11
|
||||
graphql: ^16.5.0
|
||||
retes: ^0.27.1
|
||||
jose: ^4.8.3
|
||||
retes: ^0.29.4
|
||||
tsm: ^2.2.1
|
||||
tsup: ^6.0.1
|
||||
typescript: ^4.7.2
|
||||
uvu: ^0.5.3
|
||||
tsup: ^6.1.3
|
||||
typescript: ^4.7.4
|
||||
uvu: ^0.5.6
|
||||
watchlist: ^0.3.1
|
||||
|
||||
dependencies:
|
||||
fast-glob: 3.2.11
|
||||
graphql: 16.5.0
|
||||
retes: 0.27.1
|
||||
jose: 4.8.3
|
||||
retes: 0.29.4
|
||||
|
||||
devDependencies:
|
||||
'@types/node': 17.0.36
|
||||
'@types/node': 17.0.45
|
||||
clean-publish: 4.0.1
|
||||
tsm: 2.2.1
|
||||
tsup: 6.0.1_typescript@4.7.2
|
||||
typescript: 4.7.2
|
||||
uvu: 0.5.3
|
||||
tsup: 6.1.3_typescript@4.7.4
|
||||
typescript: 4.7.4
|
||||
uvu: 0.5.6
|
||||
watchlist: 0.3.1
|
||||
|
||||
packages:
|
||||
|
@ -44,8 +48,8 @@ packages:
|
|||
'@nodelib/fs.scandir': 2.1.5
|
||||
fastq: 1.13.0
|
||||
|
||||
/@types/node/17.0.36:
|
||||
resolution: {integrity: sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==}
|
||||
/@types/node/17.0.45:
|
||||
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
|
||||
dev: true
|
||||
|
||||
/any-promise/1.3.0:
|
||||
|
@ -87,13 +91,13 @@ packages:
|
|||
dependencies:
|
||||
fill-range: 7.0.1
|
||||
|
||||
/bundle-require/3.0.4_esbuild@0.14.42:
|
||||
/bundle-require/3.0.4_esbuild@0.14.48:
|
||||
resolution: {integrity: sha512-VXG6epB1yrLAvWVQpl92qF347/UXmncQj7J3U8kZEbdVZ1ZkQyr4hYeL/9RvcE8vVVdp53dY78Fd/3pqfRqI1A==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
peerDependencies:
|
||||
esbuild: '>=0.13'
|
||||
dependencies:
|
||||
esbuild: 0.14.42
|
||||
esbuild: 0.14.48
|
||||
load-tsconfig: 0.2.3
|
||||
dev: true
|
||||
|
||||
|
@ -124,6 +128,17 @@ packages:
|
|||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/clean-publish/4.0.1:
|
||||
resolution: {integrity: sha512-6v0bh5kQD5FDlxBgXDVNNc6KmAB7iIP/GHD91q9xsGVZT5XB9Y8TNqB7dL5u9PTZlBeLpBw+A1AseRlEEJLSWA==}
|
||||
engines: {node: '>= 16.0.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
cross-spawn: 7.0.3
|
||||
fast-glob: 3.2.11
|
||||
lilconfig: 2.0.5
|
||||
micromatch: 4.0.5
|
||||
dev: true
|
||||
|
||||
/commander/4.1.1:
|
||||
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
|
||||
engines: {node: '>= 6'}
|
||||
|
@ -171,8 +186,8 @@ packages:
|
|||
path-type: 4.0.0
|
||||
dev: true
|
||||
|
||||
/esbuild-android-64/0.14.42:
|
||||
resolution: {integrity: sha512-P4Y36VUtRhK/zivqGVMqhptSrFILAGlYp0Z8r9UQqHJ3iWztRCNWnlBzD9HRx0DbueXikzOiwyOri+ojAFfW6A==}
|
||||
/esbuild-android-64/0.14.48:
|
||||
resolution: {integrity: sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [android]
|
||||
|
@ -180,8 +195,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-android-arm64/0.14.42:
|
||||
resolution: {integrity: sha512-0cOqCubq+RWScPqvtQdjXG3Czb3AWI2CaKw3HeXry2eoA2rrPr85HF7IpdU26UWdBXgPYtlTN1LUiuXbboROhg==}
|
||||
/esbuild-android-arm64/0.14.48:
|
||||
resolution: {integrity: sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
@ -189,8 +204,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-darwin-64/0.14.42:
|
||||
resolution: {integrity: sha512-ipiBdCA3ZjYgRfRLdQwP82rTiv/YVMtW36hTvAN5ZKAIfxBOyPXY7Cejp3bMXWgzKD8B6O+zoMzh01GZsCuEIA==}
|
||||
/esbuild-darwin-64/0.14.48:
|
||||
resolution: {integrity: sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
@ -198,8 +213,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-darwin-arm64/0.14.42:
|
||||
resolution: {integrity: sha512-bU2tHRqTPOaoH/4m0zYHbFWpiYDmaA0gt90/3BMEFaM0PqVK/a6MA2V/ypV5PO0v8QxN6gH5hBPY4YJ2lopXgA==}
|
||||
/esbuild-darwin-arm64/0.14.48:
|
||||
resolution: {integrity: sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
@ -207,8 +222,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-freebsd-64/0.14.42:
|
||||
resolution: {integrity: sha512-75h1+22Ivy07+QvxHyhVqOdekupiTZVLN1PMwCDonAqyXd8TVNJfIRFrdL8QmSJrOJJ5h8H1I9ETyl2L8LQDaw==}
|
||||
/esbuild-freebsd-64/0.14.48:
|
||||
resolution: {integrity: sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
@ -216,8 +231,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-freebsd-arm64/0.14.42:
|
||||
resolution: {integrity: sha512-W6Jebeu5TTDQMJUJVarEzRU9LlKpNkPBbjqSu+GUPTHDCly5zZEQq9uHkmHHl7OKm+mQ2zFySN83nmfCeZCyNA==}
|
||||
/esbuild-freebsd-arm64/0.14.48:
|
||||
resolution: {integrity: sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
|
@ -225,8 +240,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-32/0.14.42:
|
||||
resolution: {integrity: sha512-Ooy/Bj+mJ1z4jlWcK5Dl6SlPlCgQB9zg1UrTCeY8XagvuWZ4qGPyYEWGkT94HUsRi2hKsXvcs6ThTOjBaJSMfg==}
|
||||
/esbuild-linux-32/0.14.48:
|
||||
resolution: {integrity: sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ia32]
|
||||
os: [linux]
|
||||
|
@ -234,8 +249,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-64/0.14.42:
|
||||
resolution: {integrity: sha512-2L0HbzQfbTuemUWfVqNIjOfaTRt9zsvjnme6lnr7/MO9toz/MJ5tZhjqrG6uDWDxhsaHI2/nsDgrv8uEEN2eoA==}
|
||||
/esbuild-linux-64/0.14.48:
|
||||
resolution: {integrity: sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
@ -243,8 +258,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-arm/0.14.42:
|
||||
resolution: {integrity: sha512-STq69yzCMhdRaWnh29UYrLSr/qaWMm/KqwaRF1pMEK7kDiagaXhSL1zQGXbYv94GuGY/zAwzK98+6idCMUOOCg==}
|
||||
/esbuild-linux-arm/0.14.48:
|
||||
resolution: {integrity: sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
@ -252,8 +267,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-arm64/0.14.42:
|
||||
resolution: {integrity: sha512-c3Ug3e9JpVr8jAcfbhirtpBauLxzYPpycjWulD71CF6ZSY26tvzmXMJYooQ2YKqDY4e/fPu5K8bm7MiXMnyxuA==}
|
||||
/esbuild-linux-arm64/0.14.48:
|
||||
resolution: {integrity: sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
@ -261,8 +276,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-mips64le/0.14.42:
|
||||
resolution: {integrity: sha512-QuvpHGbYlkyXWf2cGm51LBCHx6eUakjaSrRpUqhPwjh/uvNUYvLmz2LgPTTPwCqaKt0iwL+OGVL0tXA5aDbAbg==}
|
||||
/esbuild-linux-mips64le/0.14.48:
|
||||
resolution: {integrity: sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [mips64el]
|
||||
os: [linux]
|
||||
|
@ -270,8 +285,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-ppc64le/0.14.42:
|
||||
resolution: {integrity: sha512-8ohIVIWDbDT+i7lCx44YCyIRrOW1MYlks9fxTo0ME2LS/fxxdoJBwHWzaDYhjvf8kNpA+MInZvyOEAGoVDrMHg==}
|
||||
/esbuild-linux-ppc64le/0.14.48:
|
||||
resolution: {integrity: sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
@ -279,8 +294,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-riscv64/0.14.42:
|
||||
resolution: {integrity: sha512-DzDqK3TuoXktPyG1Lwx7vhaF49Onv3eR61KwQyxYo4y5UKTpL3NmuarHSIaSVlTFDDpcIajCDwz5/uwKLLgKiQ==}
|
||||
/esbuild-linux-riscv64/0.14.48:
|
||||
resolution: {integrity: sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
@ -288,8 +303,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-s390x/0.14.42:
|
||||
resolution: {integrity: sha512-YFRhPCxl8nb//Wn6SiS5pmtplBi4z9yC2gLrYoYI/tvwuB1jldir9r7JwAGy1Ck4D7sE7wBN9GFtUUX/DLdcEQ==}
|
||||
/esbuild-linux-s390x/0.14.48:
|
||||
resolution: {integrity: sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
@ -297,8 +312,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-netbsd-64/0.14.42:
|
||||
resolution: {integrity: sha512-QYSD2k+oT9dqB/4eEM9c+7KyNYsIPgzYOSrmfNGDIyJrbT1d+CFVKvnKahDKNJLfOYj8N4MgyFaU9/Ytc6w5Vw==}
|
||||
/esbuild-netbsd-64/0.14.48:
|
||||
resolution: {integrity: sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [netbsd]
|
||||
|
@ -306,8 +321,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-openbsd-64/0.14.42:
|
||||
resolution: {integrity: sha512-M2meNVIKWsm2HMY7+TU9AxM7ZVwI9havdsw6m/6EzdXysyCFFSoaTQ/Jg03izjCsK17FsVRHqRe26Llj6x0MNA==}
|
||||
/esbuild-openbsd-64/0.14.48:
|
||||
resolution: {integrity: sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [openbsd]
|
||||
|
@ -315,8 +330,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-sunos-64/0.14.42:
|
||||
resolution: {integrity: sha512-uXV8TAZEw36DkgW8Ak3MpSJs1ofBb3Smkc/6pZ29sCAN1KzCAQzsje4sUwugf+FVicrHvlamCOlFZIXgct+iqQ==}
|
||||
/esbuild-sunos-64/0.14.48:
|
||||
resolution: {integrity: sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [sunos]
|
||||
|
@ -324,8 +339,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-windows-32/0.14.42:
|
||||
resolution: {integrity: sha512-4iw/8qWmRICWi9ZOnJJf9sYt6wmtp3hsN4TdI5NqgjfOkBVMxNdM9Vt3626G1Rda9ya2Q0hjQRD9W1o+m6Lz6g==}
|
||||
/esbuild-windows-32/0.14.48:
|
||||
resolution: {integrity: sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
@ -333,8 +348,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-windows-64/0.14.42:
|
||||
resolution: {integrity: sha512-j3cdK+Y3+a5H0wHKmLGTJcq0+/2mMBHPWkItR3vytp/aUGD/ua/t2BLdfBIzbNN9nLCRL9sywCRpOpFMx3CxzA==}
|
||||
/esbuild-windows-64/0.14.48:
|
||||
resolution: {integrity: sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
@ -342,8 +357,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-windows-arm64/0.14.42:
|
||||
resolution: {integrity: sha512-+lRAARnF+hf8J0mN27ujO+VbhPbDqJ8rCcJKye4y7YZLV6C4n3pTRThAb388k/zqF5uM0lS5O201u0OqoWSicw==}
|
||||
/esbuild-windows-arm64/0.14.48:
|
||||
resolution: {integrity: sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
@ -351,32 +366,32 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild/0.14.42:
|
||||
resolution: {integrity: sha512-V0uPZotCEHokJdNqyozH6qsaQXqmZEOiZWrXnds/zaH/0SyrIayRXWRB98CENO73MIZ9T3HBIOsmds5twWtmgw==}
|
||||
/esbuild/0.14.48:
|
||||
resolution: {integrity: sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==}
|
||||
engines: {node: '>=12'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
optionalDependencies:
|
||||
esbuild-android-64: 0.14.42
|
||||
esbuild-android-arm64: 0.14.42
|
||||
esbuild-darwin-64: 0.14.42
|
||||
esbuild-darwin-arm64: 0.14.42
|
||||
esbuild-freebsd-64: 0.14.42
|
||||
esbuild-freebsd-arm64: 0.14.42
|
||||
esbuild-linux-32: 0.14.42
|
||||
esbuild-linux-64: 0.14.42
|
||||
esbuild-linux-arm: 0.14.42
|
||||
esbuild-linux-arm64: 0.14.42
|
||||
esbuild-linux-mips64le: 0.14.42
|
||||
esbuild-linux-ppc64le: 0.14.42
|
||||
esbuild-linux-riscv64: 0.14.42
|
||||
esbuild-linux-s390x: 0.14.42
|
||||
esbuild-netbsd-64: 0.14.42
|
||||
esbuild-openbsd-64: 0.14.42
|
||||
esbuild-sunos-64: 0.14.42
|
||||
esbuild-windows-32: 0.14.42
|
||||
esbuild-windows-64: 0.14.42
|
||||
esbuild-windows-arm64: 0.14.42
|
||||
esbuild-android-64: 0.14.48
|
||||
esbuild-android-arm64: 0.14.48
|
||||
esbuild-darwin-64: 0.14.48
|
||||
esbuild-darwin-arm64: 0.14.48
|
||||
esbuild-freebsd-64: 0.14.48
|
||||
esbuild-freebsd-arm64: 0.14.48
|
||||
esbuild-linux-32: 0.14.48
|
||||
esbuild-linux-64: 0.14.48
|
||||
esbuild-linux-arm: 0.14.48
|
||||
esbuild-linux-arm64: 0.14.48
|
||||
esbuild-linux-mips64le: 0.14.48
|
||||
esbuild-linux-ppc64le: 0.14.48
|
||||
esbuild-linux-riscv64: 0.14.48
|
||||
esbuild-linux-s390x: 0.14.48
|
||||
esbuild-netbsd-64: 0.14.48
|
||||
esbuild-openbsd-64: 0.14.48
|
||||
esbuild-sunos-64: 0.14.48
|
||||
esbuild-windows-32: 0.14.48
|
||||
esbuild-windows-64: 0.14.48
|
||||
esbuild-windows-arm64: 0.14.48
|
||||
dev: true
|
||||
|
||||
/execa/5.1.1:
|
||||
|
@ -517,13 +532,17 @@ packages:
|
|||
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
||||
dev: true
|
||||
|
||||
/jose/4.8.3:
|
||||
resolution: {integrity: sha512-7rySkpW78d8LBp4YU70Wb7+OTgE3OwAALNVZxhoIhp4Kscp+p/fBkdpxGAMKxvCAMV4QfXBU9m6l9nX/vGwd2g==}
|
||||
dev: false
|
||||
|
||||
/joycon/3.1.1:
|
||||
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/kleur/4.1.4:
|
||||
resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==}
|
||||
/kleur/4.1.5:
|
||||
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
|
@ -601,12 +620,12 @@ packages:
|
|||
dev: true
|
||||
|
||||
/object-assign/4.1.1:
|
||||
resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=}
|
||||
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/once/1.4.0:
|
||||
resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=}
|
||||
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
|
||||
dependencies:
|
||||
wrappy: 1.0.2
|
||||
dev: true
|
||||
|
@ -619,7 +638,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/path-is-absolute/1.0.1:
|
||||
resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=}
|
||||
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
|
@ -678,8 +697,8 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/retes/0.27.1:
|
||||
resolution: {integrity: sha512-qK+cQf39EIyMIR3nrLtEnRpGHneuL4gI0GFfQsFF56L71RZz9R+YfD6Aqiw1EKDukKSRrugvHLu8/ffCZg+q4g==}
|
||||
/retes/0.29.4:
|
||||
resolution: {integrity: sha512-c6Ji2oGfXN/abuLRVLUT0/eklLuAlargjBR0Ru/FAhgmL2TtEhNl2OQ3UnFSUYXa8a6v9qrEb6UvIp0A6KlJ5w==}
|
||||
dependencies:
|
||||
busboy: 1.6.0
|
||||
dev: false
|
||||
|
@ -688,8 +707,8 @@ packages:
|
|||
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
|
||||
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
|
||||
|
||||
/rollup/2.75.3:
|
||||
resolution: {integrity: sha512-YA29fLU6MAYSaDxIQYrGGOcbXlDmG96h0krGGYObroezcQ0KgEPM3+7MtKD/qeuUbFuAJXvKZee5dA1dpwq1PQ==}
|
||||
/rollup/2.75.7:
|
||||
resolution: {integrity: sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
hasBin: true
|
||||
optionalDependencies:
|
||||
|
@ -746,8 +765,8 @@ packages:
|
|||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/sucrase/3.21.0:
|
||||
resolution: {integrity: sha512-FjAhMJjDcifARI7bZej0Bi1yekjWQHoEvWIXhLPwDhC6O4iZ5PtGb86WV56riW87hzpgB13wwBKO9vKAiWu5VQ==}
|
||||
/sucrase/3.23.0:
|
||||
resolution: {integrity: sha512-xgC1xboStzGhCnRywlBf/DLmkC+SkdAKqrNCDsxGrzM0phR5oUxoFKiQNrsc2D8wDdAm03iLbSZqjHDddo3IzQ==}
|
||||
engines: {node: '>=8'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
|
@ -760,7 +779,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/thenify-all/1.6.0:
|
||||
resolution: {integrity: sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=}
|
||||
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
|
||||
engines: {node: '>=0.8'}
|
||||
dependencies:
|
||||
thenify: 3.3.1
|
||||
|
@ -779,7 +798,7 @@ packages:
|
|||
is-number: 7.0.0
|
||||
|
||||
/tr46/1.0.1:
|
||||
resolution: {integrity: sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=}
|
||||
resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
|
||||
dependencies:
|
||||
punycode: 2.1.1
|
||||
dev: true
|
||||
|
@ -798,11 +817,11 @@ packages:
|
|||
engines: {node: '>=12'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
esbuild: 0.14.42
|
||||
esbuild: 0.14.48
|
||||
dev: true
|
||||
|
||||
/tsup/6.0.1_typescript@4.7.2:
|
||||
resolution: {integrity: sha512-2Pl1YkEEvzfg4aYgwUILaHV0wwZQKO7mNHMQChyzdCNlQqf11eug7gWk86XCb3CvRofCXBX87x73BTGjyS3cOQ==}
|
||||
/tsup/6.1.3_typescript@4.7.4:
|
||||
resolution: {integrity: sha512-eRpBnbfpDFng+EJNTQ90N7QAf4HAGGC7O3buHIjroKWK7D1ibk9/YnR/3cS8HsMU5T+6Oi+cnF+yU5WmCnB//Q==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
|
@ -817,40 +836,40 @@ packages:
|
|||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
bundle-require: 3.0.4_esbuild@0.14.42
|
||||
bundle-require: 3.0.4_esbuild@0.14.48
|
||||
cac: 6.7.12
|
||||
chokidar: 3.5.3
|
||||
debug: 4.3.4
|
||||
esbuild: 0.14.42
|
||||
esbuild: 0.14.48
|
||||
execa: 5.1.1
|
||||
globby: 11.1.0
|
||||
joycon: 3.1.1
|
||||
postcss-load-config: 3.1.4
|
||||
resolve-from: 5.0.0
|
||||
rollup: 2.75.3
|
||||
rollup: 2.75.7
|
||||
source-map: 0.8.0-beta.0
|
||||
sucrase: 3.21.0
|
||||
sucrase: 3.23.0
|
||||
tree-kill: 1.2.2
|
||||
typescript: 4.7.2
|
||||
typescript: 4.7.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- ts-node
|
||||
dev: true
|
||||
|
||||
/typescript/4.7.2:
|
||||
resolution: {integrity: sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==}
|
||||
/typescript/4.7.4:
|
||||
resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==}
|
||||
engines: {node: '>=4.2.0'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/uvu/0.5.3:
|
||||
resolution: {integrity: sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==}
|
||||
/uvu/0.5.6:
|
||||
resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==}
|
||||
engines: {node: '>=8'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
dequal: 2.0.2
|
||||
diff: 5.1.0
|
||||
kleur: 4.1.4
|
||||
kleur: 4.1.5
|
||||
sade: 1.8.1
|
||||
dev: true
|
||||
|
||||
|
@ -883,7 +902,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/wrappy/1.0.2:
|
||||
resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=}
|
||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||
dev: true
|
||||
|
||||
/yaml/1.10.2:
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
import crypto from "crypto";
|
||||
|
||||
import * as jose from "jose";
|
||||
import type { Middleware } from "retes";
|
||||
import { Response } from "retes/response";
|
||||
|
||||
import { Response } from 'retes/response';
|
||||
|
||||
import * as Const from './const';
|
||||
import { SALEOR_DOMAIN_HEADER, SALEOR_EVENT_HEADER } from "./const";
|
||||
import { jwksUrl } from "./urls";
|
||||
|
||||
export const withBaseURL: Middleware = (handler) => async (request) => {
|
||||
const { host, "x-forwarded-proto": protocol = "http" } = request.headers;
|
||||
|
@ -11,33 +14,101 @@ export const withBaseURL: Middleware = (handler) => async (request) => {
|
|||
|
||||
const response = await handler(request);
|
||||
return response;
|
||||
}
|
||||
|
||||
export const withSaleorDomainPresent: Middleware = (handler) => async (request) => {
|
||||
const saleor_domain = request.headers[Const.SALEOR_DOMAIN_HEADER];
|
||||
|
||||
if (!saleor_domain) {
|
||||
return Response.BadRequest({ success: false, message: "Missing Saleor domain header." });
|
||||
}
|
||||
|
||||
return handler(request);
|
||||
};
|
||||
|
||||
export const withSaleorEventMatch = (expectedEvent: string): Middleware => (handler) => async (request) => {
|
||||
const receivedEvent = request.headers[Const.SALEOR_EVENT_HEADER];
|
||||
export const withSaleorDomainPresent: Middleware =
|
||||
(handler) => async (request) => {
|
||||
const saleor_domain = request.headers[SALEOR_DOMAIN_HEADER];
|
||||
|
||||
if (receivedEvent !== expectedEvent) {
|
||||
return Response.BadRequest({ success: false, message: "Invalid Saleor Event" });
|
||||
}
|
||||
if (!saleor_domain) {
|
||||
return Response.BadRequest({
|
||||
success: false,
|
||||
message: "Missing Saleor domain header.",
|
||||
});
|
||||
}
|
||||
|
||||
return handler(request);
|
||||
return handler(request);
|
||||
};
|
||||
|
||||
export const withSaleorEventMatch =
|
||||
(expectedEvent: string): Middleware =>
|
||||
(handler) =>
|
||||
async (request) => {
|
||||
const receivedEvent = request.headers[SALEOR_EVENT_HEADER];
|
||||
|
||||
if (receivedEvent !== expectedEvent) {
|
||||
return Response.BadRequest({
|
||||
success: false,
|
||||
message: "Invalid Saleor Event",
|
||||
});
|
||||
}
|
||||
|
||||
return handler(request);
|
||||
};
|
||||
|
||||
export const withAuthTokenRequired: Middleware =
|
||||
(handler) => async (request) => {
|
||||
const auth_token = request.params.auth_token;
|
||||
if (!auth_token) {
|
||||
return Response.BadRequest({
|
||||
success: false,
|
||||
message: "Missing auth token.",
|
||||
});
|
||||
}
|
||||
|
||||
return handler(request);
|
||||
};
|
||||
|
||||
export const withWebhookSignatureVerified = (
|
||||
secretKey: string | undefined = undefined
|
||||
): Middleware => {
|
||||
return (handler) => async (request) => {
|
||||
if (request.rawBody === undefined) {
|
||||
return Response.InternalServerError({
|
||||
success: false,
|
||||
message: "Request payload already parsed.",
|
||||
});
|
||||
}
|
||||
|
||||
const {
|
||||
[SALEOR_DOMAIN_HEADER]: saleorDomain,
|
||||
"saleor-signature": payloadSignature,
|
||||
} = request.headers;
|
||||
|
||||
if (secretKey !== undefined) {
|
||||
const calculatedSignature = crypto
|
||||
.createHmac("sha256", secretKey)
|
||||
.update(request.rawBody)
|
||||
.digest("hex");
|
||||
|
||||
if (calculatedSignature !== payloadSignature) {
|
||||
return Response.BadRequest({
|
||||
success: false,
|
||||
message: "Invalid signature.",
|
||||
});
|
||||
}
|
||||
} else {
|
||||
const [header, _, signature] = payloadSignature.split(".");
|
||||
const jws = {
|
||||
protected: header,
|
||||
payload: request.rawBody,
|
||||
signature,
|
||||
};
|
||||
|
||||
const jwksKey = await jose.createRemoteJWKSet(
|
||||
new URL(jwksUrl(saleorDomain))
|
||||
)(header, payloadSignature);
|
||||
|
||||
try {
|
||||
await jose.flattenedVerify(jws, jwksKey);
|
||||
} catch {
|
||||
return Response.BadRequest({
|
||||
success: false,
|
||||
message: "Invalid signature.",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return handler(request);
|
||||
};
|
||||
};
|
||||
|
||||
export const withAuthTokenRequired: Middleware = (handler) => async (request) => {
|
||||
const auth_token = request.params.auth_token;
|
||||
if (!auth_token) {
|
||||
return Response.BadRequest({ success: false, message: "Missing auth token." });
|
||||
}
|
||||
|
||||
return handler(request);
|
||||
};
|
8
src/urls.ts
Normal file
8
src/urls.ts
Normal file
|
@ -0,0 +1,8 @@
|
|||
const urlProtocol = (saleorDomain: string): string =>
|
||||
saleorDomain === "localhost:8000" ? "http" : "https";
|
||||
|
||||
export const jwksUrl = (saleorDomain: string): string =>
|
||||
`${urlProtocol(saleorDomain)}://${saleorDomain}/.well-known/jwks.json`;
|
||||
|
||||
export const graphQLUrl = (saleorDomain: string): string =>
|
||||
`${urlProtocol(saleorDomain)}://${saleorDomain}/graphql/`;
|
Loading…
Reference in a new issue