From 6cc2912cb215f8a0b1e06384d70ec8bca2308ca0 Mon Sep 17 00:00:00 2001 From: Magnus Dahl Eide Date: Fri, 29 Aug 2025 01:34:06 +0200 Subject: [PATCH 1/3] fix(dev-overrides): Make fs-dev tagCache override work with BUILD_ID --- .changeset/light-pumas-call.md | 5 +++ .../src/overrides/tagCache/fs-dev.ts | 36 +++++++++++++------ 2 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 .changeset/light-pumas-call.md diff --git a/.changeset/light-pumas-call.md b/.changeset/light-pumas-call.md new file mode 100644 index 000000000..8e8e190c3 --- /dev/null +++ b/.changeset/light-pumas-call.md @@ -0,0 +1,5 @@ +--- +"@opennextjs/aws": patch +--- + +fix(dev-overrides): Make fs-dev tagCache override work with BUILD_ID diff --git a/packages/open-next/src/overrides/tagCache/fs-dev.ts b/packages/open-next/src/overrides/tagCache/fs-dev.ts index d5706ccec..a1287e5ce 100644 --- a/packages/open-next/src/overrides/tagCache/fs-dev.ts +++ b/packages/open-next/src/overrides/tagCache/fs-dev.ts @@ -16,41 +16,55 @@ let tags = JSON.parse(tagContent) as { revalidatedAt: { N: string }; }[]; +const { NEXT_BUILD_ID } = process.env; + +function buildKey(key: string) { + return path.posix.join(NEXT_BUILD_ID ?? "", key); +} + +function buildObject(tag: string, path: string, revalidatedAt?: number) { + return { + tag: { S: buildKey(tag) }, + path: { S: buildKey(path) }, + revalidatedAt: { N: `${revalidatedAt ?? Date.now()}` }, + }; +} + const tagCache: TagCache = { name: "fs-dev", mode: "original", getByPath: async (path: string) => { return tags - .filter((tagPathMapping) => tagPathMapping.path.S === path) - .map((tag) => tag.tag.S); + .filter((tagPathMapping) => tagPathMapping.path.S === buildKey(path)) + .map((tag) => tag.tag.S.replace(`${NEXT_BUILD_ID}/`, "")); }, getByTag: async (tag: string) => { return tags - .filter((tagPathMapping) => tagPathMapping.tag.S === tag) - .map((tag) => tag.path.S); + .filter((tagPathMapping) => tagPathMapping.tag.S === buildKey(tag)) + .map((tagEntry) => tagEntry.path.S.replace(`${NEXT_BUILD_ID}/`, "")); }, getLastModified: async (path: string, lastModified?: number) => { const revalidatedTags = tags.filter( (tagPathMapping) => - tagPathMapping.path.S === path && + tagPathMapping.path.S === buildKey(path) && Number.parseInt(tagPathMapping.revalidatedAt.N) > (lastModified ?? 0), ); return revalidatedTags.length > 0 ? -1 : (lastModified ?? Date.now()); }, writeTags: async (newTags) => { const newTagsSet = new Set( - newTags.map(({ tag, path }) => `${tag}-${path}`), + newTags.map(({ tag, path }) => `${buildKey(tag)}-${buildKey(path)}`), ); const unchangedTags = tags.filter( ({ tag, path }) => !newTagsSet.has(`${tag.S}-${path.S}`), ); tags = unchangedTags.concat( - newTags.map((tag) => ({ - tag: { S: tag.tag }, - path: { S: tag.path }, - revalidatedAt: { N: String(tag.revalidatedAt ?? 1) }, - })), + newTags.map((item) => + buildObject(item.tag, item.path, item.revalidatedAt), + ), ); + // Should we write to the file here? + // fs.writeFileSync(tagFile, JSON.stringify(tags)); }, }; From 4e6bad56a3906ceaf3786425dc534fb4cbc64b28 Mon Sep 17 00:00:00 2001 From: Magnus Dahl Eide Date: Fri, 29 Aug 2025 01:42:09 +0200 Subject: [PATCH 2/3] rm func --- .../open-next/src/overrides/tagCache/fs-dev.ts | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/packages/open-next/src/overrides/tagCache/fs-dev.ts b/packages/open-next/src/overrides/tagCache/fs-dev.ts index a1287e5ce..84caea886 100644 --- a/packages/open-next/src/overrides/tagCache/fs-dev.ts +++ b/packages/open-next/src/overrides/tagCache/fs-dev.ts @@ -22,14 +22,6 @@ function buildKey(key: string) { return path.posix.join(NEXT_BUILD_ID ?? "", key); } -function buildObject(tag: string, path: string, revalidatedAt?: number) { - return { - tag: { S: buildKey(tag) }, - path: { S: buildKey(path) }, - revalidatedAt: { N: `${revalidatedAt ?? Date.now()}` }, - }; -} - const tagCache: TagCache = { name: "fs-dev", mode: "original", @@ -59,9 +51,11 @@ const tagCache: TagCache = { ({ tag, path }) => !newTagsSet.has(`${tag.S}-${path.S}`), ); tags = unchangedTags.concat( - newTags.map((item) => - buildObject(item.tag, item.path, item.revalidatedAt), - ), + newTags.map((item) => ({ + tag: { S: buildKey(item.tag) }, + path: { S: buildKey(item.path) }, + revalidatedAt: { N: `${item.revalidatedAt ?? Date.now()}` }, + })), ); // Should we write to the file here? // fs.writeFileSync(tagFile, JSON.stringify(tags)); From 8ccb28d9d731807b498f1187fd30bb51bd6e50fe Mon Sep 17 00:00:00 2001 From: Magnus Dahl Eide Date: Sat, 30 Aug 2025 17:41:39 +0200 Subject: [PATCH 3/3] review --- packages/open-next/src/overrides/tagCache/fs-dev.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/open-next/src/overrides/tagCache/fs-dev.ts b/packages/open-next/src/overrides/tagCache/fs-dev.ts index 84caea886..cfeff20f1 100644 --- a/packages/open-next/src/overrides/tagCache/fs-dev.ts +++ b/packages/open-next/src/overrides/tagCache/fs-dev.ts @@ -57,8 +57,6 @@ const tagCache: TagCache = { revalidatedAt: { N: `${item.revalidatedAt ?? Date.now()}` }, })), ); - // Should we write to the file here? - // fs.writeFileSync(tagFile, JSON.stringify(tags)); }, };