Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
10 changes: 10 additions & 0 deletions .optimize-cache.json
Original file line number Diff line number Diff line change
Expand Up @@ -1749,9 +1749,11 @@
"static/images/integrations/avatars/appsignal.png": "69e569f5c89b86a073f4f6ad8c2c33119a1de5e7991353d8be345c11bcdf32c0",
"static/images/integrations/avatars/aws.png": "7306ef5be26cf0d3fc0d9a50512828af4e69d6c7d53b835c17982d7db554cb65",
"static/images/integrations/avatars/claude.png": "4cf4f4c37eb4c306bade50c50529bb8d00a16b5b888693190c2e2988f3bbf8b8",
"static/images/integrations/avatars/cloudflare.webp": "f7d4cbbb53f7dcf160dbc6aca2b15c1359b2ba57c613a0adf17548263b94982f",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Optimize-cache keys use .webp but actual files are .avif

All existing cache entries use the source file's real extension (.png). The five new avatar entries and two cover entries added here use .webp, while the actual binary files committed in this PR are .avif (e.g., static/images/integrations/avatars/cloudflare.avif). The image-optimization pipeline will look up each source path and won't find a match, so the cached results are effectively unreachable and the pipeline will reprocess the files on every build — or silently skip them, depending on how cache misses are handled.

Three cover entries are also absent (nextjs/cover, prisma/cover, vercel/cover) while their .avif files are present in the diff, so those covers have no cache entry at all. The cache should use .avif keys for all ten new images.

"static/images/integrations/avatars/cursor.png": "2d78f88bf6d0793dc40f98061077e9e5220ff4f521c07aa8274585c25806b3bf",
"static/images/integrations/avatars/discord.png": "d938bfc4096a6f50c4dee4360d48b0b3df63ea5eb3830049f11053aac15bd4d4",
"static/images/integrations/avatars/docusaurus.png": "01ed9efa99e62547546c9725cd96a08c8d866535d00a75e49fed0e00acee8a1e",
"static/images/integrations/avatars/drizzle.webp": "73c605d6f5ed645b648f0e62fc99c989461a7410e82bd83e36523ff4dafccd1d",
"static/images/integrations/avatars/elevenlabs.png": "ffec825739c2058c2cd592f503b6c0d6eff6f925546e438a6efa8fb8b1a3ca79",
"static/images/integrations/avatars/fcm.png": "21b184d127efc726724693fc090d1780d1554fec8841ac76c494a88cc94ffb4a",
"static/images/integrations/avatars/flutterflow.png": "b7dc391b3dd8b0c2a12f42c0d366472a1be90d53a46ba4fdd00df63f724b3a7e",
Expand All @@ -1761,10 +1763,12 @@
"static/images/integrations/avatars/lemon-squeezy.png": "d76c0c04b8c0518de03882c10c601fabe77c4e30fdb3fade928b8cfff2b6c1f2",
"static/images/integrations/avatars/magic-portfolio.png": "fac810df4bd0e62618cb1295588289f13197bac4805c8232211335523f9812c2",
"static/images/integrations/avatars/mongodb.png": "16fb2fcfaf3a8e1c1f007c81b1bccdfb2463f971c641f1e3a54278c4b7e07513",
"static/images/integrations/avatars/nextjs.webp": "67a56a84d1b5356da9d00543c55021e90c6086f4943de3e61f8a78219492fe5e",
"static/images/integrations/avatars/notion.png": "04f581fd7f20af3351e808c1714d66b8cb78546913e6de42c3ecaf51042297d8",
"static/images/integrations/avatars/nxtlnk.png": "ff3b1907ab894fb8fa204a418325fa62789f4bd1b46b876f488ef9c284889f0e",
"static/images/integrations/avatars/openai.png": "8e2a950f55a705708a71c4a813046050e5a199f1098db20562fac93591e6d3f1",
"static/images/integrations/avatars/perplexity.png": "1aeff5375655bf397465f7824c9baffbfc867669a80dafc475091c55b17c199b",
"static/images/integrations/avatars/prisma.webp": "f460e2402149a3595016b8155ddf1ff2697cc6b964899d6e324ada8ec479030f",
"static/images/integrations/avatars/raygun.png": "dffa2cf7b4e6717b9fa578c22dd1f9e919952fb32ee76de8a0addc052fb4f183",
"static/images/integrations/avatars/react-admin.png": "8e89fed781a54d8a5dbfa9116f8dea0d83dfc273a482d28bd627ec32517642a9",
"static/images/integrations/avatars/rxdb.png": "b46c8cef0d75139add85308998ff3f27379f080df0afa8dbeb48a49155be6b9d",
Expand All @@ -1774,13 +1778,16 @@
"static/images/integrations/avatars/stripe.png": "d6a0919aff3e53e2f55022749daa63e5dbe6b5c7ea095a0d72e2ad5006246ae0",
"static/images/integrations/avatars/twilio.png": "35ee999626e2179cd643eb89a3e1b425894b420da9fda8656239ca20d2fedec9",
"static/images/integrations/avatars/upstash.png": "c404ea0c7f2d2bc28bdb37e6019f8ac9d706d3b7f0b7de2d3e1c0b90dc4b10a9",
"static/images/integrations/avatars/vercel.webp": "65e0db1f1b67f35d7b6774faf21ebabf822ad831d71d85f7a77541cc1f39266d",
"static/images/integrations/avatars/vonage.png": "b9d22975cae0fc7234c761b8ea5d92260db73cc027e756ede9aa47cc2efde44e",
"static/images/integrations/avatars/vuepress.png": "7893861c4fdb3bc037381962aa4ada05156d8df276d5300925c8fd8d66063e23",
"static/images/integrations/avatars/windsurf.png": "41d48db8811ebe2c5bffb965615ede43bee55ef73cb751db4ffc7499e576033c",
"static/images/integrations/avatars/x.png": "cd24d39505021b078939ca05fba4ddb5d0e67afedc2a02c29837b097abb1904e",
"static/images/integrations/cloudflare/cover.webp": "c15c819302251d8c20d6e43de656efbd8f6b8b0f7a57718f9b61580e26fc50d7",
"static/images/integrations/deployments-github/cover.png": "c425b990a458a660eec087677bf4ce81cc9a188115654ef56bed4791f6c03d03",
"static/images/integrations/deployments-github/create.png": "64477b19f98d50a3648fc9b5e2587a45a694297480277e2806dd30c60b7f7e67",
"static/images/integrations/deployments-github/installed.png": "14cb46d5dcca35a8df915c571505a6198adba52afb24968a75a248fcfdb416f4",
"static/images/integrations/drizzle/cover.webp": "8b65fb51134d4dd77c029aec34e9ecd0284a8d33145919d6fa19158a90d80377",
"static/images/integrations/email-sendgrid/cover.png": "3822b48eb800ee55ceb2a44077fdc68e35caf2a7229b0dc51223f49489d9c926",
"static/images/integrations/email-sendgrid/email.png": "1de5d9bea2d47030eef44a5c1581ff6ea5a2ee8851e3410f3a41a6b7017d6cdf",
"static/images/integrations/email-sendgrid/provider.png": "d37ab3b9783701d6395991fc6fee7af8a843cc1dee4d851b0295ae8370a94700",
Expand Down Expand Up @@ -1830,6 +1837,7 @@
"static/images/integrations/native-auth-apple/cover.png": "da94b788046c69191e794b5c9007588a4cf908b17af7bc77775258f43f91c13d",
"static/images/integrations/native-auth-apple/template.png": "7e9f1105cadd93f09041e77f7b09ed4c40779b0f1a5a9a6829e400f6d42e5750",
"static/images/integrations/native-auth-apple/variables.png": "798727e10a77a2fe0596f0321d18997903e48bff5f36af042c8707fbf43a5c24",
"static/images/integrations/nextjs/cover.webp": "d6002b444349090db0afe3eea0db4d543bef7b5e466ce98405d214876dad531d",
"static/images/integrations/oauth-amazon/allowed-return-urls.png": "b092ffd113714231193d10b39fb46835b1e921b20aac6c981ec94d95e5ab3b47",
"static/images/integrations/oauth-amazon/cover.png": "893075c608b921b697e8a8769d8e821a1a68123fa2831ad650f32d253daf0d25",
"static/images/integrations/oauth-amazon/provider.png": "3e481065acd9924c4ac8df860c4e9b27fa12a27fdaa7c68dc35f6176b06d7aab",
Expand Down Expand Up @@ -1857,6 +1865,7 @@
"static/images/integrations/phone-auth-twilio/cover.png": "e46ab3a1a8b458b69e919219e35de4a15b2bbd0ea9c0079c0c99e005acf3a295",
"static/images/integrations/phone-auth-twilio/twilio-console.png": "bd3081b13711088c437ed10553709ca4af54f80c81571b30b6cc9a4a1fab1799",
"static/images/integrations/phone-auth-twilio/user.png": "a526a9621c30de2ba4b6b08508d15bcf588b7de5cafadaf3ea7a8198485cf53e",
"static/images/integrations/prisma/cover.webp": "041de3db19330b14f0c15c7213a76970c9bc9676c4aad3caee81b6aeca9e8ae9",
"static/images/integrations/push-apns/apple-developer-program.png": "2f13f017496e5e2497a32485840e0d8302df6933ed8159a7bb5031e02cb98562",
"static/images/integrations/push-apns/cover.png": "da94b788046c69191e794b5c9007588a4cf908b17af7bc77775258f43f91c13d",
"static/images/integrations/push-apns/provider.png": "16332791662d979d11880e229e15a9356ddcd5488ac48bb7e7b90eed04c1e10b",
Expand Down Expand Up @@ -1962,6 +1971,7 @@
"static/images/integrations/stripe-subscriptions/web-platform.png": "4fa7e4ef19d6417f49d651deaf62e158173aec5da2d21e150de679bfc25163b0",
"static/images/integrations/stripe-subscriptions/webhooks.png": "641cc545aa64d137619a7768c553f9aeb30507cd7209cf33bc08f476b95975eb",
"static/images/integrations/terraform/cover.png": "43b4f901f490adab9f018c600882132192c29092f44154226fc72196e2d5a3fe",
"static/images/integrations/vercel/cover.webp": "964169c15ef8a689db6b41edea0d0a2db4a87364c87fb3af06822a25aee3106b",
"static/images/integrations/whatsapp-vonage/cover.png": "c445579cca51fcafa1a0717abf51386e1d86a5909951a7a05401b0e77dc506d4",
"static/images/integrations/whatsapp-vonage/demo.png": "34ffa1310f6d01e2c22b0d4473d8f89f4306610d8db1d01f53771da6628023e6",
"static/images/integrations/whatsapp-vonage/settings.png": "57dc4bb24aac093bdd115c60d350de19a14d87fc5ed08d8bf833889a95414570",
Expand Down
7 changes: 5 additions & 2 deletions src/lib/utils/code.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,11 @@ Object.entries(platformAliases).forEach(([key, value]) => {
});
});

/** HashiCorp Configuration Language (Terraform); core highlight.js has no HCL grammar */
hljs.registerAliases(['hcl', 'terraform', 'tf'], { languageName: 'ini' });
/** HashiCorp Configuration Language (Terraform) and TOML; core highlight.js has no grammar for either, INI is the closest match */
hljs.registerAliases(['hcl', 'terraform', 'tf', 'toml'], { languageName: 'ini' });

/** Prisma schema language; core highlight.js has no Prisma grammar, GraphQL is the closest match */
hljs.registerAliases(['prisma'], { languageName: 'graphql' });

export type Language = keyof typeof languages | Platform;

Expand Down
110 changes: 110 additions & 0 deletions src/routes/docs/products/databases/+layout.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,116 @@
}
]
},
{
label: 'Connect your stack',
items: [
{
label: 'Node.js drivers',
href: '/docs/products/databases/dedicated/drivers',
new: isNewUntil('31 Aug 2026')
},
{
label: 'Prisma',
href: '/docs/products/databases/dedicated/prisma',
new: isNewUntil('31 Aug 2026')
},
{
label: 'Drizzle',
href: '/docs/products/databases/dedicated/drizzle',
new: isNewUntil('31 Aug 2026')
},
{
label: 'Auth.js',
href: '/docs/products/databases/dedicated/auth-js',
new: isNewUntil('31 Aug 2026')
},
{
label: 'Better Auth',
href: '/docs/products/databases/dedicated/better-auth',
new: isNewUntil('31 Aug 2026')
},
{
label: 'Laravel',
href: '/docs/products/databases/dedicated/laravel',
new: isNewUntil('31 Aug 2026')
},
{
label: 'Rails',
href: '/docs/products/databases/dedicated/rails',
new: isNewUntil('31 Aug 2026')
},
{
label: 'Django',
href: '/docs/products/databases/dedicated/django',
new: isNewUntil('31 Aug 2026')
},
{
label: 'FastAPI',
href: '/docs/products/databases/dedicated/fastapi',
new: isNewUntil('31 Aug 2026')
},
{
label: 'Spring Boot',
href: '/docs/products/databases/dedicated/spring-boot',
new: isNewUntil('31 Aug 2026')
},
{
label: 'EF Core',
href: '/docs/products/databases/dedicated/ef-core',
new: isNewUntil('31 Aug 2026')
},
{
label: 'GORM',
href: '/docs/products/databases/dedicated/gorm',
new: isNewUntil('31 Aug 2026')
}
]
},
{
label: 'Deploy',
items: [
{
label: 'Next.js',
href: '/docs/products/databases/dedicated/nextjs',
new: isNewUntil('31 Aug 2026')
},
{
label: 'Vercel',
href: '/docs/products/databases/dedicated/vercel',
new: isNewUntil('31 Aug 2026')
},
{
label: 'Cloudflare',
href: '/docs/products/databases/dedicated/cloudflare',
new: isNewUntil('31 Aug 2026')
}
]
},
{
label: 'Analytics & BI',
items: [
{
label: 'Metabase',
href: '/docs/products/databases/dedicated/metabase',
new: isNewUntil('31 Aug 2026')
},
{
label: 'Grafana',
href: '/docs/products/databases/dedicated/grafana',
new: isNewUntil('31 Aug 2026')
},
{
label: 'Retool',
href: '/docs/products/databases/dedicated/retool',
new: isNewUntil('31 Aug 2026')
},
{
label: 'dbt',
href: '/docs/products/databases/dedicated/dbt',
new: isNewUntil('31 Aug 2026')
}
]
},
{
label: 'References',
items: [
Expand Down
Loading
Loading