From 05052cda5f9db92cfb4a934ee55e8c8ee6cfe875 Mon Sep 17 00:00:00 2001 From: WhyK Date: Mon, 23 Sep 2024 10:51:49 +0900 Subject: [PATCH] feat: add handlers and read env --- .example.dev.vars | 8 + README.md | 1 + package.json | 7 +- pnpm-lock.yaml | 400 ++++++++++++++++++++++++++++++++------ src/handlers/index.ts | 52 +++++ src/index.test.ts | 72 +++++-- src/index.ts | 41 ++-- src/middlewares/config.ts | 22 +++ src/types.ts | 22 +++ vitest.config.ts | 13 ++ wrangler.toml | 2 +- 11 files changed, 531 insertions(+), 109 deletions(-) create mode 100644 .example.dev.vars create mode 100644 src/handlers/index.ts create mode 100644 src/middlewares/config.ts create mode 100644 src/types.ts create mode 100644 vitest.config.ts diff --git a/.example.dev.vars b/.example.dev.vars new file mode 100644 index 0000000..cc2355f --- /dev/null +++ b/.example.dev.vars @@ -0,0 +1,8 @@ +DEVELOP = "1" +X_API_KEY = "Example_0000" +DB_HOST = "" +DB_USERNAME = "" +DEV_DB_USERNAME = "" +DB_PASSWORD = "" +DEV_DB_PASSWORD = "" +DB_NAME = "" \ No newline at end of file diff --git a/README.md b/README.md index f416457..968bda2 100644 --- a/README.md +++ b/README.md @@ -35,3 +35,4 @@ Cloudflare Workers以前では正常に反映されていたため、Cloudflare - [Web標準のバックエンドアプリのテスト](https://zenn.dev/yusukebe/articles/9a6335ed793c43#hono%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%83%86%E3%82%B9%E3%83%88) - [How to run the Node built-in testrunner for TypeScript files inside a specific directory? · Issue #3902 · nodejs/help](https://github.com/nodejs/help/issues/3902) - [Factory Helper - Hono](https://hono.dev/docs/helpers/factory#createmiddleware) +- [Vitest integration | Cloudflare Workers docs](https://developers.cloudflare.com/workers/testing/vitest-integration/) diff --git a/package.json b/package.json index dd5db7d..12e1189 100644 --- a/package.json +++ b/package.json @@ -12,12 +12,13 @@ }, "packageManager": "pnpm@9.4.0", "dependencies": { - "hono": "^4.6.1", - "vitest": "^2.1.1" + "hono": "^4.6.1" }, "devDependencies": { "@biomejs/biome": "^1.8.3", + "@cloudflare/vitest-pool-workers": "^0.5.2", "@cloudflare/workers-types": "^4.20240529.0", - "wrangler": "^3.57.2" + "vitest": "^2.0.5", + "wrangler": "^3.78.7" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 41b7c5c..6f39a0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,22 +11,29 @@ importers: hono: specifier: ^4.6.1 version: 4.6.1 - vitest: - specifier: ^2.1.1 - version: 2.1.1(@types/node@20.16.0) devDependencies: '@biomejs/biome': specifier: ^1.8.3 version: 1.9.0 + '@cloudflare/vitest-pool-workers': + specifier: ^0.5.2 + version: 0.5.2(@cloudflare/workers-types@4.20240909.0)(@vitest/runner@2.1.1)(@vitest/snapshot@2.1.1)(vitest@2.0.5(@types/node@20.16.0)) '@cloudflare/workers-types': specifier: ^4.20240529.0 version: 4.20240909.0 + vitest: + specifier: ^2.0.5 + version: 2.0.5(@types/node@20.16.0) wrangler: - specifier: ^3.57.2 - version: 3.78.2(@cloudflare/workers-types@4.20240909.0) + specifier: ^3.78.7 + version: 3.78.7(@cloudflare/workers-types@4.20240909.0) packages: + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + '@biomejs/biome@1.9.0': resolution: {integrity: sha512-NlWh2F1wbxB3O/wE+aohGL0BziTS6e+6+dyFvpdeqLsbQZY7EsiklFb9W5Xs41U4vEmY7ANgdNp+oVDij6sQdA==} engines: {node: '>=14.21.3'} @@ -84,6 +91,13 @@ packages: resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} engines: {node: '>=16.13'} + '@cloudflare/vitest-pool-workers@0.5.2': + resolution: {integrity: sha512-4VuIRDBQ1FJcFjoDYxlOPDeNtxYYjtz2TMPkm9bKnCssf+7K71VVuwkbV31PmLOclaenFcSLuyvygVXtZ9DgtA==} + peerDependencies: + '@vitest/runner': 2.0.x + '@vitest/snapshot': 2.0.x + vitest: 2.0.x + '@cloudflare/workerd-darwin-64@1.20240909.0': resolution: {integrity: sha512-nJ8jm/6PR8DPzVb4QifNAfSdrFZXNblwIdOhLTU5FpSvFFocmzFX5WgzQagvtmcC9/ZAQyxuf7WynDNyBcoe0Q==} engines: {node: '>=16'} @@ -409,13 +423,24 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -508,32 +533,32 @@ packages: '@types/node@20.16.0': resolution: {integrity: sha512-vDxceJcoZhIVh67S568bm1UGZO0DX0hpplJZxzeXMKwIPLn190ec5RRxQ69BKhX44SUGIxxgMdDY557lGLKprQ==} - '@vitest/expect@2.1.1': - resolution: {integrity: sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==} + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - '@vitest/mocker@2.1.1': - resolution: {integrity: sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==} - peerDependencies: - '@vitest/spy': 2.1.1 - msw: ^2.3.5 - vite: ^5.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} '@vitest/pretty-format@2.1.1': resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} + '@vitest/runner@2.0.5': + resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==} + '@vitest/runner@2.1.1': resolution: {integrity: sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==} + '@vitest/snapshot@2.0.5': + resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==} + '@vitest/snapshot@2.1.1': resolution: {integrity: sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==} - '@vitest/spy@2.1.1': - resolution: {integrity: sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==} + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} '@vitest/utils@2.1.1': resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} @@ -562,6 +587,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + birpc@0.2.14: + resolution: {integrity: sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==} + blake3-wasm@2.1.5: resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} @@ -588,10 +616,17 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + cjs-module-lexer@1.4.1: + resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + data-uri-to-buffer@2.0.2: resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} @@ -614,6 +649,9 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + devalue@4.3.3: + resolution: {integrity: sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg==} + esbuild@0.17.19: resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} engines: {node: '>=12'} @@ -634,6 +672,10 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + exit-hook@2.2.1: resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} engines: {node: '>=6'} @@ -656,6 +698,10 @@ packages: get-source@2.0.12: resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -671,6 +717,10 @@ packages: resolution: {integrity: sha512-6NGwvttY1+HAFii08VYiEKI6ETPAFbpLntpm2M/MogEsAFWdZV74UNT+2M4bmqX90cIQhjlpBSP+tO+CfB0uww==} engines: {node: '>=16.0.0'} + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -691,6 +741,13 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + loupe@3.1.1: resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} @@ -700,16 +757,28 @@ packages: magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} hasBin: true + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + miniflare@3.20240909.1: resolution: {integrity: sha512-tdzJFApHmqFYlpjfpqBDnsE6dHUDLHejBrNgXftLfTf/ni5NySgXKnuntCCMdRtnTpjUKmkHiusGrBCf9b1rnA==} engines: {node: '>=16.13'} hasBin: true + miniflare@3.20240909.4: + resolution: {integrity: sha512-uiMjmv9vYIMgUn5PovS/2XzvnSgm04GxtoreNb7qiaDdp1YMhPPtnmV+EKOKyPSlVc7fCt/glzqSX9atUBXa2A==} + engines: {node: '>=16.13'} + hasBin: true + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -730,8 +799,24 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - ohash@1.1.3: - resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + ohash@1.1.4: + resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + 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==} @@ -791,9 +876,26 @@ packages: resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -819,6 +921,10 @@ packages: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} + 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'} @@ -826,9 +932,6 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.0: - resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} - tinypool@1.0.1: resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -861,8 +964,11 @@ packages: unenv-nightly@2.0.0-1724863496.70db6f1: resolution: {integrity: sha512-r+VIl1gnsI4WQxluruSQhy8alpAf1AsLRLm4sEKp3otCyTIVD6I6wHEYzeQnwsyWgaD4+3BD4A/eqrgOpdTzhw==} - vite-node@2.1.1: - resolution: {integrity: sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==} + unenv-nightly@2.0.0-20240919-125358-9a64854: + resolution: {integrity: sha512-XjsgUTrTHR7iw+k/SRTNjh6EQgwpC9voygnoCJo5kh4hKqsSDHUW84MhL9EsHTNfLctvVBHaSw8e2k3R2fKXsQ==} + + vite-node@2.0.5: + resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -897,15 +1003,15 @@ packages: terser: optional: true - vitest@2.1.1: - resolution: {integrity: sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==} + vitest@2.0.5: + resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.1 - '@vitest/ui': 2.1.1 + '@vitest/browser': 2.0.5 + '@vitest/ui': 2.0.5 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -922,6 +1028,11 @@ packages: jsdom: optional: true + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -942,6 +1053,16 @@ packages: '@cloudflare/workers-types': optional: true + wrangler@3.78.7: + resolution: {integrity: sha512-z2ubdgQZ8lh2TEpvihFQOu3HmCNus78sC1LMBiSmgv133i4DeUMuz6SJglles2LayJAKrusjTqFnDYecA2XDDg==} + engines: {node: '>=16.17.0'} + hasBin: true + peerDependencies: + '@cloudflare/workers-types': ^4.20240909.0 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true + ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} @@ -965,6 +1086,11 @@ packages: snapshots: + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + '@biomejs/biome@1.9.0': optionalDependencies: '@biomejs/cli-darwin-arm64': 1.9.0 @@ -1004,6 +1130,25 @@ snapshots: dependencies: mime: 3.0.0 + '@cloudflare/vitest-pool-workers@0.5.2(@cloudflare/workers-types@4.20240909.0)(@vitest/runner@2.1.1)(@vitest/snapshot@2.1.1)(vitest@2.0.5(@types/node@20.16.0))': + dependencies: + '@vitest/runner': 2.1.1 + '@vitest/snapshot': 2.1.1 + birpc: 0.2.14 + cjs-module-lexer: 1.4.1 + devalue: 4.3.3 + esbuild: 0.17.19 + miniflare: 3.20240909.1 + semver: 7.6.3 + vitest: 2.0.5(@types/node@20.16.0) + wrangler: 3.78.2(@cloudflare/workers-types@4.20240909.0) + zod: 3.23.8 + transitivePeerDependencies: + - '@cloudflare/workers-types' + - bufferutil + - supports-color + - utf-8-validate + '@cloudflare/workerd-darwin-64@1.20240909.0': optional: true @@ -1177,10 +1322,23 @@ snapshots: '@fastify/busboy@2.1.1': {} + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/resolve-uri@3.1.2': {} + '@jridgewell/set-array@1.2.1': {} + '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 @@ -1244,40 +1402,54 @@ snapshots: dependencies: undici-types: 6.19.8 - '@vitest/expect@2.1.1': + '@vitest/expect@2.0.5': dependencies: - '@vitest/spy': 2.1.1 - '@vitest/utils': 2.1.1 + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(vite@5.4.5(@types/node@20.16.0))': + '@vitest/pretty-format@2.0.5': dependencies: - '@vitest/spy': 2.1.1 - estree-walker: 3.0.3 - magic-string: 0.30.11 - optionalDependencies: - vite: 5.4.5(@types/node@20.16.0) + tinyrainbow: 1.2.0 '@vitest/pretty-format@2.1.1': dependencies: tinyrainbow: 1.2.0 + '@vitest/runner@2.0.5': + dependencies: + '@vitest/utils': 2.0.5 + pathe: 1.1.2 + '@vitest/runner@2.1.1': dependencies: '@vitest/utils': 2.1.1 pathe: 1.1.2 + '@vitest/snapshot@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + magic-string: 0.30.11 + pathe: 1.1.2 + '@vitest/snapshot@2.1.1': dependencies: '@vitest/pretty-format': 2.1.1 magic-string: 0.30.11 pathe: 1.1.2 - '@vitest/spy@2.1.1': + '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.2 + '@vitest/utils@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + estree-walker: 3.0.3 + loupe: 3.1.1 + tinyrainbow: 1.2.0 + '@vitest/utils@2.1.1': dependencies: '@vitest/pretty-format': 2.1.1 @@ -1303,6 +1475,8 @@ snapshots: binary-extensions@2.3.0: {} + birpc@0.2.14: {} + blake3-wasm@2.1.5: {} braces@3.0.3: @@ -1340,8 +1514,16 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + cjs-module-lexer@1.4.1: {} + cookie@0.5.0: {} + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + data-uri-to-buffer@2.0.2: {} date-fns@3.6.0: {} @@ -1354,6 +1536,8 @@ snapshots: defu@6.1.4: {} + devalue@4.3.3: {} + esbuild@0.17.19: optionalDependencies: '@esbuild/android-arm': 0.17.19 @@ -1413,6 +1597,18 @@ snapshots: dependencies: '@types/estree': 1.0.5 + execa@8.0.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + exit-hook@2.2.1: {} fill-range@7.1.1: @@ -1431,6 +1627,8 @@ snapshots: data-uri-to-buffer: 2.0.2 source-map: 0.6.1 + get-stream@8.0.1: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -1443,6 +1641,8 @@ snapshots: hono@4.6.1: {} + human-signals@5.0.0: {} + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 @@ -1459,6 +1659,10 @@ snapshots: is-number@7.0.0: {} + is-stream@3.0.0: {} + + isexe@2.0.0: {} + loupe@3.1.1: dependencies: get-func-name: 2.0.2 @@ -1471,8 +1675,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + merge-stream@2.0.0: {} + mime@3.0.0: {} + mimic-fn@4.0.0: {} + miniflare@3.20240909.1: dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -1492,6 +1700,25 @@ snapshots: - supports-color - utf-8-validate + miniflare@3.20240909.4: + dependencies: + '@cspotcode/source-map-support': 0.8.1 + acorn: 8.12.1 + acorn-walk: 8.3.4 + capnp-ts: 0.7.0 + exit-hook: 2.2.1 + glob-to-regexp: 0.4.1 + stoppable: 1.1.0 + undici: 5.28.4 + workerd: 1.20240909.0 + ws: 8.18.0 + youch: 3.3.3 + zod: 3.23.8 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + ms@2.1.3: {} mustache@4.2.0: {} @@ -1502,7 +1729,19 @@ snapshots: normalize-path@3.0.0: {} - ohash@1.1.3: {} + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + ohash@1.1.4: {} + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + path-key@3.1.1: {} + + path-key@4.0.0: {} path-parse@1.0.7: {} @@ -1577,8 +1816,18 @@ snapshots: '@types/node-forge': 1.3.11 node-forge: 1.3.1 + semver@7.6.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + siginfo@2.0.0: {} + signal-exit@4.1.0: {} + source-map-js@1.2.1: {} source-map@0.6.1: {} @@ -1596,12 +1845,12 @@ snapshots: stoppable@1.1.0: {} + strip-final-newline@3.0.0: {} + supports-preserve-symlinks-flag@1.0.0: {} tinybench@2.9.0: {} - tinyexec@0.3.0: {} - tinypool@1.0.1: {} tinyrainbow@1.2.0: {} @@ -1625,15 +1874,23 @@ snapshots: unenv-nightly@2.0.0-1724863496.70db6f1: dependencies: defu: 6.1.4 - ohash: 1.1.3 + ohash: 1.1.4 pathe: 1.1.2 ufo: 1.5.4 - vite-node@2.1.1(@types/node@20.16.0): + unenv-nightly@2.0.0-20240919-125358-9a64854: + dependencies: + defu: 6.1.4 + ohash: 1.1.4 + pathe: 1.1.2 + ufo: 1.5.4 + + vite-node@2.0.5(@types/node@20.16.0): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 + tinyrainbow: 1.2.0 vite: 5.4.5(@types/node@20.16.0) transitivePeerDependencies: - '@types/node' @@ -1655,33 +1912,32 @@ snapshots: '@types/node': 20.16.0 fsevents: 2.3.3 - vitest@2.1.1(@types/node@20.16.0): + vitest@2.0.5(@types/node@20.16.0): dependencies: - '@vitest/expect': 2.1.1 - '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(vite@5.4.5(@types/node@20.16.0)) + '@ampproject/remapping': 2.3.0 + '@vitest/expect': 2.0.5 '@vitest/pretty-format': 2.1.1 - '@vitest/runner': 2.1.1 - '@vitest/snapshot': 2.1.1 - '@vitest/spy': 2.1.1 - '@vitest/utils': 2.1.1 + '@vitest/runner': 2.0.5 + '@vitest/snapshot': 2.0.5 + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 chai: 5.1.1 debug: 4.3.7 + execa: 8.0.1 magic-string: 0.30.11 pathe: 1.1.2 std-env: 3.7.0 tinybench: 2.9.0 - tinyexec: 0.3.0 tinypool: 1.0.1 tinyrainbow: 1.2.0 vite: 5.4.5(@types/node@20.16.0) - vite-node: 2.1.1(@types/node@20.16.0) + vite-node: 2.0.5(@types/node@20.16.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.16.0 transitivePeerDependencies: - less - lightningcss - - msw - sass - sass-embedded - stylus @@ -1689,6 +1945,10 @@ snapshots: - supports-color - terser + which@2.0.2: + dependencies: + isexe: 2.0.0 + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 @@ -1730,6 +1990,34 @@ snapshots: - supports-color - utf-8-validate + wrangler@3.78.7(@cloudflare/workers-types@4.20240909.0): + dependencies: + '@cloudflare/kv-asset-handler': 0.3.4 + '@cloudflare/workers-shared': 0.5.3 + '@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.6.0 + date-fns: 3.6.0 + esbuild: 0.17.19 + miniflare: 3.20240909.4 + nanoid: 3.3.7 + path-to-regexp: 6.3.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 + selfsigned: 2.4.1 + source-map: 0.6.1 + unenv: unenv-nightly@2.0.0-20240919-125358-9a64854 + workerd: 1.20240909.0 + xxhash-wasm: 1.0.2 + optionalDependencies: + '@cloudflare/workers-types': 4.20240909.0 + fsevents: 2.3.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + ws@8.18.0: {} xxhash-wasm@1.0.2: {} diff --git a/src/handlers/index.ts b/src/handlers/index.ts new file mode 100644 index 0000000..0460945 --- /dev/null +++ b/src/handlers/index.ts @@ -0,0 +1,52 @@ +import { createFactory } from "hono/factory"; +import { configMiddleware } from "../middlewares/config"; +import type { Env } from "../types"; + +const factory = createFactory(); + +export const getCommonResponse = ( + method: string, + apiKey: string | undefined, +) => { + return { + status: 200, + method, + text: "OK!", + apiKey: apiKey ?? "", + }; +}; + +export const getHandler = factory.createHandlers( + configMiddleware, + async (c) => { + return c.json({ + ...getCommonResponse(c.req.method, c.var.api_key), + }); + }, +); +export const postHandler = factory.createHandlers( + configMiddleware, + async (c) => { + return c.json({ + ...getCommonResponse(c.req.method, c.var.api_key), + }); + }, +); + +export const patchHandler = factory.createHandlers( + configMiddleware, + async (c) => { + return c.json({ + ...getCommonResponse(c.req.method, c.var.api_key), + }); + }, +); + +export const deleteHandler = factory.createHandlers( + configMiddleware, + async (c) => { + return c.json({ + ...getCommonResponse(c.req.method, c.var.api_key), + }); + }, +); diff --git a/src/index.test.ts b/src/index.test.ts index ccc0e4a..282b741 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -1,53 +1,85 @@ import { describe, expect, it } from "vitest"; import app from "./index"; +import type { DOT_ENV } from "./types"; const testResponse = { status: 200, method: "GET", text: "OK!", + apiKey: "Example_0000", }; +type TestResponse = typeof testResponse; + +// TODO: dotenvが使えれば、環境変数を取得できるようになるはず +const MOCK_ENV = { + DEVELOP: "1", + X_API_KEY: "Example_0000", + DB_HOST: "", + DB_USERNAME: "", + DEV_DB_USERNAME: "", + DB_PASSWORD: "", + DEV_DB_PASSWORD: "", + DB_NAME: "", + GH_PAT: "", +} satisfies DOT_ENV; describe("レスポンス確認", () => { it("GET", async () => { const testGetResponse = structuredClone(testResponse); - const res = await app.request("/", { - method: "GET", - }); - console.log(res); - const json = await res.json(); + const res = await app.request( + "/", + { + method: "GET", + }, + MOCK_ENV, + ); + expect(res.status).toBe(200); + const json = await res.json(); expect(json).toStrictEqual(testGetResponse); }); it("POST", async () => { const testPostResponse = structuredClone(testResponse); testPostResponse.method = "POST"; - const res = await app.request("/", { - method: "POST", - }); - console.log(res); - const json = await res.json(); + const res = await app.request( + "/", + { + method: "POST", + }, + MOCK_ENV, + ); + expect(res.status).toBe(200); + const json = await res.json(); expect(json).toStrictEqual(testPostResponse); }); it("PATCH", async () => { const testPatchResponse = structuredClone(testResponse); testPatchResponse.method = "PATCH"; - const res = await app.request("/", { - method: "PATCH", - }); - console.log(res); - const json = await res.json(); + const res = await app.request( + "/", + { + method: "PATCH", + }, + MOCK_ENV, + ); + expect(res.status).toBe(200); + const json = await res.json(); expect(json).toStrictEqual(testPatchResponse); }); it("DELETE", async () => { const testDeleteResponse = structuredClone(testResponse); testDeleteResponse.method = "DELETE"; - const res = await app.request("/", { - method: "DELETE", - }); - console.log(res); - const json = await res.json(); + const res = await app.request( + "/", + { + method: "DELETE", + }, + MOCK_ENV, + ); + expect(res.status).toBe(200); + const json = await res.json(); expect(json).toStrictEqual(testDeleteResponse); }); }); diff --git a/src/index.ts b/src/index.ts index f4c8b31..dd82671 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,35 +1,18 @@ import { Hono } from "hono"; +import { + deleteHandler, + getHandler, + patchHandler, + postHandler, +} from "./handlers"; +import type { Env } from "./types"; -const app = new Hono(); - -const getCommonResponse = (method: string) => { - return { - status: 200, - method, - text: "OK!", - }; -}; +const app = new Hono(); app - .get("/", async (c) => { - return c.json({ - ...getCommonResponse(c.req.method), - }); - }) - .post(async (c) => { - return c.json({ - ...getCommonResponse(c.req.method), - }); - }) - .patch(async (c) => { - return c.json({ - ...getCommonResponse(c.req.method), - }); - }) - .delete(async (c) => { - return c.json({ - ...getCommonResponse(c.req.method), - }); - }); + .get("/", ...getHandler) + .post(...postHandler) + .patch(...patchHandler) + .delete(...deleteHandler); export default app; diff --git a/src/middlewares/config.ts b/src/middlewares/config.ts new file mode 100644 index 0000000..25b814a --- /dev/null +++ b/src/middlewares/config.ts @@ -0,0 +1,22 @@ +import type { Context } from "hono"; +import { env } from "hono/adapter"; +import { createMiddleware } from "hono/factory"; +import type { DOT_ENV, Env } from "../types"; + +export const configMiddleware = createMiddleware(async (ctx, next) => { + const envConfig = env>(ctx); + + ctx.set("api_key", envConfig.X_API_KEY); + ctx.set("db_host", envConfig.DB_HOST); + ctx.set( + "db_username", + envConfig.DEVELOP ? envConfig.DEV_DB_USERNAME : envConfig.DB_USERNAME, + ); + ctx.set( + "db_password", + envConfig.DEVELOP ? envConfig.DEV_DB_PASSWORD : envConfig.DB_PASSWORD, + ); + ctx.set("db_name", envConfig.DB_NAME); + + await next(); +}); diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..0ff1d0d --- /dev/null +++ b/src/types.ts @@ -0,0 +1,22 @@ +export type Env = { + Variables: { + api_key: string; + db_host: string; + db_username: string; + db_password: string; + db_name: string; + gh_pat: string; + }; +}; + +export type DOT_ENV = { + DEVELOP: string; + X_API_KEY: string; + DB_HOST: string; + DB_USERNAME: string; + DEV_DB_USERNAME: string; + DB_PASSWORD: string; + DEV_DB_PASSWORD: string; + DB_NAME: string; + GH_PAT: string; +}; diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..285d990 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,13 @@ +import { defineWorkersConfig } from "@cloudflare/vitest-pool-workers/config"; + +export default defineWorkersConfig({ + test: { + poolOptions: { + workers: { + wrangler: { + configPath: "wrangler.toml", + }, + }, + }, + }, +}); diff --git a/wrangler.toml b/wrangler.toml index ffeb688..a7a1c74 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -1,3 +1,3 @@ name = "verify-cfw-drizzle-crud" -compatibility_date = "2024-09-14" +compatibility_date = "2024-09-09" compatibility_flags = [ "nodejs_compat" ]