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
2 changes: 1 addition & 1 deletion src/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ export default defineNuxtModule<ModuleOptions>({

nuxt.hook('modules:done', async () => {
const preset = findPreset(nuxt)
await preset?.setup?.(options, nuxt)
await preset?.setup?.(options, nuxt, { resolver })
// Provide default database configuration here since nuxt is merging defaults and user options
options.database ||= { type: 'sqlite', filename: './contents.sqlite' }
await refineDatabaseConfig(options._localDatabase, { rootDir: nuxt.options.rootDir, updateSqliteFileName: true })
Expand Down
14 changes: 8 additions & 6 deletions src/presets/cloudflare.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
import { addTemplate } from '@nuxt/kit'
import { addServerHandler, addTemplate } from '@nuxt/kit'
import { join } from 'pathe'
import { logger } from '../utils/dev'
import { definePreset } from '../utils/preset'
import { collectionDumpTemplate } from '../utils/templates'

export default definePreset({
name: 'cloudflare',
async setupNitro(nitroConfig, { manifest, resolver }) {
setup(_options, _nuxt, { resolver }) {
addServerHandler({
route: '/__nuxt_content/:collection/sql_dump.txt',
handler: resolver.resolve('./runtime/presets/cloudflare/database-handler'),
})
},
async setupNitro(nitroConfig, { manifest }) {
if (nitroConfig.runtimeConfig?.content?.database?.type === 'sqlite') {
logger.warn('Deploying to Cloudflare requires using D1 database, switching to D1 database with binding `DB`.')
nitroConfig.runtimeConfig!.content!.database = { type: 'd1', bindingName: 'DB' }
Expand All @@ -25,10 +31,6 @@ export default definePreset({

// Add raw content dump to public assets
nitroConfig.publicAssets.push({ dir: join(nitroConfig.buildDir!, 'content', 'raw'), maxAge: 60 })
nitroConfig.handlers.push({
route: '/__nuxt_content/:collection/sql_dump.txt',
handler: resolver.resolve('./runtime/presets/cloudflare/database-handler'),
})
},

})
14 changes: 8 additions & 6 deletions src/presets/node.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
import { addTemplate } from '@nuxt/kit'
import { addServerHandler, addTemplate } from '@nuxt/kit'
import { fullDatabaseCompressedDumpTemplate } from '../utils/templates'
import { definePreset } from '../utils/preset'

export default definePreset({
name: 'node',
setupNitro(nitroConfig, { manifest, resolver }) {
setup(_options, _nuxt, { resolver }) {
addServerHandler({
route: '/__nuxt_content/:collection/sql_dump.txt',
handler: resolver.resolve('./runtime/presets/node/database-handler'),
})
},
setupNitro(nitroConfig, { manifest }) {
nitroConfig.publicAssets ||= []
nitroConfig.alias = nitroConfig.alias || {}
nitroConfig.handlers ||= []

nitroConfig.alias['#content/dump'] = addTemplate(fullDatabaseCompressedDumpTemplate(manifest)).dst
nitroConfig.handlers.push({
route: '/__nuxt_content/:collection/sql_dump.txt',
handler: resolver.resolve('./runtime/presets/node/database-handler'),
})
},
})
8 changes: 4 additions & 4 deletions src/utils/preset.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,18 @@ interface Options {
export interface Preset {
name: string
parent?: Preset
setup?: (options: ModuleOptions, nuxt: Nuxt) => Promise<void> | void
setup?: (options: ModuleOptions, nuxt: Nuxt, opts: { resolver: Resolver }) => Promise<void> | void
setupNitro: (nitroConfig: NitroConfig, opts: Options) => void | Promise<void>
}

export function definePreset(preset: Preset) {
const _preset: Preset = {
...preset,
setup: async (options, nuxt) => {
setup: async (options, nuxt, opts) => {
if (preset.parent) {
await preset.parent.setup?.(options, nuxt)
await preset.parent.setup?.(options, nuxt, opts)
}
await preset.setup?.(options, nuxt)
await preset.setup?.(options, nuxt, opts)
},
setupNitro: async (nitroConfig, opts) => {
if (preset.parent) {
Expand Down
Loading