UNPKG

iles

Version:

Vite & Vue powered static site generator with partial hydration

46 lines (41 loc) 1.38 kB
import { parseImports } from "./chunk-6FAOHHHS.js"; import { uniq } from "./chunk-ROUSHGC2.js"; // src/node/plugin/composables.ts import { promises as fs } from "fs"; import { resolve } from "pathe"; var definitionRegex = /(?:function|const|let|var)\s+(definePageComponent|use(?:Page|Route|Head|Documents)\b)/g; var composableUsageRegex = /\b(definePageComponent|use(?:Page|Route|Head|Documents))\s*\(/g; var composables = [ "definePageComponent", "useDocuments", "useHead", "usePage", "useRoute" ]; async function autoImportComposables(code, id) { const matches = Array.from(code.matchAll(composableUsageRegex)); if (matches.length === 0) return; const imports = await parseImports(code); const defined = new Set(Array.from(code.matchAll(definitionRegex)).map((a) => a[1])); const composables2 = uniq(matches.map((a) => a[1])).filter((composable) => !defined.has(composable) && !imports[composable]).join(", "); if (composables2) return `${code} import { ${composables2} } from "iles"`; } function writeComposablesDTS(root) { fs.writeFile(resolve(root, "composables.d.ts"), `// generated by iles // We suggest you to commit this file into source control declare global { ${composables.map((fn) => ` const ${fn}: typeof import('iles')['${fn}']`).join("\n")} } export { } `, "utf-8"); } export { autoImportComposables, writeComposablesDTS };