Skip to content

Commit

Permalink
fix!: module options and better tree-shaking
Browse files Browse the repository at this point in the history
  • Loading branch information
sandros94 committed Dec 8, 2024
1 parent 2c201f2 commit a1974fd
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 27 deletions.
10 changes: 7 additions & 3 deletions playground/nuxt.config.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
export default defineNuxtConfig({
modules: ['nuxt-pglite'],
modules: ['../src/module'],
imports: { autoImport: true },

devtools: { enabled: true },
compatibilityDate: '2024-08-29',

pglite: {
client: {
dataDir: 'idb://nuxt-pglite',
options: {
dataDir: 'idb://nuxt-pglite',
},
},
server: {
dataDir: './database/pglite',
options: {
dataDir: './database/pglite',
},
},
},
})
36 changes: 22 additions & 14 deletions src/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,28 @@ import {
import type { PGliteOptions } from '@electric-sql/pglite'
import { defu } from 'defu'

// Module options TypeScript interface definition
export interface ModuleOptions {
client?: PGliteOptions & { autoImport?: boolean }
server?: PGliteOptions & { autoImport?: boolean }
client?: {
enabled?: boolean
options?: PGliteOptions
}
server?: {
enabled?: boolean
options?: PGliteOptions
}
}

export default defineNuxtModule<ModuleOptions>({
meta: {
name: 'nuxt-pglite',
configKey: 'pglite',
},
// Default configuration options of the Nuxt module
defaults: {
client: {
autoImport: true,
debug: undefined,
dataDir: 'memory://nuxt-pglite',
enabled: true,
},
server: {
autoImport: true,
debug: undefined,
dataDir: 'memory://nuxt-pglite',
enabled: true,
},
},
setup(options, nuxt) {
Expand All @@ -46,19 +46,27 @@ export default defineNuxtModule<ModuleOptions>({

nuxt.options.runtimeConfig.public.pglite = defu(
nuxt.options.runtimeConfig.public.pglite,
options.client,
options.client?.options,
{
debug: undefined,
dataDir: 'memory://nuxt-pglite',
},
)
const serverConfig = nuxt.options.runtimeConfig.pglite = defu(
nuxt.options.runtimeConfig.pglite,
options.server,
options.server?.options,
{
debug: undefined,
dataDir: 'memory://nuxt-pglite',
},
)

// Use relative path for server directory
if (!serverConfig.dataDir.startsWith('memory://') && !serverConfig.dataDir.startsWith('file://')) {
serverConfig.dataDir = resolve(nuxt.options.serverDir, serverConfig.dataDir)
}

if (nuxt.options.runtimeConfig.public.pglite.autoImport) {
if (options.client?.enabled !== false) {
addImports([
{
name: 'usePGlite',
Expand All @@ -70,7 +78,7 @@ export default defineNuxtModule<ModuleOptions>({
},
])
}
if (nuxt.options.runtimeConfig.pglite.autoImport) {
if (options.server?.enabled !== false) {
addServerImports([
{
name: 'usePGlite',
Expand Down
3 changes: 1 addition & 2 deletions src/runtime/composables/pglite-worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ import {
} from '#imports'

export function usePGliteWorker(options?: PGliteWorkerOptions) {
const { pglite: { autoImport, ...pglite } } = useRuntimeConfig().public
const _options = defu(options, pglite)
const _options = defu(options, useRuntimeConfig().public.pglite)
const pg = shallowRef<PGliteWorker | undefined>()

if (import.meta.client) {
Expand Down
3 changes: 1 addition & 2 deletions src/runtime/composables/pglite.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ import {
} from '#imports'

export function usePGlite(options?: PGliteOptions) {
const { pglite: { autoImport, ...pglite } } = useRuntimeConfig().public
const _options = defu(options, pglite)
const _options = defu(options, useRuntimeConfig().public.pglite)
const pg = shallowRef<PGlite>()

if (import.meta.client) {
Expand Down
11 changes: 5 additions & 6 deletions src/runtime/server/utils/pglite.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ import { defu } from 'defu'

import { useRuntimeConfig } from '#imports'

let _pglite: PGlite | undefined
let pglite: PGlite | undefined
export function usePGlite(options?: PGliteOptions) {
if (!_pglite) {
const { pglite: { autoImport, ...pglite } } = useRuntimeConfig()
const opts = defu<PGliteOptions, PGliteOptions[]>(options, pglite)
_pglite = new PGlite(opts)
if (!pglite) {
const opts = defu<PGliteOptions, PGliteOptions[]>(options, useRuntimeConfig().pglite)
pglite = new PGlite(opts)
}

return _pglite
return pglite
}

0 comments on commit a1974fd

Please sign in to comment.