{"version":3,"sources":["jsdelivr-header.js","/npm/vite-plugin-html@3.2.2/dist/index.mjs"],"names":[],"mappings":"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","file":"/npm/vite-plugin-html@3.2.2/dist/index.mjs/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/vite-plugin-html@3.2.2/dist/index.mjs\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { render } from 'ejs';\nimport { expand } from 'dotenv-expand';\nimport dotenv from 'dotenv';\nimport path, { join, dirname } from 'pathe';\nimport fse from 'fs-extra';\nimport * as vite from 'vite';\nimport { normalizePath } from 'vite';\nimport { parse } from 'node-html-parser';\nimport fg from 'fast-glob';\nimport consola from 'consola';\nimport { dim } from 'colorette';\nimport history from 'connect-history-api-fallback';\nimport { minify } from 'html-minifier-terser';\nimport { createFilter } from '@rollup/pluginutils';\n\nfunction loadEnv(mode, envDir, prefix = \"\") {\n  if (mode === \"local\") {\n    throw new Error(`\"local\" cannot be used as a mode name because it conflicts with the .local postfix for .env files.`);\n  }\n  const env = {};\n  const envFiles = [\n    `.env.${mode}.local`,\n    `.env.${mode}`,\n    `.env.local`,\n    `.env`\n  ];\n  for (const file of envFiles) {\n    const path = lookupFile(envDir, [file], true);\n    if (path) {\n      const parsed = dotenv.parse(fse.readFileSync(path));\n      expand({\n        parsed,\n        ignoreProcessEnv: true\n      });\n      for (const [key, value] of Object.entries(parsed)) {\n        if (key.startsWith(prefix) && env[key] === void 0) {\n          env[key] = value;\n        } else if (key === \"NODE_ENV\") {\n          process.env.VITE_USER_NODE_ENV = value;\n        }\n      }\n    }\n  }\n  return env;\n}\nfunction lookupFile(dir, formats, pathOnly = false) {\n  for (const format of formats) {\n    const fullPath = join(dir, format);\n    if (fse.pathExistsSync(fullPath) && fse.statSync(fullPath).isFile()) {\n      return pathOnly ? fullPath : fse.readFileSync(fullPath, \"utf-8\");\n    }\n  }\n  const parentDir = dirname(dir);\n  if (parentDir !== dir) {\n    return lookupFile(parentDir, formats, pathOnly);\n  }\n}\nasync function isDirEmpty(dir) {\n  return fse.readdir(dir).then((files) => {\n    return files.length === 0;\n  });\n}\n\nconst DEFAULT_TEMPLATE = \"index.html\";\nconst ignoreDirs = [\".\", \"\", \"/\"];\nconst bodyInjectRE = /<\\/body>/;\nfunction getViteMajorVersion() {\n  return vite?.version ? Number(vite.version.split(\".\")[0]) : 2;\n}\nfunction createPlugin(userOptions = {}) {\n  const {\n    entry,\n    template = DEFAULT_TEMPLATE,\n    pages = [],\n    verbose = false\n  } = userOptions;\n  let viteConfig;\n  let env = {};\n  const transformIndexHtmlHandler = async (html, ctx) => {\n    const url = ctx.filename;\n    const base = viteConfig.base;\n    const excludeBaseUrl = url.replace(base, \"/\");\n    const htmlName = path.relative(process.cwd(), excludeBaseUrl);\n    const page = getPage(userOptions, htmlName, viteConfig);\n    const { injectOptions = {} } = page;\n    const _html = await renderHtml(html, {\n      injectOptions,\n      viteConfig,\n      env,\n      entry: page.entry || entry,\n      verbose\n    });\n    const { tags = [] } = injectOptions;\n    return {\n      html: _html,\n      tags\n    };\n  };\n  return {\n    name: \"vite:html\",\n    enforce: \"pre\",\n    configResolved(resolvedConfig) {\n      viteConfig = resolvedConfig;\n      env = loadEnv(viteConfig.mode, viteConfig.root, \"\");\n    },\n    config(conf) {\n      const input = createInput(userOptions, conf);\n      if (input) {\n        return {\n          build: {\n            rollupOptions: {\n              input\n            }\n          }\n        };\n      }\n    },\n    configureServer(server) {\n      let _pages = [];\n      const rewrites = [];\n      if (!isMpa(viteConfig)) {\n        const template2 = userOptions.template || DEFAULT_TEMPLATE;\n        const filename = DEFAULT_TEMPLATE;\n        _pages.push({\n          filename,\n          template: template2\n        });\n      } else {\n        _pages = pages.map((page) => {\n          return {\n            filename: page.filename || DEFAULT_TEMPLATE,\n            template: page.template || DEFAULT_TEMPLATE\n          };\n        });\n      }\n      const proxy = viteConfig.server?.proxy ?? {};\n      const baseUrl = viteConfig.base ?? \"/\";\n      const keys = Object.keys(proxy);\n      let indexPage = null;\n      for (const page of _pages) {\n        if (page.filename !== \"index.html\") {\n          rewrites.push(createRewire(page.template, page, baseUrl, keys));\n        } else {\n          indexPage = page;\n        }\n      }\n      if (indexPage) {\n        rewrites.push(createRewire(\"\", indexPage, baseUrl, keys));\n      }\n      server.middlewares.use(history({\n        disableDotRule: void 0,\n        htmlAcceptHeaders: [\"text/html\", \"application/xhtml+xml\"],\n        rewrites\n      }));\n    },\n    transformIndexHtml: getViteMajorVersion() >= 5 ? {\n      order: \"pre\",\n      handler: transformIndexHtmlHandler\n    } : {\n      enforce: \"pre\",\n      transform: transformIndexHtmlHandler\n    },\n    async closeBundle() {\n      const outputDirs = [];\n      if (isMpa(viteConfig) || pages.length) {\n        for (const page of pages) {\n          const dir = path.dirname(page.template);\n          if (!ignoreDirs.includes(dir)) {\n            outputDirs.push(dir);\n          }\n        }\n      } else {\n        const dir = path.dirname(template);\n        if (!ignoreDirs.includes(dir)) {\n          outputDirs.push(dir);\n        }\n      }\n      const cwd = path.resolve(viteConfig.root, viteConfig.build.outDir);\n      const htmlFiles = await fg(outputDirs.map((dir) => `${dir}/*.html`), { cwd: path.resolve(cwd), absolute: true });\n      await Promise.all(htmlFiles.map((file) => fse.move(file, path.resolve(cwd, path.basename(file)), {\n        overwrite: true\n      })));\n      const htmlDirs = await fg(outputDirs.map((dir) => dir), { cwd: path.resolve(cwd), onlyDirectories: true, absolute: true });\n      await Promise.all(htmlDirs.map(async (item) => {\n        const isEmpty = await isDirEmpty(item);\n        if (isEmpty) {\n          return fse.remove(item);\n        }\n      }));\n    }\n  };\n}\nfunction createInput({ pages = [], template = DEFAULT_TEMPLATE }, viteConfig) {\n  const input = {};\n  if (isMpa(viteConfig) || pages?.length) {\n    const templates = pages.map((page) => page.template);\n    templates.forEach((temp) => {\n      let dirName = path.dirname(temp);\n      const file = path.basename(temp);\n      dirName = dirName.replace(/\\s+/g, \"\").replace(/\\//g, \"-\");\n      const key = dirName === \".\" || dirName === \"public\" || !dirName ? file.replace(/\\.html/, \"\") : dirName;\n      input[key] = path.resolve(viteConfig.root, temp);\n    });\n    return input;\n  } else {\n    const dir = path.dirname(template);\n    if (ignoreDirs.includes(dir)) {\n      return void 0;\n    } else {\n      const file = path.basename(template);\n      const key = file.replace(/\\.html/, \"\");\n      return {\n        [key]: path.resolve(viteConfig.root, template)\n      };\n    }\n  }\n}\nasync function renderHtml(html, config) {\n  const { injectOptions, viteConfig, env, entry, verbose } = config;\n  const { data, ejsOptions } = injectOptions;\n  const ejsData = {\n    ...viteConfig?.env ?? {},\n    ...viteConfig?.define ?? {},\n    ...env || {},\n    ...data\n  };\n  let result = await render(html, ejsData, ejsOptions);\n  if (entry) {\n    result = removeEntryScript(result, verbose);\n    result = result.replace(bodyInjectRE, `<script type=\"module\" src=\"${normalizePath(`${entry}`)}\"><\\/script>\n</body>`);\n  }\n  return result;\n}\nfunction getPage({ pages = [], entry, template = DEFAULT_TEMPLATE, inject = {} }, name, viteConfig) {\n  let page;\n  if (isMpa(viteConfig) || pages?.length) {\n    page = getPageConfig(name, pages, DEFAULT_TEMPLATE);\n  } else {\n    page = createSpaPage(entry, template, inject);\n  }\n  return page;\n}\nfunction isMpa(viteConfig) {\n  const input = viteConfig?.build?.rollupOptions?.input ?? void 0;\n  return typeof input !== \"string\" && Object.keys(input || {}).length > 1;\n}\nfunction removeEntryScript(html, verbose = false) {\n  if (!html) {\n    return html;\n  }\n  const root = parse(html);\n  const scriptNodes = root.querySelectorAll(\"script[type=module]\") || [];\n  const removedNode = [];\n  scriptNodes.forEach((item) => {\n    removedNode.push(item.toString());\n    item.parentNode.removeChild(item);\n  });\n  verbose && removedNode.length && consola.warn(`vite-plugin-html: Since you have already configured entry, ${dim(removedNode.toString())} is deleted. You may also delete it from the index.html.\n        `);\n  return root.toString();\n}\nfunction createSpaPage(entry, template, inject = {}) {\n  return {\n    entry,\n    filename: \"index.html\",\n    template,\n    injectOptions: inject\n  };\n}\nfunction getPageConfig(htmlName, pages, defaultPage) {\n  const defaultPageOption = {\n    filename: defaultPage,\n    template: `./${defaultPage}`\n  };\n  const page = pages.filter((page2) => {\n    return path.resolve(\"/\" + page2.template) === path.resolve(\"/\" + htmlName);\n  })?.[0];\n  return page ?? defaultPageOption ?? void 0;\n}\nfunction createRewire(reg, page, baseUrl, proxyUrlKeys) {\n  return {\n    from: new RegExp(`^/${reg}*`),\n    to({ parsedUrl }) {\n      const pathname = parsedUrl.path;\n      const excludeBaseUrl = pathname.replace(baseUrl, \"/\");\n      const template = path.resolve(baseUrl, page.template);\n      if (excludeBaseUrl.startsWith(\"/static\")) {\n        return excludeBaseUrl;\n      }\n      if (excludeBaseUrl === \"/\") {\n        return template;\n      }\n      const isApiUrl = proxyUrlKeys.some((item) => pathname.startsWith(path.resolve(baseUrl, item)));\n      return isApiUrl ? parsedUrl.path : template;\n    }\n  };\n}\n\nconst htmlFilter = createFilter([\"**/*.html\"]);\n\nfunction getOptions(minify) {\n  return {\n    collapseWhitespace: minify,\n    keepClosingSlash: minify,\n    removeComments: minify,\n    removeRedundantAttributes: minify,\n    removeScriptTypeAttributes: minify,\n    removeStyleLinkTypeAttributes: minify,\n    useShortDoctype: minify,\n    minifyCSS: minify\n  };\n}\nasync function minifyHtml(html, minify$1) {\n  if (typeof minify$1 === \"boolean\" && !minify$1) {\n    return html;\n  }\n  let minifyOptions = minify$1;\n  if (typeof minify$1 === \"boolean\" && minify$1) {\n    minifyOptions = getOptions(minify$1);\n  }\n  return await minify(html, minifyOptions);\n}\nfunction createMinifyHtmlPlugin({\n  minify = true\n} = {}) {\n  return {\n    name: \"vite:minify-html\",\n    enforce: \"post\",\n    async generateBundle(_, outBundle) {\n      if (minify) {\n        for (const bundle of Object.values(outBundle)) {\n          if (bundle.type === \"asset\" && htmlFilter(bundle.fileName) && typeof bundle.source === \"string\") {\n            bundle.source = await minifyHtml(bundle.source, minify);\n          }\n        }\n      }\n    }\n  };\n}\n\nconsola.wrapConsole();\nfunction createHtmlPlugin(userOptions = {}) {\n  return [createPlugin(userOptions), createMinifyHtmlPlugin(userOptions)];\n}\n\nexport { createHtmlPlugin };\n"]}