{"version":3,"sources":["../src/shared.ts","../src/node/config/plugins/vite-plugin-virtual-entry.ts","../src/node/config/plugins/gen-desktop-files.ts","../src/node/config/plugins/vite-plugin-md.ts","../src/node/config/index.ts","../src/node/index.ts"],"names":["__filename","fileURLToPath","__dirname","path","rootDir","distDir","cwdDir","clientDir","getConfig","config","getSomeBuildConfig","cleanUrl","url","vitePluginVirtualEntry","inputHtml","plugin","originalTransform","originalGenerateBundle","code","id","options","bundle","isWrite","result","html","ext","server","req","res","next","source","fs","normalizePath","name","virtualDesktopModuleId","virtualDesktopInfoModuleId","resolvedDesktopVirtualModuleId","resolvedDesktopInfoVirtualModuleId","createImport","file","parseComponent","componentsDir","indexFile","readmeZHCN","readmeENUS","styleFile","demos","glob","demosCode","v","compRoot","p","readmeCode","genDesktopFiles","myConfig","siteinfoPath","lodash","moduleGraph","watcher","ws","reload","mods","seen","mod","chalk","allDefine","key","de","vite_plugin_md_default","viteMd","htmlCode","startTemplate","endTemplate","fragment","str","lang","hljs","md","require","createRequire","slugify","markdownItAnchor","defaultRender","tokens","idx","env","self","getVue3CommonConfig","viteVueJsxPlugin","getDevConfig","isSSR","isPreRender","alias","viteObject","element","DEFAULT_THEME_PATH","themeDir","htmls","FastGlob","i","htmlPath","simulatorHTML","mainHTML","outDir","mergeConfig","searchForWorkspaceRoot","viteVuePlugin","vitePluginWindicss","configFilePath","node_default","devDocs","buildDocs","viteConfig","createServer","build"],"mappings":"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","file":"build-preview.mjs","sourcesContent":["import { getSomeBuildConfig } from \"somebuild\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"url\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nexport const rootDir = path.resolve(__dirname, \"../\");\nexport const srcDir = path.resolve(rootDir, \"./src\");\nexport const distDir = path.resolve(rootDir, \"./dist\");\nexport const cwdDir = process.cwd();\n\n// cli开发时读取src下的，构建之后读取dist下的\nexport const clientDir = __DEV__\n    ? path.resolve(srcDir, \"./client\")\n    : path.resolve(distDir, \"./client\");\n\nexport interface IBuildInfo {\n    config: ISomeBuildConfig\n}\n\nexport type ISomeBuildConfig = {\n    alias: any;\n    define?: any;\n    componentsDir?: string; //组件文件夹\n    glob?: {\n        componentsDir?: string; // 组件文件夹匹配模式\n        componentsDir_ignore?: string[]; // 组件文件夹不匹配的模式\n    };\n    vite?: import(\"vite\").InlineConfig;\n};\n\nexport function defineConfig(config: ISomeBuildConfig) {\n    return config;\n}\n\nexport function getConfig(): ReturnType<typeof getSomeBuildConfig<\"preview\">> {\n    let config = getSomeBuildConfig<\"preview\">(\"preview\", true);\n    if (!config) {\n        throw new Error(\"请定义preview字段\");\n    }\n    return config;\n}\n","// https://github.com/Fi2zz/vite-plugin-virtual-entry/blob/master/README.md\nimport { normalizePath, Plugin, ResolvedConfig } from \"vite\";\nimport fs from \"fs-extra\";\nimport path from \"node:path\";\nimport { clientDir, cwdDir } from \"../../../shared\";\n\nconst cleanUrl = (url: string): string =>\n    url.replace(/#.*$/s, \"\").replace(/\\?.*$/s, \"\");\n\nexport async function vitePluginVirtualEntry(): Promise<Plugin> {\n    let inputHtml = {};\n    return {\n        name: \"vite-plugin-multi-virtual-html\",\n        configResolved(config: ResolvedConfig) {\n            inputHtml = config.build.rollupOptions.input;\n            if (config.command == \"serve\") {\n            } else if (config.command == \"build\") {\n                // @ts-ignore\n                config.plugins = config.plugins.map((plugin: Plugin) => {\n                    if (plugin.name !== \"vite:build-html\") return plugin;\n                    const originalTransform =\n                        plugin.transform as Plugin[\"transform\"] as Function;\n                    const originalGenerateBundle =\n                        plugin.generateBundle as Plugin[\"generateBundle\"] as Function;\n                    plugin.transform = function (code: string, id: string) {\n                        return originalTransform!.call(this, code, id);\n                    };\n                    plugin.generateBundle = async function (\n                        options: any,\n                        bundle: any,\n                        isWrite: boolean\n                    ) {\n                        // @ts-ignore\n                        // config.root = clientDir;\n                        const result = await originalGenerateBundle!.call(\n                            this,\n                            options,\n                            bundle,\n                            isWrite\n                        );\n                        // @ts-ignore\n                        config.root = cwdDir;\n                        return result;\n                    };\n                    return plugin;\n                });\n            }\n        },\n        transformIndexHtml(html) {\n            // 去除注释，打包时这两个注释可以删掉，开发时不会走这里，作用是用于定位\n            // html = html.replace(/<\\!--ENRTYSTART-->/g, \"\")\n            // html = html.replace(/<\\!--ENRTYEND-->/g, \"\")\n            return html;\n        },\n        transform(code, id, options) {\n            let ext = __DEV__ ? \".ts\" : \".js\";\n            if (id.endsWith(\"index.html\")) {\n                code = code.replace(\n                    /<\\!--ENRTYSTART-->[\\s\\S]*?<\\!--ENRTYEND-->/g,\n                    `<script type=\"module\" src=\"desktop/main${ext}\"></script>`\n                );\n            }\n            if (id.endsWith(\"simulator.html\")) {\n                code = code.replace(\n                    /<\\!--ENRTYSTART-->[\\s\\S]*?<\\!--ENRTYEND-->/g,\n                    `<script type=\"module\" src=\"simulator/main${ext}\"></script>`\n                );\n            }\n            return code;\n        },\n        configureServer(server) {\n            // build是采用patches的方式修正vite内的错误，这样的话必须使用指定版本的vite, 但这应该是客户端使用的，使用patch感觉也不行。还是得使用todo中提到的方案\n            server.middlewares.use(async (req, res, next) => {\n                const url = req.url && cleanUrl(req.url);\n                let ext = __DEV__ ? \".ts\" : \".js\";\n                if (url.endsWith(\".md\")) {\n                    // console.log(url);\n\n                    next();\n                    return;\n                }\n                if (\n                    url === \"/\" ||\n                    url.startsWith(\"/zh\") ||\n                    url.startsWith(\"/en\")\n                ) {\n                    res.statusCode = 200;\n                    res.setHeader(\"Content-Type\", \"text/html\");\n                    const source = inputHtml[\"main\"];\n                    let html = fs.readFileSync(source, \"utf-8\");\n                    html = html.replace(\n                        /<\\!--ENRTYSTART-->[\\s\\S]*?<\\!--ENRTYEND-->/g,\n                        `<script type=\"module\" src=\"/@fs/${normalizePath(\n                            path.resolve(clientDir, \"./desktop\")\n                        )}/main${ext}\"></script>`\n                    );\n                    // let html = renderIndexHTML({\n                    //     injectScript: `<script type=\"module\" src=\"/@fs/${normalizePath(path.resolve(clientDir, './desktop'))}/main.ts\"></script>`\n                    // })\n                    html = await server.transformIndexHtml(\n                        url,\n                        html,\n                        req.originalUrl\n                    );\n                    res.end(html);\n                    return;\n                }\n                if (url.endsWith(\"simulator.html\")) {\n                    const [, name] = url.match(/(?<=\\/(.*?))\\.html$/);\n                    const source = inputHtml[name];\n                    if (source) {\n                        let html = fs.readFileSync(source, \"utf-8\");\n                        html = html.replace(\n                            /<\\!--ENRTYSTART-->[\\s\\S]*?<\\!--ENRTYEND-->/g,\n                            `<script type=\"module\" src=\"/@fs/${normalizePath(\n                                path.resolve(clientDir, \"./simulator\")\n                            )}/main${ext}\"></script>`\n                        );\n                        html = await server.transformIndexHtml(\n                            url,\n                            html,\n                            req.originalUrl\n                        );\n                        res.end(html);\n                        return;\n                    }\n                }\n                next();\n            });\n        },\n    };\n}\n","import glob from \"fast-glob\";\nimport path from \"path\";\nimport { ModuleNode, normalizePath, Plugin } from \"vite\";\nimport fs from \"fs-extra\";\nimport chalk from \"chalk\";\nimport lodash from \"lodash-es\";\nimport { clientDir, cwdDir, getConfig } from \"../../../shared\";\n\nconst virtualDesktopModuleId = \"site-desktop-shared\";\nconst virtualDesktopInfoModuleId = \"site-desktop-info\";\nconst resolvedDesktopVirtualModuleId = `somebuild:${virtualDesktopModuleId}`;\nconst resolvedDesktopInfoVirtualModuleId = `somebuild:${virtualDesktopInfoModuleId}`;\n\nfunction createImport(file: string) {\n    return `async ()=>await import('${normalizePath(file)}')`;\n}\n\nfunction parseComponent(componentsDir) {\n    const config = getConfig();\n    const indexFile = path.resolve(componentsDir, \"./index.ts\");\n    const readmeZHCN = path.resolve(componentsDir, \"./index.zh-CN.md\");\n    const readmeENUS = path.resolve(componentsDir, \"./index.en-US.md\");\n    const styleFile = path.resolve(componentsDir, \"./style/style.scss\");\n\n    const demos = glob.sync(componentsDir + \"/demo/*\", { cwd: cwdDir });\n\n    let demosCode = `{\\n`;\n    demos.forEach((v) => {\n        const compRoot = normalizePath(path.resolve(cwdDir, v));\n        const p = path.parse(compRoot);\n        demosCode += `${p.name}: async ()=>await import(\"${compRoot}\"),\\n`;\n    });\n    demosCode += \"}\";\n\n    let readmeCode =\n        `{` +\n        `zhCN: async ()=>await import(\"${readmeZHCN}\"), enUS: async ()=>await import(\"${readmeENUS}\") }`;\n\n    return `{\n        component: ${\n            fs.pathExistsSync(indexFile) ? createImport(indexFile) : undefined\n        },\n        styleFile: ${\n            fs.pathExistsSync(styleFile) ? createImport(styleFile) : undefined\n        },\n        demos: ${demosCode},\n        readme: ${readmeCode}\n    }`;\n}\n\nexport async function genDesktopFiles(): Promise<Plugin> {\n    const myConfig = getConfig();\n    const siteinfoPath = path.resolve(cwdDir, \".somebuild/siteinfo.json\");\n    let root;\n    return {\n        name: \"vite-plugin(somebuild):gen-site-base-code\",\n        resolveId(id) {\n            if (id === virtualDesktopModuleId) {\n                return resolvedDesktopVirtualModuleId;\n            }\n            if (id === virtualDesktopInfoModuleId) {\n                return resolvedDesktopInfoVirtualModuleId;\n            }\n            return null;\n        },\n        transformIndexHtml: {\n            enforce: \"pre\",\n            transform(html) {\n                if (fs.pathExistsSync(siteinfoPath))\n                    return lodash.template(html)(fs.readJSONSync(siteinfoPath));\n                return html;\n            },\n        },\n        config: (config) => {\n            root = config.root;\n        },\n        configureServer(server) {\n            const { moduleGraph, watcher, ws } = server;\n            const reload = (path: string) => {\n                if (path === siteinfoPath) {\n                    const mods = moduleGraph.getModulesByFile(\n                        resolvedDesktopInfoVirtualModuleId\n                    );\n                    if (mods) {\n                        const seen = new Set<ModuleNode>();\n                        mods.forEach((mod) => {\n                            moduleGraph.invalidateModule(mod, seen);\n                        });\n                    }\n                    ws.send({ type: \"full-reload\", path: path });\n                }\n            };\n            watcher\n                .add([siteinfoPath])\n                .on(\"add\", reload)\n                .on(\"change\", reload)\n                .on(\"unlink\", reload);\n        },\n        load(id) {\n            if (id === resolvedDesktopVirtualModuleId) {\n                if (!myConfig.config?.glob?.componentsDir) {\n                    console.log(\n                        chalk.red(\n                            `如需使用${resolvedDesktopVirtualModuleId}请指定glob中的componentsDir`\n                        )\n                    );\n                    return;\n                }\n                let code = \"\";\n                glob.sync(myConfig.config.glob.componentsDir, {\n                    cwd: cwdDir,\n                    onlyDirectories: true,\n                    ignore: myConfig.config.glob.componentsDir_ignore,\n                }).forEach((p) => {\n                    const componentsDir = normalizePath(\n                        path.resolve(cwdDir, p)\n                    );\n                    const name = path.parse(componentsDir).name;\n                    if (\n                        fs.pathExistsSync(\n                            path.resolve(componentsDir, \"./index.ts\")\n                        )\n                    ) {\n                        code += `\\nexport const ${name} = ${parseComponent(\n                            componentsDir\n                        )}\\n`;\n                    }\n                });\n                return `\n                    ${code}\n                `;\n            }\n            if (id === resolvedDesktopInfoVirtualModuleId) {\n                return `export const _siteinfo = ${JSON.stringify(\n                    fs.readJSONSync(siteinfoPath)\n                )}`;\n            }\n        },\n        transform(code, id) {\n            if (\n                id.includes(normalizePath(cwdDir)) ||\n                id.includes(normalizePath(clientDir)) // && !id.includes('node_modules')//TOOD 打包后这里肯定是在node_modules中\n            ) {\n                const allDefine = myConfig.config.define ?? {};\n                for (const key in allDefine) {\n                    if (Object.prototype.hasOwnProperty.call(allDefine, key)) {\n                        const de = allDefine[key];\n                        code = code.replace(new RegExp(key, \"g\"), de);\n                    }\n                }\n            }\n            return code;\n        },\n    };\n}\n","import viteMd from \"vite-plugin-md\";\nimport hljs from \"highlight.js\";\nimport { Plugin } from \"vite\";\nimport MarkdownIt from \"markdown-it\";\nimport { createRequire } from \"node:module\";\n\nexport default async function (): Promise<Plugin> {\n    return viteMd({\n        wrapperClasses: \"van-doc-markdown-body\",\n        transforms: {\n            after(htmlCode: string, id: string) {\n                let startTemplate =\n                    htmlCode.indexOf(\"<template>\") + \"<template>\".length;\n                let endTemplate = htmlCode.lastIndexOf(\"</template>\");\n                const tCode = htmlCode.slice(startTemplate, endTemplate);\n                const group = tCode\n                    .replace(/<h3/g, \":::<h3\")\n                    .replace(/<h2/g, \":::<h2\")\n                    .split(\":::\");\n                const code = group\n                    .map((fragment) => {\n                        if (fragment.indexOf(\"<h3\") !== -1) {\n                            return `<div class=\"van-doc-card\">${fragment}</div>`;\n                        }\n                        return fragment;\n                    })\n                    .join(\"\");\n                return (\n                    htmlCode.slice(0, startTemplate) +\n                    code +\n                    htmlCode.slice(endTemplate)\n                );\n            },\n        },\n        markdownItOptions: {\n            typographer: false, // https://markdown-it.github.io/markdown-it/#MarkdownIt\n            highlight(str: string, lang: string) {\n                if (lang && hljs.getLanguage(lang)) {\n                    // https://github.com/highlightjs/highlight.js/issues/2277\n                    return hljs.highlight(str, {\n                        language: lang,\n                        ignoreIllegals: true,\n                    }).value;\n                }\n                return \"\";\n            },\n        },\n        markdownItSetup(md: MarkdownIt) {\n            const require = createRequire(import.meta.url);\n            const { slugify } = require(\"transliteration\");\n            const markdownItAnchor = require(\"markdown-it-anchor\");\n\n            (function markdownLinkOpen(md: MarkdownIt) {\n                const defaultRender = md.renderer.rules.link_open;\n\n                md.renderer.rules.link_open = (\n                    tokens,\n                    idx,\n                    options,\n                    env,\n                    self\n                ) => {\n                    const aIndex = tokens[idx].attrIndex(\"target\");\n                    if (aIndex < 0) {\n                        tokens[idx].attrPush([\"target\", \"_blank\"]); // add new attribute\n                    }\n                    if (defaultRender) {\n                        return defaultRender(tokens, idx, options, env, self);\n                    }\n                    return self.renderToken(tokens, idx, options);\n                };\n            })(md);\n\n            md.use(markdownItAnchor, {\n                level: 2,\n                slugify,\n            });\n        },\n    });\n}\n","import {\n    InlineConfig,\n    mergeConfig,\n    normalizePath,\n    searchForWorkspaceRoot,\n} from \"vite\";\nimport viteVueJsxPlugin from \"@vitejs/plugin-vue-jsx\";\nimport viteVuePlugin from \"@vitejs/plugin-vue\";\nimport viteMd, { composeSfcBlocks } from \"vite-plugin-md\";\nimport vitePluginWindicss from \"vite-plugin-windicss\";\nimport hljs from \"highlight.js\";\nimport { clientDir, cwdDir, getConfig, rootDir } from \"../../shared\";\nimport path from \"node:path\";\nimport fs from \"fs-extra\";\nimport FastGlob from \"fast-glob\";\nimport { vitePluginVirtualEntry } from \"./plugins/vite-plugin-virtual-entry\";\nimport { genDesktopFiles } from \"./plugins/gen-desktop-files\";\nimport handleMd from \"./plugins/vite-plugin-md\";\nimport type MarkdownIt from \"markdown-it\";\nimport { createRequire } from \"node:module\";\n\nfunction getVue3CommonConfig() {\n    const viteConfig: InlineConfig = {\n        configFile: false, // 禁用自动解析，不去寻找vite.config.ts\n        plugins: [viteVueJsxPlugin()],\n    };\n\n    return viteConfig;\n}\n\nexport async function getDevConfig(\n    isSSR: boolean = false,\n    isPreRender: boolean = false\n) {\n    // 获取配置\n    const config = getConfig();\n    // alias定义+配置中的定义\n    let alias = config.config.alias;\n    const viteObject = config.config.vite ?? {};\n    // 将别名的路径修正为绝对路径\n    for (const key in alias) {\n        if (Object.prototype.hasOwnProperty.call(alias, key)) {\n            const element = alias[key];\n            alias[key] = path.resolve(cwdDir, element);\n        }\n    }\n    // 默认的客户端主题文件位置\n    const DEFAULT_THEME_PATH = path.resolve(\n        clientDir,\n        \"./desktop/theme-default\"\n    );\n    // 选择的主题文件位置\n    const themeDir = (await fs.pathExists(\n        path.resolve(cwdDir, \"./.somebuild/theme\")\n    ))\n        ? path.resolve(cwdDir, \"./.somebuild/theme\")\n        : DEFAULT_THEME_PATH;\n\n    alias = {\n        ...alias,\n        \"somebuild/vite/desktop/theme\": path.resolve(\n            DEFAULT_THEME_PATH,\n            `index.${__DEV__ ? \"ts\" : \"js\"}`\n        ), // 指向默认主题的入口\n        \"@desktop\": path.resolve(clientDir, \"./desktop\"), // 指向pc文件位置\n        \"@theme\": themeDir, // 指向主题位置\n        \"@simulator\": path.resolve(cwdDir, \"./.somebuild/simulator\"), // 指向模拟器位置\n        \"@root\": path.resolve(cwdDir),  // 指向根文件夹\n        // ssr不指定\n    };\n    if (!isSSR && !isPreRender) {\n        alias[\"vue\"] = path.resolve(\n            cwdDir,\n            \"node_modules/vue\",\n            \"dist\",\n            \"vue.runtime.esm-bundler.js\"\n        );\n    }\n\n    let inputHtml: any = {\n        main: path.resolve(clientDir, \"./index.html\"),\n    };\n    const htmls = FastGlob.sync(\"*.html\", {\n        cwd: clientDir,\n        ignore: [\"!index.html\"],\n    });\n    for (let i = 0; i < htmls.length; i++) {\n        const htmlPath = normalizePath(path.resolve(clientDir, htmls[i]));\n        const [, name] = htmlPath.match(/(?<=\\/(.*?))\\.html$/); // 反向肯定匹配，获取文件名\n        inputHtml[name] = htmlPath;\n    }\n\n    if (isSSR) {\n        let simulatorHTML = inputHtml[\"simulator\"];\n        let mainHTML = inputHtml[\"main\"];\n        inputHtml = {\n            // TODO 参考vitepress\n            app: isPreRender\n                ? `${normalizePath(\n                      path.resolve(clientDir, \"./desktop/main.ts\")\n                  )}`\n                : `${normalizePath(\n                      path.resolve(\n                          clientDir,\n                          `./desktop/ssr.${__DEV__ ? \"ts\" : \"js\"}`\n                      )\n                  )}`,\n            // main: `${normalizePath(path.resolve(clientDir, './desktop'))}/main.ts`,\n            // simulator: `${normalizePath(path.resolve(clientDir, './simulator'))}/main.ts`,\n        };\n        if (isPreRender) {\n            inputHtml = {};\n            // 模拟器需要直接输出\n            inputHtml[\"simulator\"] = simulatorHTML;\n            inputHtml[\"main\"] = mainHTML;\n        }\n    }\n    let outDir = path.resolve(cwdDir, \"./.somebuild/dist\");\n    if (isSSR && !isPreRender) {\n        outDir = path.resolve(cwdDir, \"./.somebuild/.tempDir\");\n    }\n    const viteConfig: InlineConfig = mergeConfig(\n        mergeConfig(getVue3CommonConfig(), {\n            root: clientDir,\n            resolve: {\n                alias,\n            },\n            css: {\n                preprocessorOptions: {\n                    scss: {\n                        additionalData: `@import \"@desktop/assets/style/global.scss\";`,\n                    },\n                },\n            },\n            optimizeDeps: {\n                // https://cn.vitejs.dev/config/dep-optimization-options.html#optimizedeps-entries\n                // 可以看到node_modules的文件会被忽略。所以需要使其不被忽略\n                entries: [\"!node_modules/somebuild\"],\n            },\n            build: {\n                html: {},\n                emptyOutDir: true,\n                outDir: outDir,\n                ssrManifest: isSSR && !isPreRender,\n                ssr: isSSR && !isPreRender,\n                rollupOptions: {\n                    input: {\n                        ...inputHtml,\n                    },\n                    output: isSSR\n                        ? !isPreRender\n                            ? {\n                                  entryFileNames: \"[name].mjs\",\n                              }\n                            : {}\n                        : {},\n                    // input: {\n                    //     main: `${normalizePath(path.resolve(clientDir, './desktop'))}/main.ts`,\n                    //     simulator: `${normalizePath(path.resolve(clientDir, './simulator'))}/main.ts`,\n                    // }\n                },\n            },\n            publicDir:\n                isSSR && !isPreRender\n                    ? false\n                    : path.resolve(clientDir, \"./public\"),\n            server: {\n                fs: {\n                    allow: [cwdDir, clientDir, searchForWorkspaceRoot(cwdDir)],\n                },\n            },\n            plugins: [\n                vitePluginVirtualEntry(),\n                viteVuePlugin({\n                    isProduction: false,\n                    include: [/\\.vue$/, /\\.md$/],\n                }),\n                handleMd(),\n                vitePluginWindicss({\n                    scan: {\n                        dirs: [\n                            path.resolve(clientDir, \"./desktop\"),\n                            path.resolve(clientDir, \"./simulator\"),\n                        ],\n                        fileExtensions: [\"vue\", \"tsx\"],\n                    },\n                    onConfigResolved(config, configFilePath) {\n                        // 由于vitePluginWindicss的exclude中包含了node_modules,但是无法去除，通过这种方法\n                        // 可以使得transform时可以识别node_modules中的路径, 最好的方法自然是让官方改下\n                        if (config.extract === undefined) {\n                            config.extract = {\n                                exclude: [\n                                    \".git\",\n                                    \"windi.config.{ts,js}\",\n                                    \"tailwind.config.{ts,js}\",\n                                ],\n                            };\n                        } else {\n                            if (config.extract.exclude === undefined) {\n                                config.extract.exclude = [\n                                    \".git\",\n                                    \"windi.config.{ts,js}\",\n                                    \"tailwind.config.{ts,js}\",\n                                ];\n                            }\n                        }\n                        return config;\n                    },\n                }),\n                genDesktopFiles(),\n            ],\n        } as InlineConfig),\n        viteObject\n    );\n    return viteConfig;\n}\n","import { build, createServer } from \"vite\";\nimport { getDevConfig } from \"./config\";\nimport { clientDir, cwdDir } from \"../shared\";\n\nexport { IBuildInfo } from \"../shared\"\n\nexport default async function () {\n    if (!!process.env.WATCH) {\n        devDocs();\n    } else {\n        buildDocs()\n    }\n}\n\nasync function devDocs() {\n    const viteConfig = await getDevConfig();\n    const server = await createServer({\n        ...viteConfig,\n        logLevel: \"info\",\n        server: {\n            port: 3366,\n            host: \"0.0.0.0\",\n        },\n    });\n    await server.listen();\n    server.printUrls();\n}\n\nasync function buildDocs() {\n    const viteConfig = await getDevConfig();\n    await build({\n        ...viteConfig,\n    });\n}\n"]}