diff --git a/README.md b/README.md index 4d55152..15e03a3 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,6 @@ You can configure additional options using `cloudflareDev: { }` in `nitro.config - `persistDir`: Sets the persist dir (default `.wrangler/state/v3`). - `configPath`: Sets a custom path for `wrangler.toml` file. - `silent`: Hide initial banner. -- `shamefullyPatchR2Buckets`: Add workaround for https://github.com/cloudflare/workers-sdk/issues/5360 - `environment`: Sets specific environment (useful for multi-environment configurations) ## Development diff --git a/examples/nitro/nitro.config.ts b/examples/nitro/nitro.config.ts index ec77b0e..2345626 100644 --- a/examples/nitro/nitro.config.ts +++ b/examples/nitro/nitro.config.ts @@ -2,8 +2,5 @@ import nitroCloudflareBindings from "nitro-cloudflare-dev"; // https://nitro.unjs.io/config export default defineNitroConfig({ - modules: [nitroCloudflareBindings], - cloudflareDev: { - shamefullyPatchR2Buckets: true, - }, + modules: [nitroCloudflareBindings] }); diff --git a/examples/nuxt/nuxt.config.ts b/examples/nuxt/nuxt.config.ts index eee41c5..9313f97 100644 --- a/examples/nuxt/nuxt.config.ts +++ b/examples/nuxt/nuxt.config.ts @@ -1,4 +1,5 @@ // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ modules: ["nitro-cloudflare-dev"], -}); + compatibilityDate: "2024-10-10", +}); \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f1001be..1567934 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,7 +50,7 @@ importers: version: 2.9.7(magicast@0.3.5)(webpack-sources@3.2.3) nuxt: specifier: ^3.13.2 - version: 3.13.2(@parcel/watcher@2.4.1)(@types/node@22.7.5)(eslint@9.12.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.5)(terser@5.34.1)(typescript@5.6.3)(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1))(webpack-sources@3.2.3) + version: 3.13.2(@parcel/watcher@2.4.1)(@types/node@22.7.5)(eslint@9.12.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.5)(terser@5.34.1)(typescript@5.6.3)(webpack-sources@3.2.3) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -5299,12 +5299,11 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@1.5.2(magicast@0.3.5)(rollup@3.29.5)(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1))(webpack-sources@3.2.3)': + '@nuxt/devtools-kit@1.5.2(magicast@0.3.5)(rollup@3.29.5)(webpack-sources@3.2.3)': dependencies: '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.5)(webpack-sources@3.2.3) '@nuxt/schema': 3.13.2(rollup@3.29.5)(webpack-sources@3.2.3) execa: 7.2.0 - vite: 5.4.8(@types/node@22.7.5)(terser@5.34.1) transitivePeerDependencies: - magicast - rollup @@ -5336,10 +5335,10 @@ snapshots: rc9: 2.1.2 semver: 7.6.3 - '@nuxt/devtools@1.5.2(rollup@3.29.5)(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1))(vue@3.5.11(typescript@5.6.3))(webpack-sources@3.2.3)': + '@nuxt/devtools@1.5.2(rollup@3.29.5)(vue@3.5.11(typescript@5.6.3))(webpack-sources@3.2.3)': dependencies: '@antfu/utils': 0.7.10 - '@nuxt/devtools-kit': 1.5.2(magicast@0.3.5)(rollup@3.29.5)(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1))(webpack-sources@3.2.3) + '@nuxt/devtools-kit': 1.5.2(magicast@0.3.5)(rollup@3.29.5)(webpack-sources@3.2.3) '@nuxt/devtools-wizard': 1.5.2 '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.5)(webpack-sources@3.2.3) '@vue/devtools-core': 7.4.4(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1))(vue@3.5.11(typescript@5.6.3)) @@ -5371,8 +5370,7 @@ snapshots: sirv: 2.0.4 tinyglobby: 0.2.6 unimport: 3.13.1(rollup@3.29.5)(webpack-sources@3.2.3) - vite: 5.4.8(@types/node@22.7.5)(terser@5.34.1) - vite-plugin-inspect: 0.8.7(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.5)(webpack-sources@3.2.3))(rollup@3.29.5)(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1)) + vite-plugin-inspect: 0.8.7(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.5)(webpack-sources@3.2.3))(rollup@3.29.5) vite-plugin-vue-inspector: 5.1.3(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1)) which: 3.0.1 ws: 8.18.0 @@ -7968,10 +7966,10 @@ snapshots: nuxi@3.14.0: {} - nuxt@3.13.2(@parcel/watcher@2.4.1)(@types/node@22.7.5)(eslint@9.12.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.5)(terser@5.34.1)(typescript@5.6.3)(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1))(webpack-sources@3.2.3): + nuxt@3.13.2(@parcel/watcher@2.4.1)(@types/node@22.7.5)(eslint@9.12.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.5)(terser@5.34.1)(typescript@5.6.3)(webpack-sources@3.2.3): dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 1.5.2(rollup@3.29.5)(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1))(vue@3.5.11(typescript@5.6.3))(webpack-sources@3.2.3) + '@nuxt/devtools': 1.5.2(rollup@3.29.5)(vue@3.5.11(typescript@5.6.3))(webpack-sources@3.2.3) '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.5)(webpack-sources@3.2.3) '@nuxt/schema': 3.13.2(rollup@3.29.5)(webpack-sources@3.2.3) '@nuxt/telemetry': 2.6.0(magicast@0.3.5)(rollup@3.29.5)(webpack-sources@3.2.3) @@ -9319,7 +9317,7 @@ snapshots: optionator: 0.9.4 typescript: 5.6.3 - vite-plugin-inspect@0.8.7(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.5)(webpack-sources@3.2.3))(rollup@3.29.5)(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1)): + vite-plugin-inspect@0.8.7(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.5)(webpack-sources@3.2.3))(rollup@3.29.5): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.2(rollup@3.29.5) @@ -9330,7 +9328,6 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.1.0 sirv: 2.0.4 - vite: 5.4.8(@types/node@22.7.5)(terser@5.34.1) optionalDependencies: '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.5)(webpack-sources@3.2.3) transitivePeerDependencies: diff --git a/src/index.ts b/src/index.ts index a767b7b..c207385 100644 --- a/src/index.ts +++ b/src/index.ts @@ -16,8 +16,6 @@ declare module "nitropack" { environment?: string; persistDir?: string; silent?: boolean; - /** workaround for https://github.com/cloudflare/workers-sdk/issues/5360 */ - shamefullyPatchR2Buckets?: boolean; }; } } @@ -71,8 +69,6 @@ async function nitroModule(nitro: Nitro) { // Share config to the runtime nitro.options.runtimeConfig.wrangler = { ...nitro.options.runtimeConfig.wrangler, - shamefullyPatchR2Buckets: - nitro.options.cloudflareDev?.shamefullyPatchR2Buckets, configPath, persistDir, environment: nitro.options.cloudflareDev?.environment, diff --git a/src/runtime/plugin.dev.ts b/src/runtime/plugin.dev.ts index 32544ce..ef52793 100644 --- a/src/runtime/plugin.dev.ts +++ b/src/runtime/plugin.dev.ts @@ -67,7 +67,6 @@ async function _getPlatformProxy() { wrangler: { configPath: string; persistDir: string; - shamefullyPatchR2Buckets?: boolean; environment?: string; }; } = useRuntimeConfig(); @@ -78,16 +77,6 @@ async function _getPlatformProxy() { environment: runtimeConfig.wrangler.environment, }); - if (runtimeConfig.wrangler.shamefullyPatchR2Buckets) { - const { patchR2Bucket } = await import("./r2-patch"); - for (const [key, binding] of Object.entries(proxy.env) as [string, any][]) { - if (binding.createMultipartUpload) { - // console.log("Patching R2Bucket", key); - proxy.env[key] = patchR2Bucket(binding); - } - } - } - return proxy; } diff --git a/src/runtime/r2-patch.ts b/src/runtime/r2-patch.ts deleted file mode 100644 index aaa7402..0000000 --- a/src/runtime/r2-patch.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { R2Bucket } from "@cloudflare/workers-types"; -/** - * Workaround for https://github.com/cloudflare/workers-sdk/issues/5360 - */ -export function patchR2Bucket(bucket: R2Bucket) { - let _mutex: Promise | undefined; - - const _get = bucket.get.bind(bucket); - - async function getAndRead(...args: Parameters) { - const obj = await _get(...args); - if (!obj) { - return obj; - } - const chunks: any[] = []; - for await (const chunk of obj.body) { - chunks.push(chunk); - } - const body = new ReadableStream({ - start(controller) { - for (const chunk of chunks) { - controller.enqueue(chunk); - } - controller.close(); - }, - }); - return { ...obj, body }; - } - - async function get(...args: Parameters) { - while (_mutex) { - await _mutex; - } - try { - _mutex = getAndRead(...args); - const obj = await _mutex; - return obj; - } finally { - _mutex = undefined; - } - } - - return new Proxy(bucket, { - get(target, prop) { - if (prop === "get") { - return get; - } - return Reflect.get(target, prop); - }, - }); -}