diff --git a/.gitignore b/.gitignore index 4238780..f303a98 100644 --- a/.gitignore +++ b/.gitignore @@ -169,3 +169,4 @@ dist # wrangler project .dev.vars +.wrangler diff --git a/package.json b/package.json index 7955f8b..9d57d93 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "render2", - "version": "1.3.0", + "version": "1.4.0", "author": "kotx", "description": "A Cloudflare worker for proxying readonly requests to Cloudflare R2", "license": "MIT", @@ -10,18 +10,18 @@ "dist" ], "scripts": { - "dev": "wrangler dev", + "dev": "wrangler dev --remote", "deploy": "wrangler publish", "prepublishOnly": "tsc" }, "devDependencies": { - "@cloudflare/workers-types": "^3.11.0", - "@types/range-parser": "^1.2.4", - "typescript": "^4.7.2", - "wrangler": "^2.20.0" + "@cloudflare/workers-types": "^4.20240117.0", + "@types/range-parser": "^1.2.7", + "typescript": "^5.3.3", + "wrangler": "^3.24.0" }, "dependencies": { "range-parser": "^1.2.1" }, - "packageManager": "pnpm@8.5.1" + "packageManager": "pnpm@8.14.3" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b87bee3..4bdaa68 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + dependencies: range-parser: specifier: ^1.2.1 @@ -7,17 +11,17 @@ dependencies: devDependencies: '@cloudflare/workers-types': - specifier: ^3.11.0 - version: 3.11.0 + specifier: ^4.20240117.0 + version: 4.20240117.0 '@types/range-parser': - specifier: ^1.2.4 - version: 1.2.4 + specifier: ^1.2.7 + version: 1.2.7 typescript: - specifier: ^4.7.2 - version: 4.7.2 + specifier: ^5.3.3 + version: 5.3.3 wrangler: - specifier: ^2.20.0 - version: 2.20.0 + specifier: ^3.24.0 + version: 3.24.0 packages: @@ -27,30 +31,82 @@ packages: mime: 3.0.0 dev: true - /@cloudflare/workers-types@3.11.0: - resolution: {integrity: sha512-XmKgZZHrCdPsoVQkdd365R7GvwTwDVJsMyEG3Dq/Tgxz6vgrps2c8PXBqEutguwvl0zDAF0AL0e2Z8WG9Dffjw==} + /@cloudflare/workerd-darwin-64@1.20231218.0: + resolution: {integrity: sha512-547gOmTIVmRdDy7HNAGJUPELa+fSDm2Y0OCxqAtQOz0GLTDu1vX61xYmsb2rn91+v3xW6eMttEIpbYokKjtfJA==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@cloudflare/workerd-darwin-arm64@1.20231218.0: + resolution: {integrity: sha512-b39qrU1bKolCfmKFDAnX4vXcqzISkEUVE/V8sMBsFzxrIpNAbcUHBZAQPYmS/OHIGB94KjOVokvDi7J6UNurPw==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@cloudflare/workerd-linux-64@1.20231218.0: + resolution: {integrity: sha512-dMUF1wA+0mybm6hHNOCgY/WMNMwomPPs4I7vvYCgwHSkch0Q2Wb7TnxQZSt8d1PK/myibaBwadrlIxpjxmpz3w==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@cloudflare/workerd-linux-arm64@1.20231218.0: + resolution: {integrity: sha512-2s5uc8IHt0QmWyKxAr1Fy+4b8Xy0b/oUtlPnm5MrKi2gDRlZzR7JvxENPJCpCnYENydS8lzvkMiAFECPBccmyQ==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@esbuild-plugins/node-globals-polyfill@0.1.1(esbuild@0.16.3): - resolution: {integrity: sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==} + /@cloudflare/workerd-windows-64@1.20231218.0: + resolution: {integrity: sha512-oN5hz6TXUDB5YKUN5N3QWAv6cYz9JjTZ9g16HVyoegVFEL6/zXU3tV19MBX2IvlE11ab/mRogEv9KXVIrHfKmA==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@cloudflare/workers-types@4.20240117.0: + resolution: {integrity: sha512-HQU8lJhaJVh8gQXFtVA7lZwd0hK1ckIFjRuxOXkVN2Z9t7DtzNbA2YTwBry5thKNgF5EwjN4THjHg5NUZzj05A==} + dev: true + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.17.19): + resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} peerDependencies: esbuild: '*' dependencies: - esbuild: 0.16.3 + esbuild: 0.17.19 dev: true - /@esbuild-plugins/node-modules-polyfill@0.1.4(esbuild@0.16.3): - resolution: {integrity: sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==} + /@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.17.19): + resolution: {integrity: sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==} peerDependencies: esbuild: '*' dependencies: - esbuild: 0.16.3 + esbuild: 0.17.19 escape-string-regexp: 4.0.0 rollup-plugin-node-polyfills: 0.2.1 dev: true - /@esbuild/android-arm64@0.16.3: - resolution: {integrity: sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==} + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -58,8 +114,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.16.3: - resolution: {integrity: sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA==} + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -67,8 +123,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.16.3: - resolution: {integrity: sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==} + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -76,8 +132,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.16.3: - resolution: {integrity: sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==} + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -85,8 +141,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.16.3: - resolution: {integrity: sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==} + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -94,8 +150,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.16.3: - resolution: {integrity: sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==} + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -103,8 +159,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.16.3: - resolution: {integrity: sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==} + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -112,8 +168,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.16.3: - resolution: {integrity: sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==} + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -121,8 +177,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.16.3: - resolution: {integrity: sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==} + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -130,8 +186,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.16.3: - resolution: {integrity: sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==} + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -139,8 +195,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.16.3: - resolution: {integrity: sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==} + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -148,8 +204,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.16.3: - resolution: {integrity: sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==} + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -157,8 +213,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.16.3: - resolution: {integrity: sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==} + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -166,8 +222,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.16.3: - resolution: {integrity: sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==} + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -175,8 +231,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.16.3: - resolution: {integrity: sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==} + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -184,8 +240,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.16.3: - resolution: {integrity: sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==} + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -193,8 +249,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.16.3: - resolution: {integrity: sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==} + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -202,8 +258,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.16.3: - resolution: {integrity: sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==} + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -211,8 +267,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.16.3: - resolution: {integrity: sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==} + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -220,8 +276,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.16.3: - resolution: {integrity: sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==} + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -229,8 +285,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.16.3: - resolution: {integrity: sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==} + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -238,8 +294,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.16.3: - resolution: {integrity: sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==} + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -247,205 +303,66 @@ packages: dev: true optional: true - /@iarna/toml@2.2.5: - resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} dev: true - /@miniflare/cache@2.13.0: - resolution: {integrity: sha512-y3SdN3SVyPECWmLAEGkkrv0RB+LugEPs/FeXn8QtN9aE1vyj69clOAgmsDzoh1DpFfFsLKRiv05aWs4m79P8Xw==} - engines: {node: '>=16.13'} - dependencies: - '@miniflare/core': 2.13.0 - '@miniflare/shared': 2.13.0 - http-cache-semantics: 4.1.0 - undici: 5.20.0 + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} dev: true - /@miniflare/cli-parser@2.13.0: - resolution: {integrity: sha512-Nx1PIfuMZ3mK9Dg/JojWZAjHR16h1pcdCFSqYln/ME7y5ifx+P1E5UkShWUQ1cBlibNaltjbJ2n/7stSAsIGPQ==} - engines: {node: '>=16.13'} - dependencies: - '@miniflare/shared': 2.13.0 - kleur: 4.1.4 + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true - /@miniflare/core@2.13.0: - resolution: {integrity: sha512-YJ/C0J3k+7xn4gvlMpvePnM3xC8nOnkweW96cc0IA8kJ1JSmScOO2tZ7rrU1RyDgp6StkAtQBw4yC0wYeFycBw==} - engines: {node: '>=16.13'} - dependencies: - '@iarna/toml': 2.2.5 - '@miniflare/queues': 2.13.0 - '@miniflare/shared': 2.13.0 - '@miniflare/watcher': 2.13.0 - busboy: 1.6.0 - dotenv: 10.0.0 - kleur: 4.1.4 - set-cookie-parser: 2.4.8 - undici: 5.20.0 - urlpattern-polyfill: 4.0.3 - dev: true - - /@miniflare/d1@2.13.0: - resolution: {integrity: sha512-OslqjO8iTcvzyrC0spByftMboRmHJEyHyTHnlKkjWDGdQQztEOjso2Xj+3I4SZIeUYvbzDRhKLS2QXI9a8LS5A==} - engines: {node: '>=16.7'} - dependencies: - '@miniflare/core': 2.13.0 - '@miniflare/shared': 2.13.0 - dev: true - - /@miniflare/durable-objects@2.13.0: - resolution: {integrity: sha512-CRGVBPO9vY4Fc3aV+pdPRVVeYIt64vQqvw+BJbyW+TQtqVP2CGQeziJGnCfcONNNKyooZxGyUkHewUypyH+Qhg==} - engines: {node: '>=16.13'} - dependencies: - '@miniflare/core': 2.13.0 - '@miniflare/shared': 2.13.0 - '@miniflare/storage-memory': 2.13.0 - undici: 5.20.0 - dev: true - - /@miniflare/html-rewriter@2.13.0: - resolution: {integrity: sha512-XhN7Icyzvtvu+o/A0hrnSiSmla78seCaNwQ9M1TDHxt352I/ahPX4wtPXs6GbKqY0/i+V6yoG2KGFRQ/j59cQQ==} - engines: {node: '>=16.13'} - dependencies: - '@miniflare/core': 2.13.0 - '@miniflare/shared': 2.13.0 - html-rewriter-wasm: 0.4.1 - undici: 5.20.0 - dev: true - - /@miniflare/http-server@2.13.0: - resolution: {integrity: sha512-aMS/nUMTKP15hKnyZboeuWCiqmNrrCu+XRBY/TxDDl07iXcLpiHGf3oVv+yXxXkWlJHJVCbK7i/nXSNPllRMSw==} - engines: {node: '>=16.13'} + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: - '@miniflare/core': 2.13.0 - '@miniflare/shared': 2.13.0 - '@miniflare/web-sockets': 2.13.0 - kleur: 4.1.4 - selfsigned: 2.0.1 - undici: 5.20.0 - ws: 8.6.0 - youch: 2.2.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@miniflare/kv@2.13.0: - resolution: {integrity: sha512-J0AS5x3g/YVOmHMxMAZs07nRXRvSo9jyuC0eikTBf+4AABvBIyvVYmdTjYNjCmr8O5smcfWBX5S27HelD3aAAQ==} - engines: {node: '>=16.13'} + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@miniflare/shared': 2.13.0 + '@types/node': 20.11.6 dev: true - /@miniflare/queues@2.13.0: - resolution: {integrity: sha512-Gf/a6M1mJL03iOvNqh3JNahcBfvEMPHnO28n0gkCoyYWGvddIr9lwCdFIa0qwNJsC1fIDRxhPg8PZ5cQLBMwRA==} - engines: {node: '>=16.7'} + /@types/node@20.11.6: + resolution: {integrity: sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q==} dependencies: - '@miniflare/shared': 2.13.0 + undici-types: 5.26.5 dev: true - /@miniflare/r2@2.13.0: - resolution: {integrity: sha512-/5k6GHOYMNV/oBtilV9HDXBkJUrx8oXVigG5vxbnzEGRXyVRmR+Glzu7mFT8JiE94XiEbXHk9Qvu1S5Dej3wBw==} - engines: {node: '>=16.13'} - dependencies: - '@miniflare/shared': 2.13.0 - undici: 5.20.0 + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} dev: true - /@miniflare/runner-vm@2.13.0: - resolution: {integrity: sha512-VmKtF2cA8HmTuLXor1THWY0v+DmaobPct63iLcgWIaUdP3MIvL+9X8HDXFAviCR7bCTe6MKxckHkaOj0IE0aJQ==} - engines: {node: '>=16.13'} - dependencies: - '@miniflare/shared': 2.13.0 + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} dev: true - /@miniflare/scheduler@2.13.0: - resolution: {integrity: sha512-AOaQanoR4NjVEzVGWHnrL15A7aMx+d9AKLJhSDF7KaP+4NrT2Wo2BQuXCpn5oStx3itOdlQpMfqQ139e/I8WhQ==} - engines: {node: '>=16.13'} - dependencies: - '@miniflare/core': 2.13.0 - '@miniflare/shared': 2.13.0 - cron-schedule: 3.0.6 + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true dev: true - /@miniflare/shared@2.13.0: - resolution: {integrity: sha512-m8YFQzKmbjberrV9hPzNcQjNCXxjTjXUpuNrIGjAJO7g+BDztUHaZbdd26H9maBDlkeiWxA3hf0mDyCT/6MCMA==} - engines: {node: '>=16.13'} + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: - '@types/better-sqlite3': 7.6.3 - kleur: 4.1.4 - npx-import: 1.1.4 + normalize-path: 3.0.0 picomatch: 2.3.1 dev: true - /@miniflare/sites@2.13.0: - resolution: {integrity: sha512-/tuzIu00o6CF2tkSv01q02MgEShXBSKx85h9jwWvc+6u7prGacAOer0FA1YNRFbE+t9QIfutAkoPGMA9zYf8+Q==} - engines: {node: '>=16.13'} - dependencies: - '@miniflare/kv': 2.13.0 - '@miniflare/shared': 2.13.0 - '@miniflare/storage-file': 2.13.0 - dev: true - - /@miniflare/storage-file@2.13.0: - resolution: {integrity: sha512-LuAeAAY5046rq5U1eFLVkz+ppiFEWytWacpkQw92DvVKFFquZcXSj6WPxZF4rSs23WDk+rdcwuLekbb52aDR7A==} - engines: {node: '>=16.13'} - dependencies: - '@miniflare/shared': 2.13.0 - '@miniflare/storage-memory': 2.13.0 - dev: true - - /@miniflare/storage-memory@2.13.0: - resolution: {integrity: sha512-FnkYcBNXa/ym1ksNilNZycg9WYYKo6cWKplVBeSthRon3e8QY6t3n7/XRseBUo7O6mhDybVTy4wNCP1R2nBiEw==} - engines: {node: '>=16.13'} + /as-table@1.0.55: + resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} dependencies: - '@miniflare/shared': 2.13.0 - dev: true - - /@miniflare/watcher@2.13.0: - resolution: {integrity: sha512-teAacWcpMStoBLbLae95IUaL5lPzjPlXa9lhK9CbRaio/KRMibTMRGWrYos3IVGQRZvklvLwcms/nTvgcdb6yw==} - engines: {node: '>=16.13'} - dependencies: - '@miniflare/shared': 2.13.0 - dev: true - - /@miniflare/web-sockets@2.13.0: - resolution: {integrity: sha512-+U2/HCf+BetRIgjAnNQjkuN6UeAjQmXifhQC+7CCaX834XJhrKXoR6z2xr2xkg1qj0qQs4D2jWG0KzrO5OUpug==} - engines: {node: '>=16.13'} - dependencies: - '@miniflare/core': 2.13.0 - '@miniflare/shared': 2.13.0 - undici: 5.20.0 - ws: 8.6.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true - - /@types/better-sqlite3@7.6.3: - resolution: {integrity: sha512-YS64N9SNDT/NAvou3QNdzAu3E2om/W/0dhORimtPGLef+zSK5l1vDzfsWb4xgXOgfhtOI5ZDTRxnvRPb22AIVQ==} - dependencies: - '@types/node': 18.11.18 - dev: true - - /@types/node@18.11.18: - resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} - dev: true - - /@types/range-parser@1.2.4: - resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - dev: true - - /@types/stack-trace@0.0.29: - resolution: {integrity: sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==} - dev: true - - /anymatch@3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 + printable-characters: 1.0.42 dev: true /binary-extensions@2.2.0: @@ -464,28 +381,20 @@ packages: fill-range: 7.0.1 dev: true - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - dependencies: - semver: 7.3.8 - dev: true - - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} + /capnp-ts@0.7.0: + resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} dependencies: - streamsearch: 1.1.0 + debug: 4.3.4 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color dev: true /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: - anymatch: 3.1.2 + anymatch: 3.1.3 braces: 3.0.2 glob-parent: 5.1.2 is-binary-path: 2.1.0 @@ -493,60 +402,58 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true - /cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} dev: true - /cron-schedule@3.0.6: - resolution: {integrity: sha512-izfGgKyzzIyLaeb1EtZ3KbglkS6AKp9cv7LxmiyoOu+fXfol1tQDC0Cof0enVZGNtudTHW+3lfuW9ZkLQss4Wg==} + /data-uri-to-buffer@2.0.2: + resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} dev: true - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /dotenv@10.0.0: - resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} - engines: {node: '>=10'} + ms: 2.1.2 dev: true - /esbuild@0.16.3: - resolution: {integrity: sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg==} + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.16.3 - '@esbuild/android-arm64': 0.16.3 - '@esbuild/android-x64': 0.16.3 - '@esbuild/darwin-arm64': 0.16.3 - '@esbuild/darwin-x64': 0.16.3 - '@esbuild/freebsd-arm64': 0.16.3 - '@esbuild/freebsd-x64': 0.16.3 - '@esbuild/linux-arm': 0.16.3 - '@esbuild/linux-arm64': 0.16.3 - '@esbuild/linux-ia32': 0.16.3 - '@esbuild/linux-loong64': 0.16.3 - '@esbuild/linux-mips64el': 0.16.3 - '@esbuild/linux-ppc64': 0.16.3 - '@esbuild/linux-riscv64': 0.16.3 - '@esbuild/linux-s390x': 0.16.3 - '@esbuild/linux-x64': 0.16.3 - '@esbuild/netbsd-x64': 0.16.3 - '@esbuild/openbsd-x64': 0.16.3 - '@esbuild/sunos-x64': 0.16.3 - '@esbuild/win32-arm64': 0.16.3 - '@esbuild/win32-ia32': 0.16.3 - '@esbuild/win32-x64': 0.16.3 + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 dev: true /escape-string-regexp@4.0.0: @@ -558,19 +465,9 @@ packages: resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} dev: true - /execa@6.1.0: - resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 3.0.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 + /exit-hook@2.2.1: + resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} + engines: {node: '>=6'} dev: true /fill-range@7.0.1: @@ -580,17 +477,23 @@ packages: to-regex-range: 5.0.1 dev: true - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true dev: true optional: true - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /get-source@2.0.12: + resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} + dependencies: + data-uri-to-buffer: 2.0.2 + source-map: 0.6.1 dev: true /glob-parent@5.1.2: @@ -600,17 +503,15 @@ packages: is-glob: 4.0.3 dev: true - /html-rewriter-wasm@0.4.1: - resolution: {integrity: sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q==} + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: true - /http-cache-semantics@4.1.0: - resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} - dev: true - - /human-signals@3.0.1: - resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} - engines: {node: '>=12.20.0'} + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 dev: true /is-binary-path@2.1.0: @@ -620,6 +521,12 @@ packages: binary-extensions: 2.2.0 dev: true + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -637,97 +544,52 @@ packages: engines: {node: '>=0.12.0'} dev: true - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /kleur@4.1.4: - resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} - engines: {node: '>=6'} - dev: true - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - /magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 dev: true - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - /mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} hasBin: true dev: true - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - - /miniflare@2.13.0: - resolution: {integrity: sha512-ayNhVa4a6bZiOuHtrPmOt4BCYcmW1fBQ/+qGL85smq1m2OBBm3aUs6f4ISf38xH8tk+qewgmAywetyVtn6KHPw==} + /miniflare@3.20231218.3: + resolution: {integrity: sha512-OrPBYWO0WnFv6DrxZ7hF8f5agZ4+xo/2qSLE0wwCJSqlFhr91dfSJautxfCOBD896nAA7Jqr5LBPEnqq3/k/JQ==} engines: {node: '>=16.13'} hasBin: true - peerDependencies: - '@miniflare/storage-redis': 2.13.0 - cron-schedule: ^3.0.4 - ioredis: ^4.27.9 - peerDependenciesMeta: - '@miniflare/storage-redis': - optional: true - cron-schedule: - optional: true - ioredis: - optional: true dependencies: - '@miniflare/cache': 2.13.0 - '@miniflare/cli-parser': 2.13.0 - '@miniflare/core': 2.13.0 - '@miniflare/d1': 2.13.0 - '@miniflare/durable-objects': 2.13.0 - '@miniflare/html-rewriter': 2.13.0 - '@miniflare/http-server': 2.13.0 - '@miniflare/kv': 2.13.0 - '@miniflare/queues': 2.13.0 - '@miniflare/r2': 2.13.0 - '@miniflare/runner-vm': 2.13.0 - '@miniflare/scheduler': 2.13.0 - '@miniflare/shared': 2.13.0 - '@miniflare/sites': 2.13.0 - '@miniflare/storage-file': 2.13.0 - '@miniflare/storage-memory': 2.13.0 - '@miniflare/web-sockets': 2.13.0 - kleur: 4.1.4 - semiver: 1.1.0 - source-map-support: 0.5.21 - undici: 5.20.0 + '@cspotcode/source-map-support': 0.8.1 + acorn: 8.11.3 + acorn-walk: 8.3.2 + capnp-ts: 0.7.0 + exit-hook: 2.2.1 + glob-to-regexp: 0.4.1 + stoppable: 1.1.0 + undici: 5.28.2 + workerd: 1.20231218.0 + ws: 8.16.0 + youch: 3.3.3 + zod: 3.22.4 transitivePeerDependencies: - bufferutil + - supports-color - utf-8-validate dev: true + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + /mustache@4.2.0: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true dev: true - /nanoid@3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true @@ -742,41 +604,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: true - - /npx-import@1.1.4: - resolution: {integrity: sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==} - dependencies: - execa: 6.1.0 - parse-package-name: 1.0.0 - semver: 7.3.8 - validate-npm-package-name: 4.0.0 - dev: true - - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: true - - /parse-package-name@1.0.0: - resolution: {integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==} - dev: true - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true /path-to-regexp@6.2.1: @@ -788,6 +617,10 @@ packages: engines: {node: '>=8.6'} dev: true + /printable-characters@1.0.42: + resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} + dev: true + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -800,6 +633,20 @@ packages: picomatch: 2.3.1 dev: true + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + /rollup-plugin-inject@3.0.2: resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. @@ -821,80 +668,39 @@ packages: estree-walker: 0.6.1 dev: true - /selfsigned@2.0.1: - resolution: {integrity: sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==} + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} dependencies: + '@types/node-forge': 1.3.11 node-forge: 1.3.1 dev: true - /semiver@1.1.0: - resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} - engines: {node: '>=6'} - dev: true - - /semver@7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /set-cookie-parser@2.4.8: - resolution: {integrity: sha512-edRH8mBKEWNVIVMKejNnuJxleqYE/ZSdcT8/Nem9/mmosx12pctd80s2Oy00KNZzrogMZS5mauK2/ymL1bvlvg==} - dev: true - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: true - /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead dev: true - /stack-trace@0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + /stacktracey@2.1.8: + resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} + dependencies: + as-table: 1.0.55 + get-source: 2.0.12 dev: true - /streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} + /stoppable@1.1.0: + resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} + engines: {node: '>=4', npm: '>=6'} dev: true - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} dev: true /to-regex-range@5.0.1: @@ -904,74 +710,73 @@ packages: is-number: 7.0.0 dev: true - /typescript@4.7.2: - resolution: {integrity: sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==} - engines: {node: '>=4.2.0'} - hasBin: true + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true - /undici@5.20.0: - resolution: {integrity: sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==} - engines: {node: '>=12.18'} - dependencies: - busboy: 1.6.0 + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true dev: true - /urlpattern-polyfill@4.0.3: - resolution: {integrity: sha512-DOE84vZT2fEcl9gqCUTcnAw5ZY5Id55ikUcziSUntuEFL3pRvavg5kwDmTEUJkeCHInTlV/HexFomgYnzO5kdQ==} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true - /validate-npm-package-name@4.0.0: - resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /undici@5.28.2: + resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} + engines: {node: '>=14.0'} dependencies: - builtins: 5.0.1 + '@fastify/busboy': 2.1.0 dev: true - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} + /workerd@1.20231218.0: + resolution: {integrity: sha512-AGIsDvqCrcwhoA9kb1hxOhVAe53/xJeaGZxL4FbYI9FvO17DZwrnqGq+6eqItJ6Cfw1ZLmf3BM+QdMWaL2bFWQ==} + engines: {node: '>=16'} hasBin: true - dependencies: - isexe: 2.0.0 + requiresBuild: true + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20231218.0 + '@cloudflare/workerd-darwin-arm64': 1.20231218.0 + '@cloudflare/workerd-linux-64': 1.20231218.0 + '@cloudflare/workerd-linux-arm64': 1.20231218.0 + '@cloudflare/workerd-windows-64': 1.20231218.0 dev: true - /wrangler@2.20.0: - resolution: {integrity: sha512-UdKJ2LD7qgDxDvll/GkR1HnRP+bcEdqi/HJjDI+7eF4lv9V940jmm3orxCkSEosGyE14q0q6dBRM95+fBI8tdQ==} - engines: {node: '>=16.13.0'} + /wrangler@3.24.0: + resolution: {integrity: sha512-jEnqpY+9/J4VPjtuEnS2lhCPXkvbDClnMalSWaRxSx+1tiTWMJhMjtK9oyXLdO+ZUf9Q4LvFTYSPm8O1uwmnxQ==} + engines: {node: '>=16.17.0'} hasBin: true dependencies: '@cloudflare/kv-asset-handler': 0.2.0 - '@esbuild-plugins/node-globals-polyfill': 0.1.1(esbuild@0.16.3) - '@esbuild-plugins/node-modules-polyfill': 0.1.4(esbuild@0.16.3) - '@miniflare/core': 2.13.0 - '@miniflare/d1': 2.13.0 - '@miniflare/durable-objects': 2.13.0 + '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) + '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) blake3-wasm: 2.1.5 chokidar: 3.5.3 - esbuild: 0.16.3 - miniflare: 2.13.0 - nanoid: 3.3.4 + esbuild: 0.17.19 + miniflare: 3.20231218.3 + nanoid: 3.3.7 path-to-regexp: 6.2.1 - selfsigned: 2.0.1 - source-map: 0.7.4 - xxhash-wasm: 1.0.1 + resolve: 1.22.8 + resolve.exports: 2.0.2 + selfsigned: 2.4.1 + source-map: 0.6.1 + xxhash-wasm: 1.0.2 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 transitivePeerDependencies: - - '@miniflare/storage-redis' - bufferutil - - cron-schedule - - ioredis + - supports-color - utf-8-validate dev: true - /ws@8.6.0: - resolution: {integrity: sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==} + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true @@ -979,19 +784,18 @@ packages: optional: true dev: true - /xxhash-wasm@1.0.1: - resolution: {integrity: sha512-Lc9CTvDrH2vRoiaUzz25q7lRaviMhz90pkx6YxR9EPYtF99yOJnv2cB+CQ0hp/TLoqrUsk8z/W2EN31T568Azw==} - dev: true - - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + /xxhash-wasm@1.0.2: + resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} dev: true - /youch@2.2.2: - resolution: {integrity: sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==} + /youch@3.3.3: + resolution: {integrity: sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==} dependencies: - '@types/stack-trace': 0.0.29 - cookie: 0.4.2 + cookie: 0.5.0 mustache: 4.2.0 - stack-trace: 0.0.10 + stacktracey: 2.1.8 + dev: true + + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: true diff --git a/src/index.ts b/src/index.ts index 5beed31..aa1ea5d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,24 +1,27 @@ import parseRange from "range-parser"; export interface Env { - R2_BUCKET: R2Bucket, - ALLOWED_ORIGINS?: string, - CACHE_CONTROL?: string, - PATH_PREFIX?: string - INDEX_FILE?: string - NOTFOUND_FILE?: string - DIRECTORY_LISTING?: boolean - HIDE_HIDDEN_FILES?: boolean - DIRECTORY_CACHE_CONTROL?: string - LOGGING?: boolean + R2_BUCKET: R2Bucket; + ALLOWED_ORIGINS?: string; + CACHE_CONTROL?: string; + PATH_PREFIX?: string; + INDEX_FILE?: string; + NOTFOUND_FILE?: string; + DIRECTORY_LISTING?: boolean; + ITEMS_PER_PAGE?: number; + HIDE_HIDDEN_FILES?: boolean; + DIRECTORY_CACHE_CONTROL?: string; + LOGGING?: boolean; } -const units = ['B', 'KB', 'MB', 'GB', 'TB']; +const units = ["B", "KB", "MB", "GB", "TB"]; -type ParsedRange = { offset: number, length: number } | { suffix: number }; +type ParsedRange = { offset: number; length: number } | { suffix: number }; -function rangeHasLength(object: ParsedRange): object is { offset: number, length: number } { - return (<{ offset: number, length: number }>object).length !== undefined; +function rangeHasLength( + object: ParsedRange +): object is { offset: number; length: number } { + return (<{ offset: number; length: number }>object).length !== undefined; } function hasBody(object: R2Object | R2ObjectBody): object is R2ObjectBody { @@ -30,19 +33,29 @@ function hasSuffix(range: ParsedRange): range is { suffix: number } { } function getRangeHeader(range: ParsedRange, fileSize: number): string { - return `bytes ${hasSuffix(range) ? (fileSize - range.suffix) : range.offset}-${hasSuffix(range) ? fileSize - 1 : - (range.offset + range.length - 1)}/${fileSize}`; + return `bytes ${hasSuffix(range) ? fileSize - range.suffix : range.offset}-${ + hasSuffix(range) ? fileSize - 1 : range.offset + range.length - 1 + }/${fileSize}`; } // some ideas for this were taken from / inspired by // https://github.com/cloudflare/workerd/blob/main/samples/static-files-from-disk/static.js -async function makeListingResponse(path: string, env: Env, request: Request): Promise { - if (path === "/") - path = "" +async function makeListingResponse( + path: string, + env: Env, + request: Request +): Promise { + if (path === "/") path = ""; else if (path !== "" && !path.endsWith("/")) { path += "/"; } - let listing = await env.R2_BUCKET.list({ prefix: path, delimiter: '/' }) + let cursor = new URL(request.url).searchParams.get("cursor") || undefined; + let listing = await env.R2_BUCKET.list({ + prefix: path, + delimiter: "/", + cursor, + limit: env.ITEMS_PER_PAGE || 1000, + }); if (listing.delimitedPrefixes.length === 0 && listing.objects.length === 0) { return null; @@ -57,36 +70,46 @@ async function makeListingResponse(path: string, env: Env, request: Request): Pr if (path !== "") { htmlList.push( ` ` + - `../` + - `--`); + `../` + + `--` + ); } for (let dir of listing.delimitedPrefixes) { - if (dir.endsWith("/")) dir = dir.substring(0, dir.length - 1) - let name = dir.substring(path.length, dir.length) + if (dir.endsWith("/")) dir = dir.substring(0, dir.length - 1); + let name = dir.substring(path.length, dir.length); if (name.startsWith(".") && env.HIDE_HIDDEN_FILES) continue; htmlList.push( ` ` + - `${name}/` + - `--`); + `${name}/` + + `--` + ); } for (let file of listing.objects) { - let name = file.key.substring(path.length, file.key.length) + let name = file.key.substring(path.length, file.key.length); if (name.startsWith(".") && env.HIDE_HIDDEN_FILES) continue; - let dateStr = file.uploaded.toISOString() - dateStr = dateStr.split('.')[0].replace('T', ' ') - dateStr = dateStr.slice(0, dateStr.lastIndexOf(':')) + 'Z' + let dateStr = file.uploaded.toISOString(); + dateStr = dateStr.split(".")[0].replace("T", " "); + dateStr = dateStr.slice(0, dateStr.lastIndexOf(":")) + "Z"; htmlList.push( ` ` + - `${name}` + - `${dateStr}${niceBytes(file.size)}`); + `${name}` + + `${dateStr}${niceBytes(file.size)}` + ); if (lastModified == null || file.uploaded > lastModified) { lastModified = file.uploaded; } + } + if (listing.truncated) { + htmlList.push( + ` ` + + `...see more.../` + + `--` + ); } if (path === "") path = "/"; @@ -124,8 +147,8 @@ ${htmlList.join("\n")} - ` - }; + `; + } return new Response(html === "" ? null : html, { status: 200, @@ -133,27 +156,36 @@ ${htmlList.join("\n")} "access-control-allow-origin": env.ALLOWED_ORIGINS || "", "last-modified": lastModified === null ? "" : lastModified.toUTCString(), "content-type": "text/html", - "cache-control": env.DIRECTORY_CACHE_CONTROL || "no-store" - } + "cache-control": env.DIRECTORY_CACHE_CONTROL || "no-store", + }, }); } export default { - async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise { + async fetch( + request: Request, + env: Env, + ctx: ExecutionContext + ): Promise { const allowedMethods = ["GET", "HEAD", "OPTIONS"]; if (allowedMethods.indexOf(request.method) === -1) { - return new Response("Method Not Allowed", { status: 405, headers: { "allow": allowedMethods.join(", ") } }); + return new Response("Method Not Allowed", { + status: 405, + headers: { allow: allowedMethods.join(", ") }, + }); } if (request.method === "OPTIONS") { - return new Response(null, { headers: { "allow": allowedMethods.join(", ") } }) + return new Response(null, { + headers: { allow: allowedMethods.join(", ") }, + }); } let triedIndex = false; let response: Response | undefined; - const isCachingEnabled = env.CACHE_CONTROL !== "no-store" + const isCachingEnabled = env.CACHE_CONTROL !== "no-store"; const cache = caches.default; if (isCachingEnabled) { response = await cache.match(request); @@ -199,15 +231,24 @@ export default { const rangeHeader = request.headers.get("range"); if (rangeHeader) { file = await env.R2_BUCKET.head(path); - if (file === null) return new Response("File Not Found", { status: 404 }); + if (file === null) + return new Response("File Not Found", { status: 404 }); const parsedRanges = parseRange(file.size, rangeHeader); // R2 only supports 1 range at the moment, reject if there is more than one - if (parsedRanges !== -1 && parsedRanges !== -2 && parsedRanges.length === 1 && parsedRanges.type === "bytes") { + if ( + parsedRanges !== -1 && + parsedRanges !== -2 && + parsedRanges.length === 1 && + parsedRanges.type === "bytes" + ) { let firstRange = parsedRanges[0]; - range = file.size === (firstRange.end + 1) ? { suffix: file.size - firstRange.start } : { - offset: firstRange.start, - length: firstRange.end - firstRange.start + 1 - }; + range = + file.size === firstRange.end + 1 + ? { suffix: file.size - firstRange.start } + : { + offset: firstRange.start, + length: firstRange.end - firstRange.start + 1, + }; } else { return new Response("Range Not Satisfiable", { status: 416 }); } @@ -217,12 +258,17 @@ export default { // Etag/If-(Not)-Match handling // R2 requires that etag checks must not contain quotes, and the S3 spec only allows one etag // This silently ignores invalid or weak (W/) headers - const getHeaderEtag = (header: string | null) => header?.trim().replace(/^['"]|['"]$/g, ""); + const getHeaderEtag = (header: string | null) => + header?.trim().replace(/^['"]|['"]$/g, ""); const ifMatch = getHeaderEtag(request.headers.get("if-match")); const ifNoneMatch = getHeaderEtag(request.headers.get("if-none-match")); - const ifModifiedSince = Date.parse(request.headers.get("if-modified-since") || ""); - const ifUnmodifiedSince = Date.parse(request.headers.get("if-unmodified-since") || ""); + const ifModifiedSince = Date.parse( + request.headers.get("if-modified-since") || "" + ); + const ifUnmodifiedSince = Date.parse( + request.headers.get("if-unmodified-since") || "" + ); const ifRange = request.headers.get("if-range"); if (range && ifRange && file) { @@ -230,7 +276,8 @@ export default { if (isNaN(maybeDate) || new Date(maybeDate) > file.uploaded) { // httpEtag already has quotes, no need to use getHeaderEtag - if (ifRange.startsWith("W/") || ifRange !== file.httpEtag) range = undefined; + if (ifRange.startsWith("W/") || ifRange !== file.httpEtag) + range = undefined; } } @@ -238,8 +285,11 @@ export default { file = await env.R2_BUCKET.get(path, { onlyIf: { etagMatches: ifMatch, - uploadedBefore: ifUnmodifiedSince ? new Date(ifUnmodifiedSince) : undefined - }, range + uploadedBefore: ifUnmodifiedSince + ? new Date(ifUnmodifiedSince) + : undefined, + }, + range, }); if (file && !hasBody(file)) { @@ -250,25 +300,34 @@ export default { if (ifNoneMatch || ifModifiedSince) { // if-none-match overrides if-modified-since completely if (ifNoneMatch) { - file = await env.R2_BUCKET.get(path, { onlyIf: { etagDoesNotMatch: ifNoneMatch }, range }); + file = await env.R2_BUCKET.get(path, { + onlyIf: { etagDoesNotMatch: ifNoneMatch }, + range, + }); } else if (ifModifiedSince) { - file = await env.R2_BUCKET.get(path, { onlyIf: { uploadedAfter: new Date(ifModifiedSince) }, range }); + file = await env.R2_BUCKET.get(path, { + onlyIf: { uploadedAfter: new Date(ifModifiedSince) }, + range, + }); } if (file && !hasBody(file)) { return new Response(null, { status: 304 }); } } - file = request.method === "HEAD" - ? await env.R2_BUCKET.head(path) - : ((file && hasBody(file)) ? file : await env.R2_BUCKET.get(path, { range })); + file = + request.method === "HEAD" + ? await env.R2_BUCKET.head(path) + : file && hasBody(file) + ? file + : await env.R2_BUCKET.get(path, { range }); let notFound: boolean = false; if (file === null) { if (env.INDEX_FILE && triedIndex) { // remove the index file since it doesnt exist - path = path.substring(0, path.length - env.INDEX_FILE.length) + path = path.substring(0, path.length - env.INDEX_FILE.length); } if (env.DIRECTORY_LISTING && (path.endsWith("/") || path === "")) { @@ -286,9 +345,10 @@ export default { if (env.NOTFOUND_FILE && env.NOTFOUND_FILE != "") { notFound = true; path = env.NOTFOUND_FILE; - file = request.method === "HEAD" - ? await env.R2_BUCKET.head(path) - : await env.R2_BUCKET.get(path); + file = + request.method === "HEAD" + ? await env.R2_BUCKET.head(path) + : await env.R2_BUCKET.get(path); } // if its still null, either 404 is disabled or that file wasn't found either @@ -298,26 +358,38 @@ export default { } } - response = new Response((hasBody(file) && file.size !== 0) ? file.body : null, { - status: notFound ? 404 : (range ? 206 : 200), - headers: { - "accept-ranges": "bytes", - "access-control-allow-origin": env.ALLOWED_ORIGINS || "", - - "etag": notFound ? "" : file.httpEtag, - // if the 404 file has a custom cache control, we respect it - "cache-control": file.httpMetadata?.cacheControl ?? (notFound ? "" : env.CACHE_CONTROL || ""), - "expires": file.httpMetadata?.cacheExpiry?.toUTCString() ?? "", - "last-modified": notFound ? "" : file.uploaded.toUTCString(), - - "content-encoding": file.httpMetadata?.contentEncoding ?? "", - "content-type": file.httpMetadata?.contentType ?? "application/octet-stream", - "content-language": file.httpMetadata?.contentLanguage ?? "", - "content-disposition": file.httpMetadata?.contentDisposition ?? "", - "content-range": (range && !notFound ? getRangeHeader(range, file.size) : ""), - "content-length": (range && !notFound ? (rangeHasLength(range) ? range.length : range.suffix) : file.size).toString() + response = new Response( + hasBody(file) && file.size !== 0 ? file.body : null, + { + status: notFound ? 404 : range ? 206 : 200, + headers: { + "accept-ranges": "bytes", + "access-control-allow-origin": env.ALLOWED_ORIGINS || "", + + etag: notFound ? "" : file.httpEtag, + // if the 404 file has a custom cache control, we respect it + "cache-control": + file.httpMetadata?.cacheControl ?? + (notFound ? "" : env.CACHE_CONTROL || ""), + expires: file.httpMetadata?.cacheExpiry?.toUTCString() ?? "", + "last-modified": notFound ? "" : file.uploaded.toUTCString(), + + "content-encoding": file.httpMetadata?.contentEncoding ?? "", + "content-type": + file.httpMetadata?.contentType ?? "application/octet-stream", + "content-language": file.httpMetadata?.contentLanguage ?? "", + "content-disposition": file.httpMetadata?.contentDisposition ?? "", + "content-range": + range && !notFound ? getRangeHeader(range, file.size) : "", + "content-length": (range && !notFound + ? rangeHasLength(range) + ? range.length + : range.suffix + : file.size + ).toString(), + }, } - }); + ); if (request.method === "GET" && !range && isCachingEnabled && !notFound) ctx.waitUntil(cache.put(request, response.clone())); @@ -332,12 +404,12 @@ export default { }; function niceBytes(x: number) { - - let l = 0, n = parseInt(x.toString(), 10) || 0; + let l = 0, + n = parseInt(x.toString(), 10) || 0; while (n >= 1000 && ++l) { n = n / 1000; } - return (n.toFixed(n < 10 && l > 0 ? 1 : 0) + ' ' + units[l]); + return n.toFixed(n < 10 && l > 0 ? 1 : 0) + " " + units[l]; } diff --git a/wrangler.toml b/wrangler.toml index 7bd3ac4..4c4b4f4 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -34,6 +34,11 @@ NOTFOUND_FILE = "" # If INDEX_FILE is also provided, it will be used instead if the file exists. DIRECTORY_LISTING = false +# The number of items to show per page in directory listings. +# Listings may also return less if the listing API call reaches a size limit. +# Maximum of 1000. +ITEMS_PER_PAGE = 1000 + # Enable to hide files or directories beginning with . from directory listings. HIDE_HIDDEN_FILES = false