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
43 changes: 12 additions & 31 deletions src/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -256,22 +256,6 @@ export interface ModuleOptions {
*/
integrity?: boolean | 'sha256' | 'sha384' | 'sha512'
}
/**
* Google Static Maps proxy configuration.
* Proxies static map images through your server to fix CORS issues and enable caching.
*/
googleStaticMapsProxy?: {
/**
* Enable proxying Google Static Maps through your own origin.
* @default false
*/
enabled?: boolean
/**
* Cache duration for static map images in seconds.
* @default 3600 (1 hour)
*/
cacheMaxAge?: number
}
/**
* Whether the module is enabled.
*
Expand Down Expand Up @@ -310,10 +294,6 @@ export default defineNuxtModule<ModuleOptions>({
timeout: 15_000, // Configures the maximum time (in milliseconds) allowed for each fetch attempt.
},
},
googleStaticMapsProxy: {
enabled: false,
cacheMaxAge: 3600,
},
enabled: true,
debug: false,
},
Expand All @@ -337,20 +317,12 @@ export default defineNuxtModule<ModuleOptions>({
}
nuxt.options.runtimeConfig['nuxt-scripts'] = {
version: version!,
// Private proxy config with API key (server-side only)
googleStaticMapsProxy: config.googleStaticMapsProxy?.enabled
? { apiKey: (nuxt.options.runtimeConfig.public.scripts as any)?.googleMaps?.apiKey }
: undefined,
} as any
nuxt.options.runtimeConfig.public['nuxt-scripts'] = {
// expose for devtools
version: nuxt.options.dev ? version : undefined,
defaultScriptOptions: config.defaultScriptOptions as any,
// Only expose enabled and cacheMaxAge to client, not apiKey
googleStaticMapsProxy: config.googleStaticMapsProxy?.enabled
? { enabled: true, cacheMaxAge: config.googleStaticMapsProxy.cacheMaxAge }
: undefined,
}
} as any

// Merge registry config with existing runtimeConfig.public.scripts for proper env var resolution
// Both scripts.registry and runtimeConfig.public.scripts should be supported
Expand Down Expand Up @@ -695,8 +667,17 @@ export default defineNuxtModule<ModuleOptions>({
})
})

// Add Google Static Maps proxy handler if enabled
if (config.googleStaticMapsProxy?.enabled) {
// Add Google Static Maps proxy handler when registry.googleMaps is enabled
if (config.registry?.googleMaps) {
const apiKey = (nuxt.options.runtimeConfig.public.scripts as any)?.googleMaps?.apiKey
nuxt.options.runtimeConfig['nuxt-scripts'] = defu(
{ googleStaticMapsProxy: { apiKey } },
nuxt.options.runtimeConfig['nuxt-scripts'] as any,
) as any
nuxt.options.runtimeConfig.public['nuxt-scripts'] = defu(
{ googleStaticMapsProxy: { cacheMaxAge: 3600 } },
nuxt.options.runtimeConfig.public['nuxt-scripts'] as any,
) as any
addServerHandler({
route: '/_scripts/google-static-maps-proxy',
handler: await resolvePath('./runtime/server/google-static-maps-proxy'),
Expand Down
2 changes: 1 addition & 1 deletion src/runtime/components/GoogleMaps/ScriptGoogleMaps.vue
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@
function importLibrary(key: 'drawing'): Promise<google.maps.DrawingLibrary>
function importLibrary(key: 'visualization'): Promise<google.maps.VisualizationLibrary>
function importLibrary(key: string): Promise<any>
function importLibrary<T>(key: string): Promise<T> {

Check warning on line 288 in src/runtime/components/GoogleMaps/ScriptGoogleMaps.vue

View workflow job for this annotation

GitHub Actions / test

Function "importLibrary" uses Vue reactivity β€” consider renaming to "useImportLibrary"
if (libraries.has(key))
return libraries.get(key)
const p = mapsApi.value?.importLibrary(key) || new Promise((resolve) => {
Expand Down Expand Up @@ -477,7 +477,7 @@
.join('|'),
})

const baseUrl = proxyConfig?.enabled
const baseUrl = proxyConfig
? '/_scripts/google-static-maps-proxy'
: 'https://maps.googleapis.com/maps/api/staticmap'

Expand Down
7 changes: 0 additions & 7 deletions src/runtime/server/google-static-maps-proxy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,6 @@ export default defineEventHandler(async (event) => {
const publicConfig = (runtimeConfig.public['nuxt-scripts'] as any)?.googleStaticMapsProxy
const privateConfig = (runtimeConfig['nuxt-scripts'] as any)?.googleStaticMapsProxy

if (!publicConfig?.enabled) {
throw createError({
statusCode: 404,
statusMessage: 'Google Static Maps proxy is not enabled',
})
}

// Get API key from private config (server-side only, not exposed to client)
const apiKey = privateConfig?.apiKey
if (!apiKey) {
Expand Down
Loading