feat: adds new Cloudflare D1 SQLite adapter, R2 storage adapter and Cloudflare template (#12537)

This feat adds support for
- [D1 Cloudflare SQLite](https://developers.cloudflare.com/d1/)
- R2 storage directly (previously it was via S3 SDK)
- Cloudflare 1-click deploy template

---------

Co-authored-by: Paul Popus <paul@payloadcms.com>
This commit is contained in:
Sasha
2025-09-29 23:58:18 +03:00
committed by GitHub
parent 9248fc41e8
commit 99043eeaeb
106 changed files with 12377 additions and 130 deletions

View File

@@ -113,6 +113,11 @@ export const allDatabaseAdapters = {
process.env.POSTGRES_URL || 'postgresql://postgres:postgres@127.0.0.1:54322/postgres',
},
})`,
d1: `
import { sqliteD1Adapter } from '@payloadcms/db-d1-sqlite'
export const databaseAdapter = sqliteD1Adapter({ binding: global.d1 })
`,
}
/**

View File

@@ -1,3 +1,5 @@
import { D1DatabaseAPI } from '@miniflare/d1'
import { createSQLiteDB } from '@miniflare/shared'
import dotenv from 'dotenv'
import { MongoMemoryReplSet } from 'mongodb-memory-server'
dotenv.config()
@@ -22,6 +24,11 @@ export default async () => {
process.env.NODE_OPTIONS = '--no-deprecation'
process.env.DISABLE_PAYLOAD_HMR = 'true'
if (process.env.PAYLOAD_DATABASE === 'd1' && !global.d1) {
process.env.PAYLOAD_DROP_DATABASE = 'false'
console.log('Starting memory D1 db...')
global.d1 = new D1DatabaseAPI(await createSQLiteDB(':memory'))
}
if (
(!process.env.PAYLOAD_DATABASE ||
['firestore', 'mongodb'].includes(process.env.PAYLOAD_DATABASE)) &&

View File

@@ -10,6 +10,7 @@ import nodemailer from 'nodemailer'
import { generateDatabaseAdapter } from './generateDatabaseAdapter.js'
process.env.PAYLOAD_DISABLE_ADMIN = 'true'
process.env.PAYLOAD_DROP_DATABASE = 'true'
process.env.PAYLOAD_PUBLIC_CLOUD_STORAGE_ADAPTER = 's3'

View File

@@ -25,8 +25,11 @@
"@aws-sdk/client-s3": "^3.614.0",
"@azure/storage-blob": "^12.11.0",
"@date-fns/tz": "1.2.0",
"@miniflare/d1": "2.14.4",
"@miniflare/shared": "2.14.4",
"@next/env": "15.4.4",
"@payloadcms/admin-bar": "workspace:*",
"@payloadcms/db-d1-sqlite": "workspace:*",
"@payloadcms/db-mongodb": "workspace:*",
"@payloadcms/db-postgres": "workspace:*",
"@payloadcms/db-sqlite": "workspace:*",
@@ -66,6 +69,7 @@
"@types/react": "19.1.12",
"@types/react-dom": "19.1.9",
"babel-plugin-react-compiler": "19.1.0-rc.3",
"better-sqlite3": "11.10.0",
"comment-json": "^4.2.3",
"create-payload-app": "workspace:*",
"csv-parse": "^5.6.0",

View File

@@ -12,6 +12,7 @@ export const tgzToPkgNameMap = {
'@payloadcms/db-postgres': 'payloadcms-db-postgres-*',
'@payloadcms/db-vercel-postgres': 'payloadcms-db-vercel-postgres-*',
'@payloadcms/db-sqlite': 'payloadcms-db-sqlite-*',
'@payloadcms/db-d1-sqlite': 'payloadcms-db-d1-sqlite-*',
'@payloadcms/drizzle': 'payloadcms-drizzle-*',
'@payloadcms/email-nodemailer': 'payloadcms-email-nodemailer-*',
'@payloadcms/email-resend': 'payloadcms-email-resend-*',