diff --git a/src/module.ts b/src/module.ts index 578a105de..f512e9d2e 100644 --- a/src/module.ts +++ b/src/module.ts @@ -7,7 +7,7 @@ import { addImports, addComponentsDir, addTemplate, - addComponent + extendViteConfig } from '@nuxt/kit' import { genImport, genSafeVariableName } from 'knitwork' import type { ListenOptions } from 'listhen' @@ -247,16 +247,13 @@ export default defineNuxtModule({ } // Add Vite configurations - if (nuxt.options.vite !== false) { - nuxt.options.vite = defu( - nuxt.options.vite === true ? {} : nuxt.options.vite, - { - optimizeDeps: { - include: ['html-tags'] - } - } + extendViteConfig((config) => { + config.optimizeDeps = config.optimizeDeps || {} + config.optimizeDeps.include = config.optimizeDeps.include || [] + config.optimizeDeps.include.push( + 'html-tags' ) - } + }) // Add Content plugin addPlugin(resolveRuntimeModule('./plugins/ws')) @@ -553,34 +550,6 @@ export default defineNuxtModule({ tailwindConfig.content.push(resolve(nuxt.options.buildDir, 'content-cache', 'parsed/**/*.md')) }) - // Experimental preview mode - if (process.env.NUXT_PREVIEW_API) { - // Add preview plugin - addPlugin(resolveRuntimeModule('./preview/preview-plugin')) - - // Add preview components - addComponent({ - name: 'ContentPreviewMode', - filePath: resolveRuntimeModule('./preview/components/ContentPreviewMode.vue') - }) - - // @ts-ignore - nuxt.options.runtimeConfig.public.content.previewAPI = process.env.NUXT_PREVIEW_API - // @ts-ignore - nuxt.options.runtimeConfig.content.previewAPI = process.env.NUXT_PREVIEW_API - - if (nuxt.options.vite !== false) { - nuxt.options.vite = defu( - nuxt.options.vite === true ? {} : nuxt.options.vite, - { - optimizeDeps: { - include: ['socket.io-client', 'slugify'] - } - } - ) - } - } - // Setup content dev module if (!nuxt.options.dev) { nuxt.hook('build:before', async () => { @@ -684,8 +653,6 @@ interface ModulePrivateRuntimeConfig { */ cacheVersion: string; cacheIntegrity: string; - - previewAPI?: string } declare module '@nuxt/schema' { diff --git a/src/runtime/composables/utils.ts b/src/runtime/composables/utils.ts index cee29145e..10536e878 100644 --- a/src/runtime/composables/utils.ts +++ b/src/runtime/composables/utils.ts @@ -43,12 +43,11 @@ export const addPrerenderPath = (path: string) => { } export const shouldUseClientDB = () => { - const { previewAPI, clientDB } = useRuntimeConfig().content + const { clientDB } = useRuntimeConfig().content if (!process.client) { return false } if (clientDB?.isSPA) { return true } // Disable clientDB when preview mode is disabled - if (!previewAPI) { return false } if (useRoute().query?.preview || useCookie('previewToken').value) { return true } diff --git a/src/runtime/preview/components/ContentPreviewMode.vue b/src/runtime/preview/components/ContentPreviewMode.vue deleted file mode 100644 index b5f65d201..000000000 --- a/src/runtime/preview/components/ContentPreviewMode.vue +++ /dev/null @@ -1,162 +0,0 @@ - - - - - diff --git a/src/runtime/preview/preview-plugin.ts b/src/runtime/preview/preview-plugin.ts deleted file mode 100644 index 3d98c0461..000000000 --- a/src/runtime/preview/preview-plugin.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { createApp } from 'vue' -import { defineNuxtPlugin, useRoute, useCookie, refreshNuxtData, useRuntimeConfig, useNuxtApp } from '#imports' -import { ContentPreviewMode } from '#components' - -export default defineNuxtPlugin((nuxt) => { - const { previewAPI } = useRuntimeConfig().public.content - - async function fetchData (token: string, contentStorage) { - // Fetch preview data from station - const data = await $fetch('api/projects/preview', { - baseURL: previewAPI, - params: { - token - } - }) - // Remove previous preview data - const keys = await contentStorage.getKeys(`${token}:`) - await Promise.all(keys.map(key => contentStorage.removeItem(key))) - - // Set preview meta - await contentStorage.setItem( - `${token}$`, - JSON.stringify({ - ignoreBuiltContents: (data.files || []).length !== 0 - }) - ) - - // Fill store with preview content - const items = [ - ...(data.files || []), - ...data.additions, - ...data.deletions.map(d => ({ ...d, parsed: { _id: d.path.replace(/\//g, ':'), __deleted: true } })) - ] - - await Promise.all( - items.map(item => contentStorage.setItem(`${token}:${item.parsed._id}`, JSON.stringify(item.parsed))) - ) - } - - function initializePreview () { - let contentStorage - const nuxtApp = useNuxtApp() - const query = useRoute().query || {} - const previewToken = useCookie('previewToken', { sameSite: 'none', secure: true }) - if (!query.preview && !previewToken.value) { - return - } - if (query.preview && previewToken.value !== query.preview) { - previewToken.value = String(query.preview) - } - - // Show loading - const el = document.createElement('div') - el.id = 'nuxt-content-preview' - document.body.appendChild(el) - createApp(ContentPreviewMode, { - previewToken, - apiURL: previewAPI, - onRefresh: () => fetchData(previewToken.value, contentStorage).then(() => refreshNuxtData()) - }).mount(el) - - // @ts-ignore - nuxtApp.hook('content:storage', async (storage) => { - contentStorage = storage - await fetchData(previewToken.value, contentStorage) - refreshNuxtData() - }) - } - - nuxt.hook('app:mounted', async () => { - await initializePreview() - }) - - nuxt.hook('page:finish', () => { - // Refresh nuxt data - refreshNuxtData() - }) -})