|
|
|
@ -2,7 +2,6 @@ import { createDebug } from 'obug'
|
|
|
|
import fs from 'fs-extra'
|
|
|
|
import fs from 'fs-extra'
|
|
|
|
import MiniSearch from 'minisearch'
|
|
|
|
import MiniSearch from 'minisearch'
|
|
|
|
import path from 'node:path'
|
|
|
|
import path from 'node:path'
|
|
|
|
import pMap from 'p-map'
|
|
|
|
|
|
|
|
import type { Plugin, ViteDevServer } from 'vite'
|
|
|
|
import type { Plugin, ViteDevServer } from 'vite'
|
|
|
|
import type { SiteConfig } from '../config'
|
|
|
|
import type { SiteConfig } from '../config'
|
|
|
|
import type { DefaultTheme } from '../defaultTheme'
|
|
|
|
import type { DefaultTheme } from '../defaultTheme'
|
|
|
|
@ -81,9 +80,10 @@ export async function localSearchPlugin(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let server: ViteDevServer | undefined
|
|
|
|
let server: ViteDevServer | undefined
|
|
|
|
|
|
|
|
let pending: Promise<void>
|
|
|
|
|
|
|
|
|
|
|
|
function onIndexUpdated() {
|
|
|
|
function onIndexUpdated() {
|
|
|
|
if (server) {
|
|
|
|
if (!server) return
|
|
|
|
server.moduleGraph.onFileChange(LOCAL_SEARCH_INDEX_REQUEST_PATH)
|
|
|
|
server.moduleGraph.onFileChange(LOCAL_SEARCH_INDEX_REQUEST_PATH)
|
|
|
|
// HMR
|
|
|
|
// HMR
|
|
|
|
const mod = server.moduleGraph.getModuleById(
|
|
|
|
const mod = server.moduleGraph.getModuleById(
|
|
|
|
@ -102,7 +102,6 @@ export async function localSearchPlugin(
|
|
|
|
]
|
|
|
|
]
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getDocId(file: string) {
|
|
|
|
function getDocId(file: string) {
|
|
|
|
let relFile = slash(path.relative(siteConfig.srcDir, file))
|
|
|
|
let relFile = slash(path.relative(siteConfig.srcDir, file))
|
|
|
|
@ -142,9 +141,9 @@ export async function localSearchPlugin(
|
|
|
|
|
|
|
|
|
|
|
|
async function scanForBuild() {
|
|
|
|
async function scanForBuild() {
|
|
|
|
debug('🔍️ Indexing files for search...')
|
|
|
|
debug('🔍️ Indexing files for search...')
|
|
|
|
await pMap(siteConfig.pages, indexFile, {
|
|
|
|
for (const page of siteConfig.pages) {
|
|
|
|
concurrency: siteConfig.buildConcurrency
|
|
|
|
await indexFile(page)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
debug('✅ Indexing finished...')
|
|
|
|
debug('✅ Indexing finished...')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -161,10 +160,9 @@ export async function localSearchPlugin(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}),
|
|
|
|
}),
|
|
|
|
|
|
|
|
|
|
|
|
async configureServer(_server) {
|
|
|
|
configureServer(_server) {
|
|
|
|
server = _server
|
|
|
|
server = _server
|
|
|
|
await scanForBuild()
|
|
|
|
pending = scanForBuild().then(onIndexUpdated)
|
|
|
|
onIndexUpdated()
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
resolveId(id) {
|
|
|
|
resolveId(id) {
|
|
|
|
@ -175,6 +173,7 @@ export async function localSearchPlugin(
|
|
|
|
|
|
|
|
|
|
|
|
async load(id) {
|
|
|
|
async load(id) {
|
|
|
|
if (id === LOCAL_SEARCH_INDEX_REQUEST_PATH) {
|
|
|
|
if (id === LOCAL_SEARCH_INDEX_REQUEST_PATH) {
|
|
|
|
|
|
|
|
await pending
|
|
|
|
if (process.env.NODE_ENV === 'production') {
|
|
|
|
if (process.env.NODE_ENV === 'production') {
|
|
|
|
await scanForBuild()
|
|
|
|
await scanForBuild()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -188,6 +187,7 @@ export async function localSearchPlugin(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return `export default {${records.join(',')}}`
|
|
|
|
return `export default {${records.join(',')}}`
|
|
|
|
} else if (id.startsWith(LOCAL_SEARCH_INDEX_REQUEST_PATH)) {
|
|
|
|
} else if (id.startsWith(LOCAL_SEARCH_INDEX_REQUEST_PATH)) {
|
|
|
|
|
|
|
|
await pending
|
|
|
|
return `export default ${JSON.stringify(
|
|
|
|
return `export default ${JSON.stringify(
|
|
|
|
JSON.stringify(
|
|
|
|
JSON.stringify(
|
|
|
|
indexByLocales.get(
|
|
|
|
indexByLocales.get(
|
|
|
|
|