Skip to content
Merged
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,506 changes: 330 additions & 2,176 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions src/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,8 @@ export default defineNitroPlugin(() => {
registerNitroPlugin(nuxt, pluginPath.dst)
}

// Ensure server/Nitro bundles can resolve auto-imported composables.
addServerImportsDir(resolver.resolve('./runtime/composables'))
addImportsDir(resolver.resolve('./runtime/composables'))

nuxt.hook('eslint:config:addons', (addons) => {
Expand Down
46 changes: 46 additions & 0 deletions test/cloudflare-auto-import.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { execSync } from 'node:child_process'
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs'
import { join } from 'node:path'
import { fileURLToPath } from 'node:url'
import { describe, expect, it } from 'vitest'

function listFiles(dir: string): string[] {
const out: string[] = []
for (const entry of readdirSync(dir)) {
const p = join(dir, entry)
const st = statSync(p)
if (st.isDirectory())
out.push(...listFiles(p))
else
out.push(p)
}
return out
}

describe('cloudflare preset auto-imports', () => {
it('does not leave useSafeRuntimeConfig as an unresolved global', () => {
const fixtureDir = fileURLToPath(new URL('./fixtures/cloudflare-auto-import', import.meta.url))
execSync('pnpm nuxi build', { cwd: fixtureDir, stdio: 'pipe' })

const serverDir = join(fixtureDir, '.output/server')
expect(existsSync(serverDir)).toBe(true)

const failing: string[] = []
for (const file of listFiles(serverDir).filter(f => f.endsWith('.mjs'))) {
const src = readFileSync(file, 'utf-8')
if (!src.includes('useSafeRuntimeConfig('))
continue

const hasBinding = (
/\bfunction\s+useSafeRuntimeConfig\b/.test(src)
|| /\b(?:const|let|var)\s+useSafeRuntimeConfig\b/.test(src)
|| (src.includes('import') && src.includes('useSafeRuntimeConfig'))
)

if (!hasBinding)
failing.push(file)
}

expect(failing).toEqual([])
}, 120000)
})
28 changes: 28 additions & 0 deletions test/fixtures/cloudflare-auto-import/nuxt.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { object, string } from 'valibot'
import SafeRuntimeConfig from '../../../src/module'

const runtimeConfigSchema = object({
public: object({
apiBase: string(),
}),
secretKey: string(),
})

export default defineNuxtConfig({
modules: [SafeRuntimeConfig],

nitro: {
preset: 'cloudflare_module',
},

runtimeConfig: {
secretKey: 'test-secret-key',
public: {
apiBase: 'https://api.test.com',
},
},

safeRuntimeConfig: {
$schema: runtimeConfigSchema,
},
})
14 changes: 14 additions & 0 deletions test/fixtures/cloudflare-auto-import/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "nuxt-safe-runtime-config-test-cloudflare-auto-import",
"type": "module",
"private": true,
"scripts": {
"prepare": "nuxt prepare"
},
"dependencies": {
"valibot": "catalog:"
},
"devDependencies": {
"nuxt": "catalog:"
}
}
4 changes: 4 additions & 0 deletions test/fixtures/cloudflare-auto-import/server/api/ping.get.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export default defineEventHandler(() => {
const config = useSafeRuntimeConfig() as any
return { ok: true, apiBase: config.public.apiBase }
})
Loading