From e1548f22d32ced44f883a157f734f2af4a603700 Mon Sep 17 00:00:00 2001 From: David Humphrey Date: Tue, 4 Mar 2025 08:29:47 -0500 Subject: [PATCH 1/2] CloudFlare Workers smoke test --- package.json | 6 +- pnpm-lock.yaml | 559 ++++++++++++++++++++++ tests/smoke/cloudflare/cloudflare.test.ts | 28 ++ tests/smoke/cloudflare/vitest.config.ts | 19 + tsconfig.json | 8 +- vitest.config.ts | 3 +- 6 files changed, 620 insertions(+), 3 deletions(-) create mode 100644 tests/smoke/cloudflare/cloudflare.test.ts create mode 100644 tests/smoke/cloudflare/vitest.config.ts diff --git a/package.json b/package.json index 61c932a..400587d 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "test:smoke-node": "node --test tests/smoke/node/node.test.cjs", "test:smoke-deno": "deno test --allow-read tests/smoke/deno/deno.test.ts", "test:smoke-bun": "bun test tests/smoke/bun/bun.test.ts", + "test:smoke-cloudflare": "vitest run tests/smoke/cloudflare/cloudflare.test.ts --config tests/smoke/cloudflare/vitest.config.ts", "typecheck": "tsc", "prepare": "husky" }, @@ -57,6 +58,7 @@ "zod": "^3.24.2" }, "devDependencies": { + "@cloudflare/workers-types": "^4.20250303.0", "@release-it/conventional-changelog": "^10.0.0", "@types/deno": "^2.2.0", "@types/lodash": "^4.17.15", @@ -70,6 +72,7 @@ "husky": "^9.1.7", "knip": "^5.44.5", "lint-staged": "^15.4.3", + "miniflare": "^3.20250214.2", "npm-run-all": "^4.1.5", "oxlint": "^0.15.11", "prettier": "3.5.1", @@ -77,7 +80,8 @@ "release-it": "^18.1.2", "tsup": "^8.3.6", "typescript": "^5.7.3", - "vitest": "^3.0.6" + "vitest": "^3.0.6", + "vitest-environment-miniflare": "^2.14.4" }, "packageManager": "pnpm@9", "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index af21a5e..67320b2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,6 +27,9 @@ importers: specifier: ^3.24.2 version: 3.24.2 devDependencies: + '@cloudflare/workers-types': + specifier: ^4.20250303.0 + version: 4.20250303.0 '@release-it/conventional-changelog': specifier: ^10.0.0 version: 10.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0)(release-it@18.1.2(@types/node@22.13.5)(typescript@5.7.3)) @@ -66,6 +69,9 @@ importers: lint-staged: specifier: ^15.4.3 version: 15.4.3 + miniflare: + specifier: ^3.20250214.2 + version: 3.20250214.2 npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -90,6 +96,9 @@ importers: vitest: specifier: ^3.0.6 version: 3.0.6(@types/node@22.13.5) + vitest-environment-miniflare: + specifier: ^2.14.4 + version: 2.14.4(vitest@3.0.6(@types/node@22.13.5)) packages: @@ -122,6 +131,39 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} + '@cloudflare/workerd-darwin-64@1.20250214.0': + resolution: {integrity: sha512-cDvvedWDc5zrgDnuXe2qYcz/TwBvzmweO55C7XpPuAWJ9Oqxv81PkdekYxD8mH989aQ/GI5YD0Fe6fDYlM+T3Q==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + + '@cloudflare/workerd-darwin-arm64@1.20250214.0': + resolution: {integrity: sha512-NytCvRveVzu0mRKo+tvZo3d/gCUway3B2ZVqSi/TS6NXDGBYIJo7g6s3BnTLS74kgyzeDOjhu9j/RBJBS809qw==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + + '@cloudflare/workerd-linux-64@1.20250214.0': + resolution: {integrity: sha512-pQ7+aHNHj8SiYEs4d/6cNoimE5xGeCMfgU1yfDFtA9YGN9Aj2BITZgOWPec+HW7ZkOy9oWlNrO6EvVjGgB4tbQ==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + + '@cloudflare/workerd-linux-arm64@1.20250214.0': + resolution: {integrity: sha512-Vhlfah6Yd9ny1npNQjNgElLIjR6OFdEbuR3LCfbLDCwzWEBFhIf7yC+Tpp/a0Hq7kLz3sLdktaP7xl3PJhyOjA==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + + '@cloudflare/workerd-windows-64@1.20250214.0': + resolution: {integrity: sha512-GMwMyFbkjBKjYJoKDhGX8nuL4Gqe3IbVnVWf2Q6086CValyIknupk5J6uQWGw2EBU3RGO3x4trDXT5WphQJZDQ==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + + '@cloudflare/workers-types@4.20250303.0': + resolution: {integrity: sha512-O7F7nRT4bbmwHf3gkRBLfJ7R6vHIJ/oZzWdby6obOiw2yavUfp/AIwS7aO2POu5Cv8+h3TXS3oHs3kKCZLraUA==} + '@conventional-changelog/git-client@1.0.1': resolution: {integrity: sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==} engines: {node: '>=18'} @@ -134,6 +176,10 @@ packages: conventional-commits-parser: optional: true + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + '@deno/darwin-arm64@2.2.1': resolution: {integrity: sha512-zIqVst8Ek2ou50MGEdBlqlyFXQ41X1KI0oVrV053MmEMwGQYW7WCtog/qB6h/5qrkjQZKq2tTr2i4tpSNQ2Vyw==} cpu: [arm64] @@ -452,6 +498,10 @@ packages: cpu: [x64] os: [win32] + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + '@hutson/parse-repository-url@5.0.0': resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==} engines: {node: '>=10.13.0'} @@ -606,6 +656,73 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@miniflare/cache@2.14.4': + resolution: {integrity: sha512-ayzdjhcj+4mjydbNK7ZGDpIXNliDbQY4GPcY2KrYw0v1OSUdj5kZUkygD09fqoGRfAks0d91VelkyRsAXX8FQA==} + engines: {node: '>=16.13'} + + '@miniflare/core@2.14.4': + resolution: {integrity: sha512-FMmZcC1f54YpF4pDWPtdQPIO8NXfgUxCoR9uyrhxKJdZu7M6n8QKopPVNuaxR40jcsdxb7yKoQoFWnHfzJD9GQ==} + engines: {node: '>=16.13'} + + '@miniflare/d1@2.14.4': + resolution: {integrity: sha512-pMBVq9XWxTDdm+RRCkfXZP+bREjPg1JC8s8C0JTovA9OGmLQXqGTnFxIaS9vf1d8k3uSUGhDzPTzHr0/AUW1gA==} + engines: {node: '>=16.7'} + + '@miniflare/durable-objects@2.14.4': + resolution: {integrity: sha512-+JrmHP6gHHrjxV8S3axVw5lGHLgqmAGdcO/1HJUPswAyJEd3Ah2YnKhpo+bNmV4RKJCtEq9A2hbtVjBTD2YzwA==} + engines: {node: '>=16.13'} + + '@miniflare/html-rewriter@2.14.4': + resolution: {integrity: sha512-GB/vZn7oLbnhw+815SGF+HU5EZqSxbhIa3mu2L5MzZ2q5VOD5NHC833qG8c2GzDPhIaZ99ITY+ZJmbR4d+4aNQ==} + engines: {node: '>=16.13'} + + '@miniflare/kv@2.14.4': + resolution: {integrity: sha512-QlERH0Z+klwLg0xw+/gm2yC34Nnr/I0GcQ+ASYqXeIXBwjqOtMBa3YVQnocaD+BPy/6TUtSpOAShHsEj76R2uw==} + engines: {node: '>=16.13'} + + '@miniflare/queues@2.14.4': + resolution: {integrity: sha512-aXQ5Ik8Iq1KGMBzGenmd6Js/jJgqyYvjom95/N9GptCGpiVWE5F0XqC1SL5rCwURbHN+aWY191o8XOFyY2nCUA==} + engines: {node: '>=16.7'} + + '@miniflare/r2@2.14.4': + resolution: {integrity: sha512-4ctiZWh7Ty7LB3brUjmbRiGMqwyDZgABYaczDtUidblo2DxX4JZPnJ/ZAyxMPNJif32kOJhcg6arC2hEthR9Sw==} + engines: {node: '>=16.13'} + + '@miniflare/runner-vm@2.14.4': + resolution: {integrity: sha512-Nog0bB9SVhPbZAkTWfO4lpLAUsBXKEjlb4y+y66FJw77mPlmPlVdpjElCvmf8T3VN/pqh83kvELGM+/fucMf4g==} + engines: {node: '>=16.13'} + + '@miniflare/shared-test-environment@2.14.4': + resolution: {integrity: sha512-FdU2/8wEd00vIu+MfofLiHcfZWz+uCbE2VTL85KpyYfBsNGAbgRtzFMpOXdoXLqQfRu6MBiRwWpb2FbMrBzi7g==} + engines: {node: '>=16.13'} + + '@miniflare/shared@2.14.4': + resolution: {integrity: sha512-upl4RSB3hyCnITOFmRZjJj4A72GmkVrtfZTilkdq5Qe5TTlzsjVeDJp7AuNUM9bM8vswRo+N5jOiot6O4PVwwQ==} + engines: {node: '>=16.13'} + + '@miniflare/sites@2.14.4': + resolution: {integrity: sha512-O5npWopi+fw9W9Ki0gy99nuBbgDva/iXy8PDC4dAXDB/pz45nISDqldabk0rL2t4W2+lY6LXKzdOw+qJO1GQTA==} + engines: {node: '>=16.13'} + + '@miniflare/storage-file@2.14.4': + resolution: {integrity: sha512-JxcmX0hXf4cB0cC9+s6ZsgYCq+rpyUKRPCGzaFwymWWplrO3EjPVxKCcMxG44jsdgsII6EZihYUN2J14wwCT7A==} + engines: {node: '>=16.13'} + + '@miniflare/storage-memory@2.14.4': + resolution: {integrity: sha512-9jB5BqNkMZ3SFjbPFeiVkLi1BuSahMhc/W1Y9H0W89qFDrrD+z7EgRgDtHTG1ZRyi9gIlNtt9qhkO1B6W2qb2A==} + engines: {node: '>=16.13'} + + '@miniflare/watcher@2.14.4': + resolution: {integrity: sha512-PYn05ET2USfBAeXF6NZfWl0O32KVyE8ncQ/ngysrh3hoIV7l3qGGH7ubeFx+D8VWQ682qYhwGygUzQv2j1tGGg==} + engines: {node: '>=16.13'} + + '@miniflare/web-sockets@2.14.4': + resolution: {integrity: sha512-stTxvLdJ2IcGOs76AnvGYAzGvx8JvQPRxC5DW0P5zdAAnhL33noqb5LKdPt3P37BKp9FzBKZHuihQI9oVqwm0g==} + engines: {node: '>=16.13'} + '@noble/ciphers@1.2.1': resolution: {integrity: sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==} engines: {node: ^14.21.3 || >=16} @@ -932,6 +1049,9 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + '@types/better-sqlite3@7.6.12': + resolution: {integrity: sha512-fnQmj8lELIj7BSrZQAdBMHEHX8OZLYIHXqAKT1O7tDfLxaINzf00PMjw22r3N/xXh0w/sGHlO6SVaCQ2mj78lg==} + '@types/deno@2.2.0': resolution: {integrity: sha512-4x6M/ZSyoQy6fJeMArP0dvvNT4IOolfySyukuqqKhsLmSXDV4wGanqXIZ+xFihw3TlReS6JTa4hRG9nAZInpmw==} @@ -994,6 +1114,15 @@ packages: '@vitest/utils@3.0.6': resolution: {integrity: sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==} + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + add-stream@1.0.0: resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} @@ -1056,6 +1185,9 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} + as-table@1.0.55: + resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -1105,6 +1237,9 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + builtins@5.1.0: + resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + bun-types@1.2.3: resolution: {integrity: sha512-P7AeyTseLKAvgaZqQrvp3RqFM3yN9PlcLuSTe7SoJOfZkER73mLdT2vEQi8U64S1YvM/ldcNiQjn0Sn7H9lGgg==} @@ -1123,6 +1258,10 @@ packages: peerDependencies: esbuild: '>=0.18' + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -1322,6 +1461,10 @@ packages: engines: {node: '>=18'} hasBin: true + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + cosmiconfig@9.0.0: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} @@ -1339,6 +1482,9 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + data-uri-to-buffer@2.0.2: + resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} + data-uri-to-buffer@6.0.2: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} @@ -1423,6 +1569,10 @@ packages: resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} engines: {node: '>=18'} + dotenv@10.0.0: + resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} + engines: {node: '>=10'} + dotenv@16.4.7: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} @@ -1539,6 +1689,10 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + execa@6.1.0: + resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -1547,6 +1701,10 @@ packages: resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} engines: {node: ^18.19.0 || >=20.5.0} + exit-hook@2.2.1: + resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} + engines: {node: '>=6'} + expect-type@1.1.0: resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} engines: {node: '>=12.0.0'} @@ -1627,10 +1785,17 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-source@2.0.12: + resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} + get-stdin@9.0.0: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -1670,6 +1835,9 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true @@ -1746,6 +1914,12 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-rewriter-wasm@0.4.1: + resolution: {integrity: sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -1754,6 +1928,10 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} + human-signals@3.0.1: + resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} + engines: {node: '>=12.20.0'} + human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -2054,6 +2232,10 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + knip@5.44.5: resolution: {integrity: sha512-qXHVRsipmxZNKVb5IWUVHwQtr96Dfo3vnWszRgwMI2VhsW9EBi7b/2YlELrrqfPr0lwVnwhUUuNgYwvke+PdGA==} engines: {node: '>=18.18.0'} @@ -2186,6 +2368,11 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} + miniflare@3.20250214.2: + resolution: {integrity: sha512-t+lT4p2lbOcKv4PS3sx1F/wcDAlbEYZCO2VooLp4H7JErWWYIi9yjD3UillC3CGOpiBahVg5nrPCoFltZf6UlA==} + engines: {node: '>=16.13'} + hasBin: true + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2203,6 +2390,10 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + mute-stream@2.0.0: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -2249,6 +2440,9 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} + npx-import@1.1.4: + resolution: {integrity: sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -2344,6 +2538,9 @@ packages: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} + parse-package-name@1.0.0: + resolution: {integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==} + parse-path@7.0.1: resolution: {integrity: sha512-6ReLMptznuuOEzLoGEa+I1oWRSj2Zna5jLWC+l6zlfAI4dbbSaIES29ThzuPkbhNahT65dWzfoZEO6cfJw2Ksg==} @@ -2461,6 +2658,9 @@ packages: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} + printable-characters@1.0.42: + resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} + proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -2617,6 +2817,9 @@ packages: engines: {node: '>=10'} hasBin: true + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -2673,6 +2876,9 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -2742,6 +2948,9 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + stacktracey@2.1.8: + resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} + std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} @@ -2749,6 +2958,14 @@ packages: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} + stoppable@1.1.0: + resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} + engines: {node: '>=4', npm: '>=6'} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -2964,6 +3181,14 @@ packages: undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} + engines: {node: '>=14.0'} + + undici@5.28.5: + resolution: {integrity: sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==} + engines: {node: '>=14.0'} + undici@6.21.1: resolution: {integrity: sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==} engines: {node: '>=18.17'} @@ -2987,12 +3212,19 @@ packages: resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + urlpattern-polyfill@4.0.3: + resolution: {integrity: sha512-DOE84vZT2fEcl9gqCUTcnAw5ZY5Id55ikUcziSUntuEFL3pRvavg5kwDmTEUJkeCHInTlV/HexFomgYnzO5kdQ==} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + 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} + vite-node@3.0.6: resolution: {integrity: sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -3029,6 +3261,12 @@ packages: terser: optional: true + vitest-environment-miniflare@2.14.4: + resolution: {integrity: sha512-DzwQWdY42sVYR6aUndw9FdCtl/i0oh3NkbkQpw+xq5aYQw5eiJn5kwnKaKQEWaoBe8Cso71X2i1EJGvi1jZ2xw==} + engines: {node: '>=16.13'} + peerDependencies: + vitest: '>=0.23.0' + vitest@3.0.6: resolution: {integrity: sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -3113,6 +3351,11 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + workerd@1.20250214.0: + resolution: {integrity: sha512-QWcqXZLiMpV12wiaVnb3nLmfs/g4ZsFQq2mX85z546r3AX4CTIkXl0VP50W3CwqLADej3PGYiRDOTelDOwVG1g==} + engines: {node: '>=16'} + hasBin: true + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -3132,6 +3375,30 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xdg-basedir@5.1.0: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} @@ -3161,12 +3428,18 @@ packages: resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} engines: {node: '>=18'} + youch@3.2.3: + resolution: {integrity: sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==} + zod-validation-error@3.4.0: resolution: {integrity: sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==} engines: {node: '>=18.0.0'} peerDependencies: zod: ^3.18.0 + zod@3.22.3: + resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} + zod@3.24.2: resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} @@ -3198,6 +3471,23 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} + '@cloudflare/workerd-darwin-64@1.20250214.0': + optional: true + + '@cloudflare/workerd-darwin-arm64@1.20250214.0': + optional: true + + '@cloudflare/workerd-linux-64@1.20250214.0': + optional: true + + '@cloudflare/workerd-linux-arm64@1.20250214.0': + optional: true + + '@cloudflare/workerd-windows-64@1.20250214.0': + optional: true + + '@cloudflare/workers-types@4.20250303.0': {} + '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0)': dependencies: '@types/semver': 7.5.8 @@ -3206,6 +3496,10 @@ snapshots: conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.1.0 + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + '@deno/darwin-arm64@2.2.1': optional: true @@ -3368,6 +3662,8 @@ snapshots: '@esbuild/win32-x64@0.24.2': optional: true + '@fastify/busboy@2.1.1': {} + '@hutson/parse-repository-url@5.0.0': {} '@iarna/toml@2.2.5': {} @@ -3516,6 +3812,123 @@ snapshots: '@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 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@miniflare/cache@2.14.4': + dependencies: + '@miniflare/core': 2.14.4 + '@miniflare/shared': 2.14.4 + http-cache-semantics: 4.1.1 + undici: 5.28.4 + + '@miniflare/core@2.14.4': + dependencies: + '@iarna/toml': 2.2.5 + '@miniflare/queues': 2.14.4 + '@miniflare/shared': 2.14.4 + '@miniflare/watcher': 2.14.4 + busboy: 1.6.0 + dotenv: 10.0.0 + kleur: 4.1.5 + set-cookie-parser: 2.7.1 + undici: 5.28.4 + urlpattern-polyfill: 4.0.3 + + '@miniflare/d1@2.14.4': + dependencies: + '@miniflare/core': 2.14.4 + '@miniflare/shared': 2.14.4 + + '@miniflare/durable-objects@2.14.4': + dependencies: + '@miniflare/core': 2.14.4 + '@miniflare/shared': 2.14.4 + '@miniflare/storage-memory': 2.14.4 + undici: 5.28.4 + + '@miniflare/html-rewriter@2.14.4': + dependencies: + '@miniflare/core': 2.14.4 + '@miniflare/shared': 2.14.4 + html-rewriter-wasm: 0.4.1 + undici: 5.28.4 + + '@miniflare/kv@2.14.4': + dependencies: + '@miniflare/shared': 2.14.4 + + '@miniflare/queues@2.14.4': + dependencies: + '@miniflare/shared': 2.14.4 + + '@miniflare/r2@2.14.4': + dependencies: + '@miniflare/core': 2.14.4 + '@miniflare/shared': 2.14.4 + undici: 5.28.4 + + '@miniflare/runner-vm@2.14.4': + dependencies: + '@miniflare/shared': 2.14.4 + + '@miniflare/shared-test-environment@2.14.4': + dependencies: + '@cloudflare/workers-types': 4.20250303.0 + '@miniflare/cache': 2.14.4 + '@miniflare/core': 2.14.4 + '@miniflare/d1': 2.14.4 + '@miniflare/durable-objects': 2.14.4 + '@miniflare/html-rewriter': 2.14.4 + '@miniflare/kv': 2.14.4 + '@miniflare/queues': 2.14.4 + '@miniflare/r2': 2.14.4 + '@miniflare/shared': 2.14.4 + '@miniflare/sites': 2.14.4 + '@miniflare/storage-memory': 2.14.4 + '@miniflare/web-sockets': 2.14.4 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@miniflare/shared@2.14.4': + dependencies: + '@types/better-sqlite3': 7.6.12 + kleur: 4.1.5 + npx-import: 1.1.4 + picomatch: 2.3.1 + + '@miniflare/sites@2.14.4': + dependencies: + '@miniflare/kv': 2.14.4 + '@miniflare/shared': 2.14.4 + '@miniflare/storage-file': 2.14.4 + + '@miniflare/storage-file@2.14.4': + dependencies: + '@miniflare/shared': 2.14.4 + '@miniflare/storage-memory': 2.14.4 + + '@miniflare/storage-memory@2.14.4': + dependencies: + '@miniflare/shared': 2.14.4 + + '@miniflare/watcher@2.14.4': + dependencies: + '@miniflare/shared': 2.14.4 + + '@miniflare/web-sockets@2.14.4': + dependencies: + '@miniflare/core': 2.14.4 + '@miniflare/shared': 2.14.4 + undici: 5.28.4 + ws: 8.18.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@noble/ciphers@1.2.1': {} '@noble/curves@1.8.1': @@ -3769,6 +4182,10 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} + '@types/better-sqlite3@7.6.12': + dependencies: + '@types/node': 22.13.5 + '@types/deno@2.2.0': {} '@types/estree@1.0.6': {} @@ -3847,6 +4264,10 @@ snapshots: loupe: 3.1.3 tinyrainbow: 2.0.0 + acorn-walk@8.3.2: {} + + acorn@8.14.0: {} + add-stream@1.0.0: {} age-encryption@0.2.1: @@ -3910,6 +4331,10 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 + as-table@1.0.55: + dependencies: + printable-characters: 1.0.42 + assertion-error@2.0.1: {} ast-types@0.13.4: @@ -3963,6 +4388,10 @@ snapshots: buffer-from@1.1.2: {} + builtins@5.1.0: + dependencies: + semver: 7.7.1 + bun-types@1.2.3: dependencies: '@types/node': 22.13.5 @@ -3991,6 +4420,10 @@ snapshots: esbuild: 0.24.2 load-tsconfig: 0.2.5 + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + cac@6.7.14: {} call-bind-apply-helpers@1.0.2: @@ -4192,6 +4625,8 @@ snapshots: conventional-commits-parser: 6.1.0 meow: 13.2.0 + cookie@0.5.0: {} + cosmiconfig@9.0.0(typescript@5.7.3): dependencies: env-paths: 2.2.1 @@ -4215,6 +4650,8 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + data-uri-to-buffer@2.0.2: {} + data-uri-to-buffer@6.0.2: {} data-view-buffer@1.0.2: @@ -4298,6 +4735,8 @@ snapshots: dependencies: type-fest: 4.35.0 + dotenv@10.0.0: {} + dotenv@16.4.7: {} dunder-proto@1.0.1: @@ -4496,6 +4935,18 @@ snapshots: eventemitter3@5.0.1: {} + execa@6.1.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 3.0.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -4523,6 +4974,8 @@ snapshots: strip-final-newline: 4.0.0 yoctocolors: 2.1.1 + exit-hook@2.2.1: {} + expect-type@1.1.0: {} external-editor@3.1.0: @@ -4608,8 +5061,15 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-source@2.0.12: + dependencies: + data-uri-to-buffer: 2.0.2 + source-map: 0.6.1 + get-stdin@9.0.0: {} + get-stream@6.0.1: {} + get-stream@8.0.1: {} get-stream@9.0.1: @@ -4662,6 +5122,8 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-to-regexp@0.4.1: {} + glob@10.4.5: dependencies: foreground-child: 3.3.0 @@ -4745,6 +5207,10 @@ snapshots: html-escaper@2.0.2: {} + html-rewriter-wasm@0.4.1: {} + + http-cache-semantics@4.1.1: {} + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 @@ -4759,6 +5225,8 @@ snapshots: transitivePeerDependencies: - supports-color + human-signals@3.0.1: {} + human-signals@5.0.0: {} human-signals@8.0.0: {} @@ -5030,6 +5498,8 @@ snapshots: json-parse-even-better-errors@2.3.1: {} + kleur@4.1.5: {} + knip@5.44.5(@types/node@22.13.5)(typescript@5.7.3): dependencies: '@nodelib/fs.walk': 3.0.1 @@ -5168,6 +5638,23 @@ snapshots: mimic-function@5.0.1: {} + miniflare@3.20250214.2: + dependencies: + '@cspotcode/source-map-support': 0.8.1 + acorn: 8.14.0 + acorn-walk: 8.3.2 + exit-hook: 2.2.1 + glob-to-regexp: 0.4.1 + stoppable: 1.1.0 + undici: 5.28.5 + workerd: 1.20250214.0 + ws: 8.18.0 + youch: 3.2.3 + zod: 3.22.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -5182,6 +5669,8 @@ snapshots: ms@2.1.3: {} + mustache@4.2.0: {} + mute-stream@2.0.0: {} mz@2.7.0: @@ -5236,6 +5725,13 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 + npx-import@1.1.4: + dependencies: + execa: 6.1.0 + parse-package-name: 1.0.0 + semver: 7.7.1 + validate-npm-package-name: 4.0.0 + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -5367,6 +5863,8 @@ snapshots: parse-ms@4.0.0: {} + parse-package-name@1.0.0: {} + parse-path@7.0.1: dependencies: protocols: 2.0.2 @@ -5444,6 +5942,8 @@ snapshots: dependencies: parse-ms: 4.0.0 + printable-characters@1.0.42: {} + proto-list@1.2.4: {} protocols@2.0.2: {} @@ -5659,6 +6159,8 @@ snapshots: semver@7.7.1: {} + set-cookie-parser@2.7.1: {} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -5731,6 +6233,8 @@ snapshots: siginfo@2.0.0: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} slash@5.1.0: {} @@ -5801,10 +6305,19 @@ snapshots: stackback@0.0.2: {} + stacktracey@2.1.8: + dependencies: + as-table: 1.0.55 + get-source: 2.0.12 + std-env@3.8.0: {} stdin-discarder@0.2.2: {} + stoppable@1.1.0: {} + + streamsearch@1.1.0: {} + string-argv@0.3.2: {} string-width@4.2.3: @@ -6037,6 +6550,14 @@ snapshots: undici-types@6.20.0: {} + undici@5.28.4: + dependencies: + '@fastify/busboy': 2.1.1 + + undici@5.28.5: + dependencies: + '@fastify/busboy': 2.1.1 + undici@6.21.1: {} unicorn-magic@0.1.0: {} @@ -6060,6 +6581,8 @@ snapshots: url-join@5.0.0: {} + urlpattern-polyfill@4.0.3: {} + util-deprecate@1.0.2: {} validate-npm-package-license@3.0.4: @@ -6067,6 +6590,10 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + validate-npm-package-name@4.0.0: + dependencies: + builtins: 5.1.0 + vite-node@3.0.6(@types/node@22.13.5): dependencies: cac: 6.7.14 @@ -6094,6 +6621,18 @@ snapshots: '@types/node': 22.13.5 fsevents: 2.3.3 + vitest-environment-miniflare@2.14.4(vitest@3.0.6(@types/node@22.13.5)): + dependencies: + '@miniflare/queues': 2.14.4 + '@miniflare/runner-vm': 2.14.4 + '@miniflare/shared': 2.14.4 + '@miniflare/shared-test-environment': 2.14.4 + undici: 5.28.4 + vitest: 3.0.6(@types/node@22.13.5) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + vitest@3.0.6(@types/node@22.13.5): dependencies: '@vitest/expect': 3.0.6 @@ -6209,6 +6748,14 @@ snapshots: wordwrap@1.0.0: {} + workerd@1.20250214.0: + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20250214.0 + '@cloudflare/workerd-darwin-arm64': 1.20250214.0 + '@cloudflare/workerd-linux-64': 1.20250214.0 + '@cloudflare/workerd-linux-arm64': 1.20250214.0 + '@cloudflare/workerd-windows-64': 1.20250214.0 + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -6235,6 +6782,10 @@ snapshots: wrappy@1.0.2: {} + ws@8.18.0: {} + + ws@8.18.1: {} + xdg-basedir@5.1.0: {} y18n@5.0.8: {} @@ -6257,8 +6808,16 @@ snapshots: yoctocolors@2.1.1: {} + youch@3.2.3: + dependencies: + cookie: 0.5.0 + mustache: 4.2.0 + stacktracey: 2.1.8 + zod-validation-error@3.4.0(zod@3.24.2): dependencies: zod: 3.24.2 + zod@3.22.3: {} + zod@3.24.2: {} diff --git a/tests/smoke/cloudflare/cloudflare.test.ts b/tests/smoke/cloudflare/cloudflare.test.ts new file mode 100644 index 0000000..8a1113f --- /dev/null +++ b/tests/smoke/cloudflare/cloudflare.test.ts @@ -0,0 +1,28 @@ +import { decryptSops } from "../../../dist/index.js"; +import { describe, test, expect } from "vitest"; +import original from "../../data/secret.json" assert { type: "json" }; + +// See ../../key.txt +const AGE_SECRET_KEY = + "AGE-SECRET-KEY-1QXRVEJH9S4NQU0FPD6V79ESZQ8S6PXH3L8V40EVPTHFH6KNKD4DQ7SKC4P"; + +describe("cloudflare worker module", () => { + test("should decrypt a file path with a given fileType", async () => { + const decrypted = await decryptSops({ + path: "tests/data/secret.enc.json", + fileType: "json", + secretKey: AGE_SECRET_KEY, + }); + + expect(decrypted).toEqual(original); + }); + + test("should decrypt a file path and infer type", async () => { + const decrypted = await decryptSops({ + path: "tests/data/secret.enc.json", + secretKey: AGE_SECRET_KEY, + }); + + expect(decrypted).toEqual(original); + }); +}); diff --git a/tests/smoke/cloudflare/vitest.config.ts b/tests/smoke/cloudflare/vitest.config.ts new file mode 100644 index 0000000..c36e482 --- /dev/null +++ b/tests/smoke/cloudflare/vitest.config.ts @@ -0,0 +1,19 @@ +import { defineConfig, mergeConfig } from "vitest/config"; +import rootConfig from "../../../vitest.config.js"; + +export default mergeConfig( + rootConfig, + defineConfig({ + test: { + environment: "miniflare", + environmentOptions: { + modules: true, + scriptPath: "tests/smoke/cloudflare/cloudflare.test.ts", + bindings: { + CF_WORKER: true, + }, + }, + include: ["tests/smoke/cloudflare/**/*.test.ts"], + }, + }), +); diff --git a/tsconfig.json b/tsconfig.json index 66b8b5a..4f66d3a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,5 +14,11 @@ "target": "ES2022", "types": ["bun-types", "@types/deno"] }, - "include": ["src", "tsup.config.ts", "tests/unit/**/*.ts", "tests/smoke/**/*"] + "include": [ + "src", + "tsup.config.ts", + "vitest.config.ts", + "tests/unit/**/*.ts", + "tests/smoke/**/*" + ] } diff --git a/vitest.config.ts b/vitest.config.ts index e991c3c..fad7047 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -13,7 +13,8 @@ export default defineConfig({ SOPS_AGE_KEY: "AGE-SECRET-KEY-1QXRVEJH9S4NQU0FPD6V79ESZQ8S6PXH3L8V40EVPTHFH6KNKD4DQ7SKC4P", }, - exclude: ["dist", "node_modules", "tests/smoke"], + include: ["tests/unit/**/*.test.ts"], + exclude: ["dist", "node_modules"], setupFiles: ["console-fail-test/setup"], }, }); From 8191a0b0a53fde84f282a4cb3929cce046ce9060 Mon Sep 17 00:00:00 2001 From: David Humphrey Date: Tue, 4 Mar 2025 08:48:42 -0500 Subject: [PATCH 2/2] Fix CI issues --- knip.json | 7 ++++++- tests/smoke/cloudflare/cloudflare.test.ts | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/knip.json b/knip.json index 2242124..62cd134 100644 --- a/knip.json +++ b/knip.json @@ -1,7 +1,12 @@ { "$schema": "https://unpkg.com/knip@latest/schema.json", "entry": ["src/index.ts!"], - "ignoreDependencies": ["deno", "bun"], + "ignoreDependencies": [ + "deno", + "bun", + "miniflare", + "@cloudflare/workers-types" + ], "ignoreExportsUsedInFile": { "interface": true, "type": true }, "project": ["src/**/*.ts!"] } diff --git a/tests/smoke/cloudflare/cloudflare.test.ts b/tests/smoke/cloudflare/cloudflare.test.ts index 8a1113f..67dfb08 100644 --- a/tests/smoke/cloudflare/cloudflare.test.ts +++ b/tests/smoke/cloudflare/cloudflare.test.ts @@ -1,3 +1,4 @@ +// @ts-ignore - need to build before this will exist import { decryptSops } from "../../../dist/index.js"; import { describe, test, expect } from "vitest"; import original from "../../data/secret.json" assert { type: "json" };