Skip to content
Draft
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
566da10
content in doc, strapi integration, custom comps supported, isr teste…
manika-signoz Sep 29, 2025
f490b31
remove seo fields, fix build
manika-signoz Sep 29, 2025
ae3013d
nit: remove bg color and tw colour classes
manika-signoz Oct 6, 2025
e35e5d9
import stylesheet
manika-signoz Oct 6, 2025
503c075
handle 404 status code
manika-signoz Oct 8, 2025
21fd98e
Merge branch 'main' into test/cms-with-isr
manika-signoz Oct 15, 2025
a578b08
Merge branch 'main' into test/cms-with-isr
manika-signoz Oct 23, 2025
9aa2fa6
add test data setup
manika-signoz Oct 27, 2025
51b84f3
tag handling for faqs
manika-signoz Oct 28, 2025
c0a528b
setup related_faqs in faqlayout
manika-signoz Oct 28, 2025
1f256b9
add todo
manika-signoz Oct 28, 2025
27dcc18
test
manika-signoz Oct 28, 2025
fa0c6d1
test 2
manika-signoz Oct 29, 2025
ee03a57
test 3
manika-signoz Oct 29, 2025
a2ad76e
test 4
manika-signoz Oct 29, 2025
ef6a470
id -> documentId in updateEntry
manika-signoz Oct 29, 2025
9670fdf
rename revalidation_secret -> revalidate_secret
manika-signoz Oct 29, 2025
bed3413
add more collection schemas
manika-signoz Oct 29, 2025
9664b37
fix relation fields insert
manika-signoz Oct 30, 2025
a37b63e
extract logic to script
manika-signoz Oct 30, 2025
ef4509c
nit: remove unused import
manika-signoz Oct 30, 2025
cfb509a
modified faq - 1 (#2134)
manika-signoz Oct 30, 2025
796fc42
add deployment status as match field to fetchMDX
manika-signoz Oct 31, 2025
708a2c6
init: case-study cms integration
manika-signoz Oct 31, 2025
8909091
pass deployment_type to case-study
manika-signoz Oct 31, 2025
9767d23
remove faq from contentlayer
manika-signoz Oct 31, 2025
aaca655
remove allFAQs from page
manika-signoz Oct 31, 2025
bcb9651
optional chaining to faqs page.tsx
manika-signoz Oct 31, 2025
2fcda09
faqs page and build issues fixed
manika-signoz Oct 31, 2025
d51f3cf
faqs page
manika-signoz Oct 31, 2025
266df51
test: sync case-study
manika-signoz Oct 31, 2025
9c9a037
fix: folder name
manika-signoz Oct 31, 2025
b548873
test sync run
manika-signoz Oct 31, 2025
75891e9
remove invalid key slug
manika-signoz Oct 31, 2025
5e5a429
add desc field
manika-signoz Oct 31, 2025
723b842
add test to case-study to test
manika-signoz Oct 31, 2025
f417e0c
revert test from documents
manika-signoz Oct 31, 2025
d4fb55e
test: sync comparisons
manika-signoz Oct 31, 2025
8b21fb8
remove toc_min_heading_level and toc_max_heading_level, skip document…
manika-signoz Oct 31, 2025
3bb6d1e
resolve 404, try creating if entry not found
manika-signoz Oct 31, 2025
25ba0a5
test comparisons run
manika-signoz Oct 31, 2025
e7851a6
test run
manika-signoz Oct 31, 2025
4657eb2
documentId fix
manika-signoz Oct 31, 2025
edf2b87
add debug logs
manika-signoz Oct 31, 2025
17df847
resolve documentId logic
manika-signoz Oct 31, 2025
84bf554
add debug logs
manika-signoz Oct 31, 2025
0e70dea
test run
manika-signoz Oct 31, 2025
ae39fc3
test run
manika-signoz Oct 31, 2025
0232815
test sync for all comparisons
manika-signoz Oct 31, 2025
3f1445a
fix ssr on resource center -> comparisons
manika-signoz Oct 31, 2025
b210659
fix update PR comment script execution
manika-signoz Oct 31, 2025
ec99f28
improve reporting
manika-signoz Oct 31, 2025
98d58db
use staging in all faqs page for non-prod deployments
manika-signoz Nov 3, 2025
48cf5ff
fix: delete by documentId
manika-signoz Nov 3, 2025
8da4df5
fix: delete flow
manika-signoz Nov 3, 2025
76a5c9b
feat: add sitemap generation logic
manika-signoz Nov 5, 2025
f890f74
add looping logic to handle paginated response in fetchAll
manika-signoz Nov 5, 2025
70c4034
add staging url for staging and base for live
manika-signoz Nov 5, 2025
28bba68
test: add guides handling
manika-signoz Nov 5, 2025
f02dc34
test: add 1 guide
manika-signoz Nov 5, 2025
0dd967a
change workflow branches to pick correct env
manika-signoz Nov 5, 2025
18481c2
add test commit to guides
manika-signoz Nov 5, 2025
7e3e6bb
change staging branch
manika-signoz Nov 5, 2025
dfab0e4
add keywords for guides
manika-signoz Nov 5, 2025
7cb06c7
test: live documents
manika-signoz Nov 5, 2025
dcd53a2
update guides - remove text (#2175)
manika-signoz Nov 5, 2025
af6344c
change prod branch to point to test branch to test merge
manika-signoz Nov 5, 2025
bd3b2ee
Merge branch 'test/cms-with-isr' of github.com:SigNoz/signoz-web into…
manika-signoz Nov 5, 2025
68449ce
remove slug from all guides to enable sync (#2176)
manika-signoz Nov 7, 2025
3caca81
add for testing (#2183)
manika-signoz Nov 7, 2025
bfca818
add rss revalidation
manika-signoz Nov 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
191 changes: 176 additions & 15 deletions app/api/revalidate/route.ts
Original file line number Diff line number Diff line change
@@ -1,35 +1,196 @@
import { revalidateTag } from 'next/cache'

import { NextRequest, NextResponse } from 'next/server'
import { revalidatePath, revalidateTag } from 'next/cache'
import { clearPathsCache } from '@/utils/strapi'

const REVALIDATE_SECRET = process.env.REVALIDATE_SECRET
interface RevalidationResult {
path?: string
tag?: string
revalidated: boolean
type: 'route' | 'path' | 'tag'
timestamp: string
}

export async function POST(request: NextRequest) {
try {
const requestData = await request.json()
const { tag, secret } = requestData
const body = await request.json()
const {
paths,
path,
tags,
tag,
secret,
revalidateAll = false,
clearCache = false
} = body

if (secret !== process.env.REVALIDATE_SECRET) {
return NextResponse.json(
{ message: 'Invalid secret' },
{ status: 401 }
)
}

const results: RevalidationResult[] = []

if (clearCache) {
clearPathsCache()
console.log('Cleared paths cache')
}

if (revalidateAll) {
revalidatePath('/', 'layout')
revalidateTag('mdx-content-list')
revalidateTag('mdx-paths')

results.push({
path: '/',
revalidated: true,
type: 'route',
timestamp: new Date().toISOString(),
})
}

if (path) {
revalidatePath(path)
revalidateTag(`mdx-content-${path}`)

results.push({
path,
revalidated: true,
type: 'path',
timestamp: new Date().toISOString(),
})
}

if (paths && Array.isArray(paths)) {
for (const p of paths) {
revalidatePath(p)
revalidateTag(`mdx-content-${p}`)

results.push({
path: p,
revalidated: true,
type: 'path',
timestamp: new Date().toISOString(),
})
}
}

if (tag) {
revalidateTag(tag)

// Check for secret if configured
if (REVALIDATE_SECRET && secret !== REVALIDATE_SECRET) {
return NextResponse.json({ message: 'Invalid revalidation token' }, { status: 401 })
results.push({
tag,
revalidated: true,
type: 'tag',
timestamp: new Date().toISOString(),
})
}

// Verify tag is provided
if (!tag) {
return NextResponse.json({ message: 'Missing tag parameter' }, { status: 400 })
if (tags && Array.isArray(tags)) {
for (const t of tags) {
revalidateTag(t)

results.push({
tag: t,
revalidated: true,
type: 'tag',
timestamp: new Date().toISOString(),
})
}
}

// Revalidate the tag
revalidateTag(tag)
console.log('Revalidation completed:', results)

return NextResponse.json({
revalidated: true,
results,
timestamp: new Date().toISOString(),
})
} catch (error) {
console.error('Revalidation error:', error)
return NextResponse.json(
{
message: 'Error revalidating paths',
error: error instanceof Error ? error.message : 'Unknown error'
},
{ status: 500 }
)
}
}

export async function GET(request: NextRequest) {
const { searchParams } = new URL(request.url)
const path = searchParams.get('path')
const tag = searchParams.get('tag')
const secret = searchParams.get('secret')
const revalidateAll = searchParams.get('revalidateAll') === 'true'
const clearCache = searchParams.get('clearCache') === 'true'

if (secret !== process.env.REVALIDATE_SECRET) {
return NextResponse.json(
{ message: 'Invalid secret' },
{ status: 401 }
)
}

try {
const results: RevalidationResult[] = []

if (clearCache) {
clearPathsCache()
console.log('Cleared paths cache')
}

if (revalidateAll) {
revalidatePath('/', 'layout')
revalidateTag('mdx-content-list')
revalidateTag('mdx-paths')

results.push({
path: '/',
revalidated: true,
type: 'route',
timestamp: new Date().toISOString(),
})
}

if (path) {
revalidatePath(path)
revalidateTag(`mdx-content-${path}`)

results.push({
path,
revalidated: true,
type: 'path',
timestamp: new Date().toISOString(),
})
}

if (tag) {
revalidateTag(tag)

results.push({
tag,
revalidated: true,
type: 'tag',
timestamp: new Date().toISOString(),
})
}

return NextResponse.json({
revalidated: true,
message: `Tag "${tag}" revalidated successfully`,
timestamp: Date.now(),
results,
timestamp: new Date().toISOString(),
})
} catch (error) {
console.error('Revalidation error:', error)
return NextResponse.json(
{ message: 'Error processing revalidation request', error: String(error) },
{
message: 'Error revalidating paths',
error: error instanceof Error ? error.message : 'Unknown error'
},
{ status: 500 }
)
}
Expand Down
4 changes: 2 additions & 2 deletions app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })

<ThemeProviders>
<GrowthBookProvider>
<Suspense>
{/* <Suspense> */}
<SectionContainer>
<div className="relative flex h-screen flex-col justify-between ">
<SearchProvider searchConfig={siteMetadata.search as SearchConfig}>
Expand All @@ -117,7 +117,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })
<MainFooter />
</div>
</SectionContainer>
</Suspense>
{/* </Suspense> */}
</GrowthBookProvider>
</ThemeProviders>
</body>
Expand Down
1 change: 0 additions & 1 deletion app/loading.tsx

This file was deleted.

Loading