From 8b3e3bcdd64c45cbc0960c68fe23cf0e7ea78c9d Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Tue, 25 Feb 2025 17:45:26 +0000 Subject: [PATCH 01/23] add `defineConfig` utility this change adds a new `defineConfig` utility that developers can use in their `open-next.config.ts` file to easily generate a configuration compatible with the adapter --- .changeset/cold-numbers-bow.md | 20 ++++++ examples/bugs/gh-119/open-next.config.ts | 26 +------ examples/bugs/gh-219/open-next.config.ts | 26 +------ examples/bugs/gh-223/open-next.config.ts | 25 +------ examples/create-next-app/open-next.config.ts | 26 +------ .../e2e/app-pages-router/open-next.config.ts | 29 ++------ examples/e2e/pages-router/open-next.config.ts | 31 ++------ examples/middleware/open-next.config.ts | 26 +------ examples/playground15/open-next.config.ts | 28 ++------ examples/ssg-app/open-next.config.ts | 28 ++------ .../vercel-blog-starter/open-next.config.ts | 28 ++------ packages/cloudflare/package.json | 5 ++ packages/cloudflare/src/api/config.ts | 72 +++++++++++++++++++ .../templates/defaults/open-next.config.ts | 29 ++------ 14 files changed, 135 insertions(+), 264 deletions(-) create mode 100644 .changeset/cold-numbers-bow.md create mode 100644 packages/cloudflare/src/api/config.ts diff --git a/.changeset/cold-numbers-bow.md b/.changeset/cold-numbers-bow.md new file mode 100644 index 000000000..99c581675 --- /dev/null +++ b/.changeset/cold-numbers-bow.md @@ -0,0 +1,20 @@ +--- +"@opennextjs/cloudflare": patch +--- + +add `defineConfig` utility + +this change adds a new `defineConfig` utility that developers can use in their `open-next.config.ts` +file to easily generate a configuration compatible with the adapter + +Example usage: + +```ts +// open-next.config.ts +import cache from "@opennextjs/cloudflare/kv-cache"; +import { defineConfig } from "@opennextjs/cloudflare/config"; + +export default defineConfig({ + incrementalCache: cache, +}); +``` diff --git a/examples/bugs/gh-119/open-next.config.ts b/examples/bugs/gh-119/open-next.config.ts index d976688e6..d2d2d316d 100644 --- a/examples/bugs/gh-119/open-next.config.ts +++ b/examples/bugs/gh-119/open-next.config.ts @@ -1,25 +1,3 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; +import { defineConfig } from "@opennextjs/cloudflare/config"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - // Unused implementation - incrementalCache: "dummy", - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineConfig(); diff --git a/examples/bugs/gh-219/open-next.config.ts b/examples/bugs/gh-219/open-next.config.ts index d976688e6..d2d2d316d 100644 --- a/examples/bugs/gh-219/open-next.config.ts +++ b/examples/bugs/gh-219/open-next.config.ts @@ -1,25 +1,3 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; +import { defineConfig } from "@opennextjs/cloudflare/config"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - // Unused implementation - incrementalCache: "dummy", - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineConfig(); diff --git a/examples/bugs/gh-223/open-next.config.ts b/examples/bugs/gh-223/open-next.config.ts index 360c2da7d..d2d2d316d 100644 --- a/examples/bugs/gh-223/open-next.config.ts +++ b/examples/bugs/gh-223/open-next.config.ts @@ -1,24 +1,3 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next"; +import { defineConfig } from "@opennextjs/cloudflare/config"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: "dummy", - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineConfig(); diff --git a/examples/create-next-app/open-next.config.ts b/examples/create-next-app/open-next.config.ts index d976688e6..6f41c28ef 100644 --- a/examples/create-next-app/open-next.config.ts +++ b/examples/create-next-app/open-next.config.ts @@ -1,25 +1,3 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; +import { defineConfig } from "@opennextjs/cloudflare/config"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - // Unused implementation - incrementalCache: "dummy", - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineConfig({}); diff --git a/examples/e2e/app-pages-router/open-next.config.ts b/examples/e2e/app-pages-router/open-next.config.ts index b8671cf5a..9e3d19764 100644 --- a/examples/e2e/app-pages-router/open-next.config.ts +++ b/examples/e2e/app-pages-router/open-next.config.ts @@ -1,27 +1,8 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; import kvCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; +import { defineConfig } from "@opennextjs/cloudflare/config"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: () => kvCache, - queue: () => memoryQueue, - // Unused implementation - tagCache: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineConfig({ + incrementalCache: kvCache, + queue: memoryQueue, +}); diff --git a/examples/e2e/pages-router/open-next.config.ts b/examples/e2e/pages-router/open-next.config.ts index b8671cf5a..78336e36e 100644 --- a/examples/e2e/pages-router/open-next.config.ts +++ b/examples/e2e/pages-router/open-next.config.ts @@ -1,27 +1,8 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; -import kvCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; +import cache from "@opennextjs/cloudflare/kv-cache"; +import { defineConfig } from "@opennextjs/cloudflare/config"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: () => kvCache, - queue: () => memoryQueue, - // Unused implementation - tagCache: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineConfig({ + incrementalCache: cache, + queue: memoryQueue, +}); diff --git a/examples/middleware/open-next.config.ts b/examples/middleware/open-next.config.ts index d976688e6..d2d2d316d 100644 --- a/examples/middleware/open-next.config.ts +++ b/examples/middleware/open-next.config.ts @@ -1,25 +1,3 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; +import { defineConfig } from "@opennextjs/cloudflare/config"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - // Unused implementation - incrementalCache: "dummy", - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineConfig(); diff --git a/examples/playground15/open-next.config.ts b/examples/playground15/open-next.config.ts index ef2e20a9d..2167c4ea8 100644 --- a/examples/playground15/open-next.config.ts +++ b/examples/playground15/open-next.config.ts @@ -1,26 +1,6 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; import cache from "@opennextjs/cloudflare/kv-cache"; +import { defineConfig } from "@opennextjs/cloudflare/config"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: async () => cache, - queue: "direct", - // Unused implementation - tagCache: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineConfig({ + incrementalCache: cache, +}); diff --git a/examples/ssg-app/open-next.config.ts b/examples/ssg-app/open-next.config.ts index e860ec20f..2167c4ea8 100644 --- a/examples/ssg-app/open-next.config.ts +++ b/examples/ssg-app/open-next.config.ts @@ -1,26 +1,6 @@ -// default open-next.config.ts file created by @opennextjs/cloudflare - import cache from "@opennextjs/cloudflare/kv-cache"; +import { defineConfig } from "@opennextjs/cloudflare/config"; -const config = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: async () => cache, - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineConfig({ + incrementalCache: cache, +}); diff --git a/examples/vercel-blog-starter/open-next.config.ts b/examples/vercel-blog-starter/open-next.config.ts index 71d02c635..2167c4ea8 100644 --- a/examples/vercel-blog-starter/open-next.config.ts +++ b/examples/vercel-blog-starter/open-next.config.ts @@ -1,26 +1,6 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; import cache from "@opennextjs/cloudflare/kv-cache"; +import { defineConfig } from "@opennextjs/cloudflare/config"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: async () => cache, - // Unused implementations - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineConfig({ + incrementalCache: cache, +}); diff --git a/packages/cloudflare/package.json b/packages/cloudflare/package.json index 62b11a3aa..95aec7b12 100644 --- a/packages/cloudflare/package.json +++ b/packages/cloudflare/package.json @@ -24,6 +24,11 @@ "types": "./dist/api/index.d.ts", "default": "./dist/api/index.js" }, + "./config": { + "import": "./dist/api/config.js", + "types": "./dist/api/config.d.ts", + "default": "./dist/api/config.js" + }, "./*": { "import": "./dist/api/*.js", "types": "./dist/api/*.d.ts", diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts new file mode 100644 index 000000000..963afe06c --- /dev/null +++ b/packages/cloudflare/src/api/config.ts @@ -0,0 +1,72 @@ +import { OpenNextConfig } from "@opennextjs/aws/types/open-next"; +import type { IncrementalCache, Queue, TagCache } from "@opennextjs/aws/types/overrides"; + +export type CloudflareConfigOptions = { + /** + * The incremental cache implementation to use + * + * see: https://opennext.js.org/aws/config/overrides/incremental_cache + */ + incrementalCache?: IncrementalCache | (() => IncrementalCache | Promise); + /** + * The tag cache implementation to use + * + * see: https://opennext.js.org/aws/config/overrides/tag_cache + */ + tagCache?: TagCache | (() => TagCache | Promise); + + /** + * The revalidation queue implementation to use + * + * see: https://opennext.js.org/aws/config/overrides/queue + */ + queue?: Queue | (() => Queue | Promise); +}; + +/** + * Defines the OpenNext configuration that targets the Cloudflare adapter + * + * @param options options that enabled you to configure the application's behavior + * @returns the OpenNext configuration object + */ +export function defineConfig(options: CloudflareConfigOptions = {}): OpenNextConfig { + const { incrementalCache, tagCache, queue } = options; + return { + default: { + override: { + wrapper: "cloudflare-node", + converter: "edge", + incrementalCache: resolveOverride(incrementalCache), + tagCache: resolveOverride(tagCache), + queue: resolveOverride(queue), + }, + }, + + middleware: { + external: true, + override: { + wrapper: "cloudflare-edge", + converter: "edge", + proxyExternalRequest: "fetch", + }, + }, + + dangerous: { + enableCacheInterception: false, + }, + }; +} + +function resolveOverride( + value: T | (() => T | Promise) | undefined +): (() => Promise) | "dummy" { + if (!value) { + return "dummy"; + } + + if (typeof value === "function") { + return async () => value(); + } + + return async () => value; +} diff --git a/packages/cloudflare/templates/defaults/open-next.config.ts b/packages/cloudflare/templates/defaults/open-next.config.ts index e860ec20f..6ae379fe6 100644 --- a/packages/cloudflare/templates/defaults/open-next.config.ts +++ b/packages/cloudflare/templates/defaults/open-next.config.ts @@ -1,26 +1,7 @@ // default open-next.config.ts file created by @opennextjs/cloudflare +import { defineConfig } from "@opennextjs/cloudflare/dist/api/config"; +import cache from "@opennextjs/cloudflare/dist/api/kv-cache"; -import cache from "@opennextjs/cloudflare/kv-cache"; - -const config = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: async () => cache, - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineConfig({ + incrementalCache: cache, +}); From 508ec2cc88b58115eab443a5631ecd3979c89e26 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Tue, 25 Feb 2025 17:45:26 +0000 Subject: [PATCH 02/23] add `defineConfig` utility this change adds a new `defineConfig` utility that developers can use in their `open-next.config.ts` file to easily generate a configuration compatible with the adapter --- examples/playground14/open-next.config.ts | 28 ++++------------------- 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/examples/playground14/open-next.config.ts b/examples/playground14/open-next.config.ts index ef2e20a9d..2167c4ea8 100644 --- a/examples/playground14/open-next.config.ts +++ b/examples/playground14/open-next.config.ts @@ -1,26 +1,6 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; import cache from "@opennextjs/cloudflare/kv-cache"; +import { defineConfig } from "@opennextjs/cloudflare/config"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: async () => cache, - queue: "direct", - // Unused implementation - tagCache: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineConfig({ + incrementalCache: cache, +}); From 8017fec45a06eb9425e3497c51147db7f795c013 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Wed, 26 Feb 2025 09:49:26 +0000 Subject: [PATCH 03/23] `defineConfig` -> `defineCloudflareConfig` --- .changeset/cold-numbers-bow.md | 8 ++++---- examples/bugs/gh-119/open-next.config.ts | 4 ++-- examples/bugs/gh-219/open-next.config.ts | 4 ++-- examples/bugs/gh-223/open-next.config.ts | 4 ++-- examples/create-next-app/open-next.config.ts | 4 ++-- examples/e2e/app-pages-router/open-next.config.ts | 4 ++-- examples/e2e/pages-router/open-next.config.ts | 4 ++-- examples/middleware/open-next.config.ts | 4 ++-- examples/playground14/open-next.config.ts | 4 ++-- examples/playground15/open-next.config.ts | 4 ++-- examples/ssg-app/open-next.config.ts | 4 ++-- examples/vercel-blog-starter/open-next.config.ts | 4 ++-- packages/cloudflare/src/api/config.ts | 2 +- .../cloudflare/templates/defaults/open-next.config.ts | 4 ++-- 14 files changed, 29 insertions(+), 29 deletions(-) diff --git a/.changeset/cold-numbers-bow.md b/.changeset/cold-numbers-bow.md index 99c581675..b9c3d9337 100644 --- a/.changeset/cold-numbers-bow.md +++ b/.changeset/cold-numbers-bow.md @@ -2,9 +2,9 @@ "@opennextjs/cloudflare": patch --- -add `defineConfig` utility +add `defineCloudflareConfig` utility -this change adds a new `defineConfig` utility that developers can use in their `open-next.config.ts` +this change adds a new `defineCloudflareConfig` utility that developers can use in their `open-next.config.ts` file to easily generate a configuration compatible with the adapter Example usage: @@ -12,9 +12,9 @@ Example usage: ```ts // open-next.config.ts import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineConfig({ +export default defineCloudflareConfig({ incrementalCache: cache, }); ``` diff --git a/examples/bugs/gh-119/open-next.config.ts b/examples/bugs/gh-119/open-next.config.ts index d2d2d316d..b3c5d9961 100644 --- a/examples/bugs/gh-119/open-next.config.ts +++ b/examples/bugs/gh-119/open-next.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineConfig(); +export default defineCloudflareConfig(); diff --git a/examples/bugs/gh-219/open-next.config.ts b/examples/bugs/gh-219/open-next.config.ts index d2d2d316d..b3c5d9961 100644 --- a/examples/bugs/gh-219/open-next.config.ts +++ b/examples/bugs/gh-219/open-next.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineConfig(); +export default defineCloudflareConfig(); diff --git a/examples/bugs/gh-223/open-next.config.ts b/examples/bugs/gh-223/open-next.config.ts index d2d2d316d..b3c5d9961 100644 --- a/examples/bugs/gh-223/open-next.config.ts +++ b/examples/bugs/gh-223/open-next.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineConfig(); +export default defineCloudflareConfig(); diff --git a/examples/create-next-app/open-next.config.ts b/examples/create-next-app/open-next.config.ts index 6f41c28ef..11a806d1f 100644 --- a/examples/create-next-app/open-next.config.ts +++ b/examples/create-next-app/open-next.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineConfig({}); +export default defineCloudflareConfig({}); diff --git a/examples/e2e/app-pages-router/open-next.config.ts b/examples/e2e/app-pages-router/open-next.config.ts index 9e3d19764..39daeb6f7 100644 --- a/examples/e2e/app-pages-router/open-next.config.ts +++ b/examples/e2e/app-pages-router/open-next.config.ts @@ -1,8 +1,8 @@ import kvCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; -import { defineConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineConfig({ +export default defineCloudflareConfig({ incrementalCache: kvCache, queue: memoryQueue, }); diff --git a/examples/e2e/pages-router/open-next.config.ts b/examples/e2e/pages-router/open-next.config.ts index 78336e36e..138842002 100644 --- a/examples/e2e/pages-router/open-next.config.ts +++ b/examples/e2e/pages-router/open-next.config.ts @@ -1,8 +1,8 @@ import memoryQueue from "@opennextjs/cloudflare/memory-queue"; import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineConfig({ +export default defineCloudflareConfig({ incrementalCache: cache, queue: memoryQueue, }); diff --git a/examples/middleware/open-next.config.ts b/examples/middleware/open-next.config.ts index d2d2d316d..b3c5d9961 100644 --- a/examples/middleware/open-next.config.ts +++ b/examples/middleware/open-next.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineConfig(); +export default defineCloudflareConfig(); diff --git a/examples/playground14/open-next.config.ts b/examples/playground14/open-next.config.ts index 2167c4ea8..a5cac2f2e 100644 --- a/examples/playground14/open-next.config.ts +++ b/examples/playground14/open-next.config.ts @@ -1,6 +1,6 @@ import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineConfig({ +export default defineCloudflareConfig({ incrementalCache: cache, }); diff --git a/examples/playground15/open-next.config.ts b/examples/playground15/open-next.config.ts index 2167c4ea8..a5cac2f2e 100644 --- a/examples/playground15/open-next.config.ts +++ b/examples/playground15/open-next.config.ts @@ -1,6 +1,6 @@ import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineConfig({ +export default defineCloudflareConfig({ incrementalCache: cache, }); diff --git a/examples/ssg-app/open-next.config.ts b/examples/ssg-app/open-next.config.ts index 2167c4ea8..a5cac2f2e 100644 --- a/examples/ssg-app/open-next.config.ts +++ b/examples/ssg-app/open-next.config.ts @@ -1,6 +1,6 @@ import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineConfig({ +export default defineCloudflareConfig({ incrementalCache: cache, }); diff --git a/examples/vercel-blog-starter/open-next.config.ts b/examples/vercel-blog-starter/open-next.config.ts index 2167c4ea8..a5cac2f2e 100644 --- a/examples/vercel-blog-starter/open-next.config.ts +++ b/examples/vercel-blog-starter/open-next.config.ts @@ -1,6 +1,6 @@ import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineConfig({ +export default defineCloudflareConfig({ incrementalCache: cache, }); diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index 963afe06c..dcb702619 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -29,7 +29,7 @@ export type CloudflareConfigOptions = { * @param options options that enabled you to configure the application's behavior * @returns the OpenNext configuration object */ -export function defineConfig(options: CloudflareConfigOptions = {}): OpenNextConfig { +export function defineCloudflareConfig(options: CloudflareConfigOptions = {}): OpenNextConfig { const { incrementalCache, tagCache, queue } = options; return { default: { diff --git a/packages/cloudflare/templates/defaults/open-next.config.ts b/packages/cloudflare/templates/defaults/open-next.config.ts index 6ae379fe6..aee4e5ef9 100644 --- a/packages/cloudflare/templates/defaults/open-next.config.ts +++ b/packages/cloudflare/templates/defaults/open-next.config.ts @@ -1,7 +1,7 @@ // default open-next.config.ts file created by @opennextjs/cloudflare -import { defineConfig } from "@opennextjs/cloudflare/dist/api/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/dist/api/config"; import cache from "@opennextjs/cloudflare/dist/api/kv-cache"; -export default defineConfig({ +export default defineCloudflareConfig({ incrementalCache: cache, }); From d56c5b07121f3843b52c52d55f31ac1b546c1074 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Wed, 26 Feb 2025 09:51:04 +0000 Subject: [PATCH 04/23] remove unnecessary `dangerous.enableCacheInterception` option --- packages/cloudflare/src/api/config.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index dcb702619..6144d6462 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -50,10 +50,6 @@ export function defineCloudflareConfig(options: CloudflareConfigOptions = {}): O proxyExternalRequest: "fetch", }, }, - - dangerous: { - enableCacheInterception: false, - }, }; } From 36cb6d081a762a5ea748392584fc35c5277725cc Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Wed, 26 Feb 2025 10:26:19 +0000 Subject: [PATCH 05/23] improve jsdoc comments --- packages/cloudflare/src/api/config.ts | 40 +++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index 6144d6462..cd80e8450 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -3,22 +3,50 @@ import type { IncrementalCache, Queue, TagCache } from "@opennextjs/aws/types/ov export type CloudflareConfigOptions = { /** - * The incremental cache implementation to use + * The incremental cache implementation to use (for more details see the [Incremental Cache documentation](https://opennext.js.org/aws/config/overrides/incremental_cache)) * - * see: https://opennext.js.org/aws/config/overrides/incremental_cache + * `@opennextjs/cloudflare` offers a kv incremental cache implementation ready + * to use which can be imported from `"@opennextjs/cloudflare/kv-cache"` + * + * @example + * import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; + * import cache from "@opennextjs/cloudflare/kv-cache"; + * + * export default defineCloudflareConfig({ + * incrementalCache: cache, + * }); */ incrementalCache?: IncrementalCache | (() => IncrementalCache | Promise); + /** - * The tag cache implementation to use + * The tag cache implementation to use (for more details see the [Tag Cache documentation](https://opennext.js.org/aws/config/overrides/tag_cache)) + * + * `@opennextjs/cloudflare` offers a d1 tag cache implementation ready + * to use which can be imported from `"@opennextjs/cloudflare/d1-tag-cache"` * - * see: https://opennext.js.org/aws/config/overrides/tag_cache + * @example + * import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; + * import cache from "@opennextjs/cloudflare/d1-tag-cache"; + * + * export default defineCloudflareConfig({ + * tagCache: cache, + * }); */ tagCache?: TagCache | (() => TagCache | Promise); /** - * The revalidation queue implementation to use + * The revalidation queue implementation to use (for more details see the [Queue documentation](https://opennext.js.org/aws/config/overrides/queue)) + * + * `@opennextjs/cloudflare` offers an in memory queue implementation ready + * to use which can be imported from `"@opennextjs/cloudflare/memory-queue"` + * + * @example + * import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; + * import memoryQueue from "@opennextjs/cloudflare/memory-queue"; * - * see: https://opennext.js.org/aws/config/overrides/queue + * export default defineCloudflareConfig({ + * queue: memoryQueue, + * }); */ queue?: Queue | (() => Queue | Promise); }; From fe3a51b2d08cfa0b3db3b531e8ec3deae19f1a25 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Wed, 26 Feb 2025 10:28:55 +0000 Subject: [PATCH 06/23] update some missing `open-next.config.ts` files --- examples/e2e/app-router/open-next.config.ts | 29 ++++--------------- .../open-next.config.ts | 26 ++--------------- examples/vercel-commerce/open-next.config.ts | 26 ++--------------- 3 files changed, 10 insertions(+), 71 deletions(-) diff --git a/examples/e2e/app-router/open-next.config.ts b/examples/e2e/app-router/open-next.config.ts index df13dfc7f..b516b1a15 100644 --- a/examples/e2e/app-router/open-next.config.ts +++ b/examples/e2e/app-router/open-next.config.ts @@ -1,27 +1,10 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; import tagCache from "@opennextjs/cloudflare/d1-tag-cache"; import incrementalCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: async () => incrementalCache, - tagCache: () => tagCache, - queue: () => memoryQueue, - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig({ + incrementalCache, + tagCache, + queue: memoryQueue, +}); diff --git a/examples/next-partial-prerendering/open-next.config.ts b/examples/next-partial-prerendering/open-next.config.ts index be6fadc34..f189176e9 100644 --- a/examples/next-partial-prerendering/open-next.config.ts +++ b/examples/next-partial-prerendering/open-next.config.ts @@ -1,25 +1,3 @@ -import type { OpenNextConfig } from '@opennextjs/aws/types/open-next.js'; +import { defineCloudflareConfig } from '@opennextjs/cloudflare/config'; -const config: OpenNextConfig = { - default: { - override: { - wrapper: 'cloudflare-node', - converter: 'edge', - // Unused implementation - incrementalCache: 'dummy', - tagCache: 'dummy', - queue: 'dummy', - }, - }, - - middleware: { - external: true, - override: { - wrapper: 'cloudflare-edge', - converter: 'edge', - proxyExternalRequest: 'fetch', - }, - }, -}; - -export default config; +export default defineCloudflareConfig(); diff --git a/examples/vercel-commerce/open-next.config.ts b/examples/vercel-commerce/open-next.config.ts index e26c466e1..f189176e9 100644 --- a/examples/vercel-commerce/open-next.config.ts +++ b/examples/vercel-commerce/open-next.config.ts @@ -1,25 +1,3 @@ -import type { OpenNextConfig } from '@opennextjs/aws/types/open-next'; +import { defineCloudflareConfig } from '@opennextjs/cloudflare/config'; -const config: OpenNextConfig = { - default: { - override: { - wrapper: 'cloudflare-node', - converter: 'edge', - // Unused implementation - incrementalCache: 'dummy', - tagCache: 'dummy', - queue: 'dummy' - } - }, - - middleware: { - external: true, - override: { - wrapper: 'cloudflare-edge', - converter: 'edge', - proxyExternalRequest: 'fetch' - } - } -}; - -export default config; +export default defineCloudflareConfig(); From 1cb04e3c034c2117fe499b612b1efc9893d8921c Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Wed, 26 Feb 2025 10:39:14 +0000 Subject: [PATCH 07/23] Update packages/cloudflare/src/api/config.ts Co-authored-by: Victor Berchet --- packages/cloudflare/src/api/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index cd80e8450..cab05a454 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -89,7 +89,7 @@ function resolveOverride( } if (typeof value === "function") { - return async () => value(); + return async () => await value(); } return async () => value; From 6881358937f9742070eb043421ee9a73793ccc4e Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Wed, 26 Feb 2025 11:01:21 +0000 Subject: [PATCH 08/23] remove unnecessary empty object --- examples/create-next-app/open-next.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/create-next-app/open-next.config.ts b/examples/create-next-app/open-next.config.ts index 11a806d1f..b3c5d9961 100644 --- a/examples/create-next-app/open-next.config.ts +++ b/examples/create-next-app/open-next.config.ts @@ -1,3 +1,3 @@ import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; -export default defineCloudflareConfig({}); +export default defineCloudflareConfig(); From ea6e59dc66faebe5a181ddb5fa05277df4e79e89 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Wed, 26 Feb 2025 11:02:50 +0000 Subject: [PATCH 09/23] remove unnecessary package.json export --- packages/cloudflare/package.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/cloudflare/package.json b/packages/cloudflare/package.json index 95aec7b12..62b11a3aa 100644 --- a/packages/cloudflare/package.json +++ b/packages/cloudflare/package.json @@ -24,11 +24,6 @@ "types": "./dist/api/index.d.ts", "default": "./dist/api/index.js" }, - "./config": { - "import": "./dist/api/config.js", - "types": "./dist/api/config.d.ts", - "default": "./dist/api/config.js" - }, "./*": { "import": "./dist/api/*.js", "types": "./dist/api/*.d.ts", From cbbdd6a706313989d2ec873e6de38e952a3e407b Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Wed, 26 Feb 2025 11:05:37 +0000 Subject: [PATCH 10/23] re-export `defineCloudflareConfig` from index --- .changeset/cold-numbers-bow.md | 2 +- examples/bugs/gh-119/open-next.config.ts | 2 +- examples/bugs/gh-219/open-next.config.ts | 2 +- examples/bugs/gh-223/open-next.config.ts | 2 +- examples/create-next-app/open-next.config.ts | 2 +- examples/e2e/app-pages-router/open-next.config.ts | 2 +- examples/e2e/app-router/open-next.config.ts | 2 +- examples/e2e/pages-router/open-next.config.ts | 2 +- examples/middleware/open-next.config.ts | 2 +- examples/playground14/open-next.config.ts | 2 +- examples/playground15/open-next.config.ts | 2 +- examples/ssg-app/open-next.config.ts | 2 +- examples/vercel-blog-starter/open-next.config.ts | 2 +- packages/cloudflare/src/api/config.ts | 6 +++--- packages/cloudflare/src/api/index.ts | 1 + 15 files changed, 17 insertions(+), 16 deletions(-) diff --git a/.changeset/cold-numbers-bow.md b/.changeset/cold-numbers-bow.md index b9c3d9337..921870ee6 100644 --- a/.changeset/cold-numbers-bow.md +++ b/.changeset/cold-numbers-bow.md @@ -12,7 +12,7 @@ Example usage: ```ts // open-next.config.ts import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig({ incrementalCache: cache, diff --git a/examples/bugs/gh-119/open-next.config.ts b/examples/bugs/gh-119/open-next.config.ts index b3c5d9961..ffd988785 100644 --- a/examples/bugs/gh-119/open-next.config.ts +++ b/examples/bugs/gh-119/open-next.config.ts @@ -1,3 +1,3 @@ -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig(); diff --git a/examples/bugs/gh-219/open-next.config.ts b/examples/bugs/gh-219/open-next.config.ts index b3c5d9961..ffd988785 100644 --- a/examples/bugs/gh-219/open-next.config.ts +++ b/examples/bugs/gh-219/open-next.config.ts @@ -1,3 +1,3 @@ -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig(); diff --git a/examples/bugs/gh-223/open-next.config.ts b/examples/bugs/gh-223/open-next.config.ts index b3c5d9961..ffd988785 100644 --- a/examples/bugs/gh-223/open-next.config.ts +++ b/examples/bugs/gh-223/open-next.config.ts @@ -1,3 +1,3 @@ -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig(); diff --git a/examples/create-next-app/open-next.config.ts b/examples/create-next-app/open-next.config.ts index b3c5d9961..ffd988785 100644 --- a/examples/create-next-app/open-next.config.ts +++ b/examples/create-next-app/open-next.config.ts @@ -1,3 +1,3 @@ -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig(); diff --git a/examples/e2e/app-pages-router/open-next.config.ts b/examples/e2e/app-pages-router/open-next.config.ts index 39daeb6f7..b8e45b4ab 100644 --- a/examples/e2e/app-pages-router/open-next.config.ts +++ b/examples/e2e/app-pages-router/open-next.config.ts @@ -1,6 +1,6 @@ import kvCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig({ incrementalCache: kvCache, diff --git a/examples/e2e/app-router/open-next.config.ts b/examples/e2e/app-router/open-next.config.ts index b516b1a15..144018b67 100644 --- a/examples/e2e/app-router/open-next.config.ts +++ b/examples/e2e/app-router/open-next.config.ts @@ -1,4 +1,4 @@ -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; import tagCache from "@opennextjs/cloudflare/d1-tag-cache"; import incrementalCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; diff --git a/examples/e2e/pages-router/open-next.config.ts b/examples/e2e/pages-router/open-next.config.ts index 138842002..e3ed5d42c 100644 --- a/examples/e2e/pages-router/open-next.config.ts +++ b/examples/e2e/pages-router/open-next.config.ts @@ -1,6 +1,6 @@ import memoryQueue from "@opennextjs/cloudflare/memory-queue"; import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig({ incrementalCache: cache, diff --git a/examples/middleware/open-next.config.ts b/examples/middleware/open-next.config.ts index b3c5d9961..ffd988785 100644 --- a/examples/middleware/open-next.config.ts +++ b/examples/middleware/open-next.config.ts @@ -1,3 +1,3 @@ -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig(); diff --git a/examples/playground14/open-next.config.ts b/examples/playground14/open-next.config.ts index a5cac2f2e..4d36da4b4 100644 --- a/examples/playground14/open-next.config.ts +++ b/examples/playground14/open-next.config.ts @@ -1,5 +1,5 @@ import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig({ incrementalCache: cache, diff --git a/examples/playground15/open-next.config.ts b/examples/playground15/open-next.config.ts index a5cac2f2e..4d36da4b4 100644 --- a/examples/playground15/open-next.config.ts +++ b/examples/playground15/open-next.config.ts @@ -1,5 +1,5 @@ import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig({ incrementalCache: cache, diff --git a/examples/ssg-app/open-next.config.ts b/examples/ssg-app/open-next.config.ts index a5cac2f2e..4d36da4b4 100644 --- a/examples/ssg-app/open-next.config.ts +++ b/examples/ssg-app/open-next.config.ts @@ -1,5 +1,5 @@ import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig({ incrementalCache: cache, diff --git a/examples/vercel-blog-starter/open-next.config.ts b/examples/vercel-blog-starter/open-next.config.ts index a5cac2f2e..4d36da4b4 100644 --- a/examples/vercel-blog-starter/open-next.config.ts +++ b/examples/vercel-blog-starter/open-next.config.ts @@ -1,5 +1,5 @@ import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig({ incrementalCache: cache, diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index cab05a454..890c27a28 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -9,7 +9,7 @@ export type CloudflareConfigOptions = { * to use which can be imported from `"@opennextjs/cloudflare/kv-cache"` * * @example - * import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; + * import { defineCloudflareConfig } from "@opennextjs/cloudflare"; * import cache from "@opennextjs/cloudflare/kv-cache"; * * export default defineCloudflareConfig({ @@ -25,7 +25,7 @@ export type CloudflareConfigOptions = { * to use which can be imported from `"@opennextjs/cloudflare/d1-tag-cache"` * * @example - * import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; + * import { defineCloudflareConfig } from "@opennextjs/cloudflare"; * import cache from "@opennextjs/cloudflare/d1-tag-cache"; * * export default defineCloudflareConfig({ @@ -41,7 +41,7 @@ export type CloudflareConfigOptions = { * to use which can be imported from `"@opennextjs/cloudflare/memory-queue"` * * @example - * import { defineCloudflareConfig } from "@opennextjs/cloudflare/config"; + * import { defineCloudflareConfig } from "@opennextjs/cloudflare"; * import memoryQueue from "@opennextjs/cloudflare/memory-queue"; * * export default defineCloudflareConfig({ diff --git a/packages/cloudflare/src/api/index.ts b/packages/cloudflare/src/api/index.ts index 574ce7de5..69a3c9ebf 100644 --- a/packages/cloudflare/src/api/index.ts +++ b/packages/cloudflare/src/api/index.ts @@ -1 +1,2 @@ export * from "./cloudflare-context.js"; +export { defineCloudflareConfig } from "./config.js"; From a95dfcd4388ed89bda36ba31539dd806c0783d6c Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Wed, 26 Feb 2025 18:40:58 +0000 Subject: [PATCH 11/23] reorder `defineCloudflareConfig` import --- .changeset/cold-numbers-bow.md | 2 +- examples/e2e/app-pages-router/open-next.config.ts | 2 +- examples/e2e/pages-router/open-next.config.ts | 2 +- examples/playground14/open-next.config.ts | 2 +- examples/playground15/open-next.config.ts | 2 +- examples/ssg-app/open-next.config.ts | 2 +- examples/vercel-blog-starter/open-next.config.ts | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.changeset/cold-numbers-bow.md b/.changeset/cold-numbers-bow.md index 921870ee6..e6d412001 100644 --- a/.changeset/cold-numbers-bow.md +++ b/.changeset/cold-numbers-bow.md @@ -11,8 +11,8 @@ Example usage: ```ts // open-next.config.ts -import cache from "@opennextjs/cloudflare/kv-cache"; import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import cache from "@opennextjs/cloudflare/kv-cache"; export default defineCloudflareConfig({ incrementalCache: cache, diff --git a/examples/e2e/app-pages-router/open-next.config.ts b/examples/e2e/app-pages-router/open-next.config.ts index b8e45b4ab..86ce92380 100644 --- a/examples/e2e/app-pages-router/open-next.config.ts +++ b/examples/e2e/app-pages-router/open-next.config.ts @@ -1,6 +1,6 @@ +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; import kvCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; -import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig({ incrementalCache: kvCache, diff --git a/examples/e2e/pages-router/open-next.config.ts b/examples/e2e/pages-router/open-next.config.ts index e3ed5d42c..67e95dd36 100644 --- a/examples/e2e/pages-router/open-next.config.ts +++ b/examples/e2e/pages-router/open-next.config.ts @@ -1,6 +1,6 @@ +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; import cache from "@opennextjs/cloudflare/kv-cache"; -import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig({ incrementalCache: cache, diff --git a/examples/playground14/open-next.config.ts b/examples/playground14/open-next.config.ts index 4d36da4b4..e86ffcaa4 100644 --- a/examples/playground14/open-next.config.ts +++ b/examples/playground14/open-next.config.ts @@ -1,5 +1,5 @@ -import cache from "@opennextjs/cloudflare/kv-cache"; import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import cache from "@opennextjs/cloudflare/kv-cache"; export default defineCloudflareConfig({ incrementalCache: cache, diff --git a/examples/playground15/open-next.config.ts b/examples/playground15/open-next.config.ts index 4d36da4b4..e86ffcaa4 100644 --- a/examples/playground15/open-next.config.ts +++ b/examples/playground15/open-next.config.ts @@ -1,5 +1,5 @@ -import cache from "@opennextjs/cloudflare/kv-cache"; import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import cache from "@opennextjs/cloudflare/kv-cache"; export default defineCloudflareConfig({ incrementalCache: cache, diff --git a/examples/ssg-app/open-next.config.ts b/examples/ssg-app/open-next.config.ts index 4d36da4b4..e86ffcaa4 100644 --- a/examples/ssg-app/open-next.config.ts +++ b/examples/ssg-app/open-next.config.ts @@ -1,5 +1,5 @@ -import cache from "@opennextjs/cloudflare/kv-cache"; import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import cache from "@opennextjs/cloudflare/kv-cache"; export default defineCloudflareConfig({ incrementalCache: cache, diff --git a/examples/vercel-blog-starter/open-next.config.ts b/examples/vercel-blog-starter/open-next.config.ts index 4d36da4b4..e86ffcaa4 100644 --- a/examples/vercel-blog-starter/open-next.config.ts +++ b/examples/vercel-blog-starter/open-next.config.ts @@ -1,5 +1,5 @@ -import cache from "@opennextjs/cloudflare/kv-cache"; import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import cache from "@opennextjs/cloudflare/kv-cache"; export default defineCloudflareConfig({ incrementalCache: cache, From 24d7032fff034b0e72bfb39fb80a4b5ae5d1867f Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Wed, 26 Feb 2025 18:44:54 +0000 Subject: [PATCH 12/23] update jsdoc comments to point to cloudflare caching doc page --- packages/cloudflare/src/api/config.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index 890c27a28..79263bc81 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -3,7 +3,9 @@ import type { IncrementalCache, Queue, TagCache } from "@opennextjs/aws/types/ov export type CloudflareConfigOptions = { /** - * The incremental cache implementation to use (for more details see the [Incremental Cache documentation](https://opennext.js.org/aws/config/overrides/incremental_cache)) + * + * + * The incremental cache implementation to use, for more details see the [Caching documentation](https://opennext.js.org/cloudflare/caching)) * * `@opennextjs/cloudflare` offers a kv incremental cache implementation ready * to use which can be imported from `"@opennextjs/cloudflare/kv-cache"` @@ -19,7 +21,7 @@ export type CloudflareConfigOptions = { incrementalCache?: IncrementalCache | (() => IncrementalCache | Promise); /** - * The tag cache implementation to use (for more details see the [Tag Cache documentation](https://opennext.js.org/aws/config/overrides/tag_cache)) + * The tag cache implementation to use, for more details see the [Caching documentation](https://opennext.js.org/cloudflare/caching)) * * `@opennextjs/cloudflare` offers a d1 tag cache implementation ready * to use which can be imported from `"@opennextjs/cloudflare/d1-tag-cache"` @@ -35,7 +37,7 @@ export type CloudflareConfigOptions = { tagCache?: TagCache | (() => TagCache | Promise); /** - * The revalidation queue implementation to use (for more details see the [Queue documentation](https://opennext.js.org/aws/config/overrides/queue)) + * The revalidation queue implementation to use, for more details see the [Caching documentation](https://opennext.js.org/cloudflare/caching)) * * `@opennextjs/cloudflare` offers an in memory queue implementation ready * to use which can be imported from `"@opennextjs/cloudflare/memory-queue"` From 7d00c9409275490c4cf3fd2e652897119e147065 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Wed, 26 Feb 2025 21:24:58 +0000 Subject: [PATCH 13/23] Apply suggestions from code review Co-authored-by: James Anderson --- packages/cloudflare/src/api/config.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index 79263bc81..bd221017b 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -3,8 +3,6 @@ import type { IncrementalCache, Queue, TagCache } from "@opennextjs/aws/types/ov export type CloudflareConfigOptions = { /** - * - * * The incremental cache implementation to use, for more details see the [Caching documentation](https://opennext.js.org/cloudflare/caching)) * * `@opennextjs/cloudflare` offers a kv incremental cache implementation ready From c3973ef5f7ce93ef22a23406032e4b734c9111d0 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Thu, 27 Feb 2025 10:14:30 +0000 Subject: [PATCH 14/23] remove unnecessary async await --- packages/cloudflare/src/api/config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index bd221017b..b12f743a1 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -83,13 +83,13 @@ export function defineCloudflareConfig(options: CloudflareConfigOptions = {}): O function resolveOverride( value: T | (() => T | Promise) | undefined -): (() => Promise) | "dummy" { +): (() => T | Promise) | "dummy" { if (!value) { return "dummy"; } if (typeof value === "function") { - return async () => await value(); + return () => value(); } return async () => value; From b22e564e45029a2a5a31a5d9a489c6f7db1ff5a1 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Thu, 27 Feb 2025 10:21:54 +0000 Subject: [PATCH 15/23] fix incorrect type --- packages/cloudflare/src/api/config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index b12f743a1..408bea27e 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -83,13 +83,13 @@ export function defineCloudflareConfig(options: CloudflareConfigOptions = {}): O function resolveOverride( value: T | (() => T | Promise) | undefined -): (() => T | Promise) | "dummy" { +): (() => Promise) | "dummy" { if (!value) { return "dummy"; } if (typeof value === "function") { - return () => value(); + return async () => value(); } return async () => value; From b9b9ade25a7ba6990dae7b1c7ddb3e03a7bb1254 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Thu, 27 Feb 2025 10:24:26 +0000 Subject: [PATCH 16/23] add back await --- packages/cloudflare/src/api/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index 408bea27e..bd221017b 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -89,7 +89,7 @@ function resolveOverride( } if (typeof value === "function") { - return async () => value(); + return async () => await value(); } return async () => value; From 121c363a830200af6314e30310f3e20be1aa49ff Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Thu, 27 Feb 2025 12:17:50 +0000 Subject: [PATCH 17/23] bump `@opennextjs/aws` dependency to `https://pkg.pr.new/@opennextjs/aws@755` --- .changeset/lovely-bugs-flow.md | 5 ++++ packages/cloudflare/src/api/config.ts | 4 +-- pnpm-lock.yaml | 39 ++++++++++----------------- 3 files changed, 21 insertions(+), 27 deletions(-) create mode 100644 .changeset/lovely-bugs-flow.md diff --git a/.changeset/lovely-bugs-flow.md b/.changeset/lovely-bugs-flow.md new file mode 100644 index 000000000..24b0454fe --- /dev/null +++ b/.changeset/lovely-bugs-flow.md @@ -0,0 +1,5 @@ +--- +"@opennextjs/cloudflare": patch +--- + +bump `@opennextjs/aws` dependency to `https://pkg.pr.new/@opennextjs/aws@755` diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index bd221017b..b12f743a1 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -83,13 +83,13 @@ export function defineCloudflareConfig(options: CloudflareConfigOptions = {}): O function resolveOverride( value: T | (() => T | Promise) | undefined -): (() => Promise) | "dummy" { +): (() => T | Promise) | "dummy" { if (!value) { return "dummy"; } if (typeof value === "function") { - return async () => await value(); + return () => value(); } return async () => value; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 177d18be5..8bfed9bc6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16000,7 +16000,7 @@ snapshots: debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -16019,7 +16019,7 @@ snapshots: debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -16038,7 +16038,7 @@ snapshots: debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 9.11.1(jiti@1.21.6) - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -16057,7 +16057,7 @@ snapshots: debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 9.19.0(jiti@1.21.6) - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -16070,18 +16070,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.7.3) - eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: @@ -16092,7 +16081,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: @@ -16103,7 +16092,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: @@ -16114,7 +16103,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: @@ -16125,7 +16114,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: @@ -16136,7 +16125,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: @@ -16158,7 +16147,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16186,7 +16175,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16215,7 +16204,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.11.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16244,7 +16233,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.19.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 From 1f3e28958a965b6259d9c99378b8a77a9d6deb20 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Thu, 27 Feb 2025 13:46:14 +0000 Subject: [PATCH 18/23] Apply suggestions from code review Co-authored-by: Victor Berchet --- packages/cloudflare/src/api/config.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index b12f743a1..370cd1a9d 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -16,7 +16,7 @@ export type CloudflareConfigOptions = { * incrementalCache: cache, * }); */ - incrementalCache?: IncrementalCache | (() => IncrementalCache | Promise); + incrementalCache?: "dummy" | IncrementalCache | (() => IncrementalCache | Promise); /** * The tag cache implementation to use, for more details see the [Caching documentation](https://opennext.js.org/cloudflare/caching)) @@ -32,7 +32,7 @@ export type CloudflareConfigOptions = { * tagCache: cache, * }); */ - tagCache?: TagCache | (() => TagCache | Promise); + tagCache?: "dummy" | TagCache | (() => TagCache | Promise); /** * The revalidation queue implementation to use, for more details see the [Caching documentation](https://opennext.js.org/cloudflare/caching)) @@ -48,7 +48,7 @@ export type CloudflareConfigOptions = { * queue: memoryQueue, * }); */ - queue?: Queue | (() => Queue | Promise); + queue?: "dummy" | "direct" | Queue | (() => Queue | Promise); }; /** @@ -88,9 +88,5 @@ function resolveOverride( return "dummy"; } - if (typeof value === "function") { - return () => value(); - } - - return async () => value; + return typeof value === "function" ? value : () => value; } From f5e69d5460493f9ac881559b1fa09df7617f6f0f Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Thu, 27 Feb 2025 15:00:41 +0000 Subject: [PATCH 19/23] fix broken types --- packages/cloudflare/src/api/config.ts | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index 370cd1a9d..0f445506a 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -1,4 +1,4 @@ -import { OpenNextConfig } from "@opennextjs/aws/types/open-next"; +import { BaseOverride, LazyLoadedOverride, OpenNextConfig } from "@opennextjs/aws/types/open-next"; import type { IncrementalCache, Queue, TagCache } from "@opennextjs/aws/types/overrides"; export type CloudflareConfigOptions = { @@ -59,6 +59,7 @@ export type CloudflareConfigOptions = { */ export function defineCloudflareConfig(options: CloudflareConfigOptions = {}): OpenNextConfig { const { incrementalCache, tagCache, queue } = options; + return { default: { override: { @@ -81,12 +82,22 @@ export function defineCloudflareConfig(options: CloudflareConfigOptions = {}): O }; } +type DummyOrLazyLoadedOverride = "dummy" | LazyLoadedOverride; + +type ResolveOverrideReturn = T extends Queue + ? "direct" | DummyOrLazyLoadedOverride + : DummyOrLazyLoadedOverride; + function resolveOverride( - value: T | (() => T | Promise) | undefined -): (() => T | Promise) | "dummy" { - if (!value) { - return "dummy"; + value: undefined | "dummy" | "direct" | T | (() => T | Promise) +): ResolveOverrideReturn { + if (!value || value === "dummy") { + return "dummy" as ResolveOverrideReturn; + } + + if (value === "direct") { + return "direct" as ResolveOverrideReturn; } - return typeof value === "function" ? value : () => value; + return (typeof value === "function" ? value : () => value) as ResolveOverrideReturn; } From f29e5c02dcecce8d4386f50ff0a12d1202feb00e Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Thu, 27 Feb 2025 15:04:53 +0000 Subject: [PATCH 20/23] use consistent names in overrides --- examples/e2e/app-pages-router/open-next.config.ts | 4 ++-- examples/e2e/app-router/open-next.config.ts | 8 ++++---- examples/e2e/pages-router/open-next.config.ts | 4 ++-- examples/playground14/open-next.config.ts | 4 ++-- examples/playground15/open-next.config.ts | 4 ++-- examples/ssg-app/open-next.config.ts | 4 ++-- examples/vercel-blog-starter/open-next.config.ts | 4 ++-- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/examples/e2e/app-pages-router/open-next.config.ts b/examples/e2e/app-pages-router/open-next.config.ts index 86ce92380..992d7fc80 100644 --- a/examples/e2e/app-pages-router/open-next.config.ts +++ b/examples/e2e/app-pages-router/open-next.config.ts @@ -1,8 +1,8 @@ import { defineCloudflareConfig } from "@opennextjs/cloudflare"; -import kvCache from "@opennextjs/cloudflare/kv-cache"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; export default defineCloudflareConfig({ - incrementalCache: kvCache, + incrementalCache: kvIncrementalCache, queue: memoryQueue, }); diff --git a/examples/e2e/app-router/open-next.config.ts b/examples/e2e/app-router/open-next.config.ts index 144018b67..00db54284 100644 --- a/examples/e2e/app-router/open-next.config.ts +++ b/examples/e2e/app-router/open-next.config.ts @@ -1,10 +1,10 @@ import { defineCloudflareConfig } from "@opennextjs/cloudflare"; -import tagCache from "@opennextjs/cloudflare/d1-tag-cache"; -import incrementalCache from "@opennextjs/cloudflare/kv-cache"; +import d1TagCache from "@opennextjs/cloudflare/d1-tag-cache"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; export default defineCloudflareConfig({ - incrementalCache, - tagCache, + incrementalCache: kvIncrementalCache, + tagCache: d1TagCache, queue: memoryQueue, }); diff --git a/examples/e2e/pages-router/open-next.config.ts b/examples/e2e/pages-router/open-next.config.ts index 67e95dd36..992d7fc80 100644 --- a/examples/e2e/pages-router/open-next.config.ts +++ b/examples/e2e/pages-router/open-next.config.ts @@ -1,8 +1,8 @@ import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; -import cache from "@opennextjs/cloudflare/kv-cache"; export default defineCloudflareConfig({ - incrementalCache: cache, + incrementalCache: kvIncrementalCache, queue: memoryQueue, }); diff --git a/examples/playground14/open-next.config.ts b/examples/playground14/open-next.config.ts index e86ffcaa4..1b5ed9cea 100644 --- a/examples/playground14/open-next.config.ts +++ b/examples/playground14/open-next.config.ts @@ -1,6 +1,6 @@ import { defineCloudflareConfig } from "@opennextjs/cloudflare"; -import cache from "@opennextjs/cloudflare/kv-cache"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; export default defineCloudflareConfig({ - incrementalCache: cache, + incrementalCache: kvIncrementalCache, }); diff --git a/examples/playground15/open-next.config.ts b/examples/playground15/open-next.config.ts index e86ffcaa4..1b5ed9cea 100644 --- a/examples/playground15/open-next.config.ts +++ b/examples/playground15/open-next.config.ts @@ -1,6 +1,6 @@ import { defineCloudflareConfig } from "@opennextjs/cloudflare"; -import cache from "@opennextjs/cloudflare/kv-cache"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; export default defineCloudflareConfig({ - incrementalCache: cache, + incrementalCache: kvIncrementalCache, }); diff --git a/examples/ssg-app/open-next.config.ts b/examples/ssg-app/open-next.config.ts index e86ffcaa4..1b5ed9cea 100644 --- a/examples/ssg-app/open-next.config.ts +++ b/examples/ssg-app/open-next.config.ts @@ -1,6 +1,6 @@ import { defineCloudflareConfig } from "@opennextjs/cloudflare"; -import cache from "@opennextjs/cloudflare/kv-cache"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; export default defineCloudflareConfig({ - incrementalCache: cache, + incrementalCache: kvIncrementalCache, }); diff --git a/examples/vercel-blog-starter/open-next.config.ts b/examples/vercel-blog-starter/open-next.config.ts index e86ffcaa4..1b5ed9cea 100644 --- a/examples/vercel-blog-starter/open-next.config.ts +++ b/examples/vercel-blog-starter/open-next.config.ts @@ -1,6 +1,6 @@ import { defineCloudflareConfig } from "@opennextjs/cloudflare"; -import cache from "@opennextjs/cloudflare/kv-cache"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; export default defineCloudflareConfig({ - incrementalCache: cache, + incrementalCache: kvIncrementalCache, }); From 77d2a252fa20ecec50522580fd305b0bc437d297 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Thu, 27 Feb 2025 18:36:40 +0000 Subject: [PATCH 21/23] remove no-longer valid changeset --- .changeset/lovely-bugs-flow.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .changeset/lovely-bugs-flow.md diff --git a/.changeset/lovely-bugs-flow.md b/.changeset/lovely-bugs-flow.md deleted file mode 100644 index 24b0454fe..000000000 --- a/.changeset/lovely-bugs-flow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@opennextjs/cloudflare": patch ---- - -bump `@opennextjs/aws` dependency to `https://pkg.pr.new/@opennextjs/aws@755` From 9f47151be130e5b9ead84cdafc4fab0e261497ce Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Thu, 27 Feb 2025 18:56:51 +0000 Subject: [PATCH 22/23] update some inconsistent imports --- .changeset/cold-numbers-bow.md | 4 ++-- packages/cloudflare/src/api/config.ts | 8 ++++---- packages/cloudflare/src/api/kvCache.ts | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.changeset/cold-numbers-bow.md b/.changeset/cold-numbers-bow.md index e6d412001..95c50b385 100644 --- a/.changeset/cold-numbers-bow.md +++ b/.changeset/cold-numbers-bow.md @@ -12,9 +12,9 @@ Example usage: ```ts // open-next.config.ts import { defineCloudflareConfig } from "@opennextjs/cloudflare"; -import cache from "@opennextjs/cloudflare/kv-cache"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; export default defineCloudflareConfig({ - incrementalCache: cache, + incrementalCache: kvIncrementalCache, }); ``` diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index 0f445506a..a47fe9412 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -10,10 +10,10 @@ export type CloudflareConfigOptions = { * * @example * import { defineCloudflareConfig } from "@opennextjs/cloudflare"; - * import cache from "@opennextjs/cloudflare/kv-cache"; + * import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; * * export default defineCloudflareConfig({ - * incrementalCache: cache, + * incrementalCache: kvIncrementalCache, * }); */ incrementalCache?: "dummy" | IncrementalCache | (() => IncrementalCache | Promise); @@ -26,10 +26,10 @@ export type CloudflareConfigOptions = { * * @example * import { defineCloudflareConfig } from "@opennextjs/cloudflare"; - * import cache from "@opennextjs/cloudflare/d1-tag-cache"; + * import d1TagCache from "@opennextjs/cloudflare/d1-tag-cache"; * * export default defineCloudflareConfig({ - * tagCache: cache, + * tagCache: d1TagCache, * }); */ tagCache?: "dummy" | TagCache | (() => TagCache | Promise); diff --git a/packages/cloudflare/src/api/kvCache.ts b/packages/cloudflare/src/api/kvCache.ts index e0e8e9bf7..789d54204 100644 --- a/packages/cloudflare/src/api/kvCache.ts +++ b/packages/cloudflare/src/api/kvCache.ts @@ -1,6 +1,6 @@ -import cache from "./kv-cache.js"; +import kvIncrementalCache from "./kv-cache.js"; /** * @deprecated Please import from `kv-cache` instead of `kvCache`. */ -export default cache; +export default kvIncrementalCache; From 53e43d200cb3a7e6e5940f4147e050f6694cbef7 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Thu, 27 Feb 2025 19:07:10 +0000 Subject: [PATCH 23/23] update last missing import --- packages/cloudflare/templates/defaults/open-next.config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cloudflare/templates/defaults/open-next.config.ts b/packages/cloudflare/templates/defaults/open-next.config.ts index aee4e5ef9..8b5be462f 100644 --- a/packages/cloudflare/templates/defaults/open-next.config.ts +++ b/packages/cloudflare/templates/defaults/open-next.config.ts @@ -1,7 +1,7 @@ // default open-next.config.ts file created by @opennextjs/cloudflare import { defineCloudflareConfig } from "@opennextjs/cloudflare/dist/api/config"; -import cache from "@opennextjs/cloudflare/dist/api/kv-cache"; +import kvIncrementalCache from "@opennextjs/cloudflare/dist/api/kv-cache"; export default defineCloudflareConfig({ - incrementalCache: cache, + incrementalCache: kvIncrementalCache, });