valaxy 0.14.0 → 0.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,8 +2,8 @@
2
2
  import type { Ref } from 'vue'
3
3
  import { inject, onMounted, ref } from 'vue'
4
4
  import { useI18n } from 'vue-i18n'
5
- import { useAplayer, useCodePen, useCopyCode, wrapTable } from '..'
6
- import type { Post } from '../..'
5
+ import { useAplayer, useCodePen, useCopyCode, useMediumZoom, wrapTable } from 'valaxy'
6
+ import type { Post } from 'valaxy'
7
7
 
8
8
  const props = defineProps<{
9
9
  frontmatter: Post
@@ -32,6 +32,9 @@ if (props.frontmatter.codepen)
32
32
  useCodePen()
33
33
 
34
34
  useCopyCode()
35
+
36
+ if (typeof props.frontmatter.medium_zoom === 'undefined' || props.frontmatter.medium_zoom)
37
+ useMediumZoom()
35
38
  </script>
36
39
 
37
40
  <template>
@@ -64,3 +67,10 @@ useCopyCode()
64
67
  </article>
65
68
  </Transition>
66
69
  </template>
70
+
71
+ <style>
72
+ .medium-zoom-overlay,
73
+ .medium-zoom-image--opened {
74
+ z-index: 999;
75
+ }
76
+ </style>
@@ -42,7 +42,7 @@ async function copyToClipboard(text: string) {
42
42
 
43
43
  const selection = document.getSelection()
44
44
  const originalRange = selection
45
- ? selection.rangeCount > 0 && selection.getRangeAt(0)
45
+ ? (selection.rangeCount > 0 && selection.getRangeAt(0))
46
46
  : null
47
47
 
48
48
  document.body.appendChild(element)
@@ -1 +1,2 @@
1
1
  export * from './copy-code'
2
+ export * from './medium-zoom'
@@ -0,0 +1,23 @@
1
+ import mediumZoom from 'medium-zoom'
2
+ import { useSiteConfig } from 'valaxy'
3
+ import { onMounted } from 'vue'
4
+
5
+ /**
6
+ * @description image preview by medium-zoom
7
+ */
8
+ export const useMediumZoom = () => {
9
+ const siteConfig = useSiteConfig()
10
+ const mediumZoomConfig = siteConfig.value.mediumZoom
11
+
12
+ onMounted(() => {
13
+ if (mediumZoomConfig.enable) {
14
+ mediumZoom(
15
+ mediumZoomConfig.selector || '.markdown-body img',
16
+ {
17
+ background: 'var(--medium-zoom-c-bg, rgba(0, 0, 0, 0.8))',
18
+ ...mediumZoomConfig.options,
19
+ },
20
+ )
21
+ }
22
+ })
23
+ }
@@ -24,6 +24,7 @@ export function useTags(options: {
24
24
  const primaryColor = new TinyColor(options.primary)
25
25
 
26
26
  const getTagStyle = (count: number) => {
27
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
27
28
  const counts = Array.from(tags.value).map(([_, value]) => value.count)
28
29
  const max = Math.max(...counts)
29
30
  const min = Math.min(...counts)
@@ -6,7 +6,7 @@ import { install as installNprogress } from '../modules/nprogress'
6
6
 
7
7
  export default function setupMain(ctx: ViteSSGContext) {
8
8
  // @ts-expect-error inject in runtime
9
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-vars
10
10
  const injection_arg = ctx
11
11
 
12
12
  installValaxy(ctx)
@@ -6,29 +6,6 @@ export function random(min: number, max: number) {
6
6
  return Math.random() * (max - min) + min
7
7
  }
8
8
 
9
- /**
10
- * wrap node
11
- * @param className
12
- */
13
- export function wrap(el: HTMLElement, className: string) {
14
- const wrapper = document.createElement('div')
15
- wrapper.className = className
16
- el.parentNode!.insertBefore(wrapper, el)
17
- el.parentNode!.removeChild(el)
18
- wrapper.appendChild(el)
19
- }
20
-
21
- /**
22
- * 包裹表格,添加 class 以控制 table 样式
23
- */
24
- export const wrapTable = (container: HTMLElement | Document = document) => {
25
- container.querySelectorAll('table').forEach((el) => {
26
- const container = document.createElement('div')
27
- container.className = 'table-container'
28
- wrap(el, 'table-container')
29
- })
30
- }
31
-
32
9
  export function throttleAndDebounce(fn: () => void, delay: number): () => void {
33
10
  let timeout: number
34
11
  let called = false
@@ -1,3 +1,4 @@
1
1
  export * from './cdn'
2
2
  export * from './helper'
3
3
  export * from './time'
4
+ export * from './wrap'
@@ -0,0 +1,22 @@
1
+ /**
2
+ * wrap node
3
+ * @param className
4
+ */
5
+ export function wrap(el: HTMLElement, className: string) {
6
+ const wrapper = document.createElement('div')
7
+ wrapper.className = className
8
+ el.parentNode!.insertBefore(wrapper, el)
9
+ el.parentNode!.removeChild(el)
10
+ wrapper.appendChild(el)
11
+ }
12
+
13
+ /**
14
+ * 包裹表格,添加 class 以控制 table 样式
15
+ */
16
+ export const wrapTable = (container: HTMLElement | Document = document) => {
17
+ container.querySelectorAll('table').forEach((el) => {
18
+ const container = document.createElement('div')
19
+ container.className = 'table-container'
20
+ wrap(el, 'table-container')
21
+ })
22
+ }
@@ -14,8 +14,8 @@ GFS4: `),console.error(e)});K[oe]||(na=global[oe]||[],oa(K,na),K.close=function(
14
14
  `)+r,i=n+1,n=e.indexOf(`
15
15
  `,i)}while(n!==-1);return o+=e.substr(i),o};Sm.exports={stringReplaceAll:GS,stringEncaseCRLFWithFirstIndex:WS}});var Fm=v((_F,km)=>{"use strict";var YS=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,wm=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,KS=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,zS=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,JS=new Map([["n",`
16
16
  `],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function Rm(e){let t=e[0]==="u",r=e[1]==="{";return t&&!r&&e.length===5||e[0]==="x"&&e.length===3?String.fromCharCode(parseInt(e.slice(1),16)):t&&r?String.fromCodePoint(parseInt(e.slice(2,-1),16)):JS.get(e)||e}function QS(e,t){let r=[],n=t.trim().split(/\s*,\s*/g),i;for(let o of n){let s=Number(o);if(!Number.isNaN(s))r.push(s);else if(i=o.match(KS))r.push(i[2].replace(zS,(a,u,l)=>u?Rm(u):l));else throw new Error(`Invalid Chalk template style argument: ${o} (in style '${e}')`)}return r}function XS(e){wm.lastIndex=0;let t=[],r;for(;(r=wm.exec(e))!==null;){let n=r[1];if(r[2]){let i=QS(n,r[2]);t.push([n].concat(i))}else t.push([n])}return t}function Am(e,t){let r={};for(let i of t)for(let o of i.styles)r[o[0]]=i.inverse?null:o.slice(1);let n=e;for(let[i,o]of Object.entries(r))if(!!Array.isArray(o)){if(!(i in n))throw new Error(`Unknown Chalk style: ${i}`);n=o.length>0?n[i](...o):n[i]}return n}km.exports=(e,t)=>{let r=[],n=[],i=[];if(t.replace(YS,(o,s,a,u,l,c)=>{if(s)i.push(Rm(s));else if(u){let p=i.join("");i=[],n.push(r.length===0?p:Am(e,r)(p)),r.push({inverse:a,styles:XS(u)})}else if(l){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");n.push(Am(e,r)(i.join(""))),i=[],r.pop()}else i.push(c)}),n.push(i.join("")),r.length>0){let o=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(o)}return n.join("")}});var Im=v((EF,Mm)=>{"use strict";var kr=ym(),{stdout:Us,stderr:Gs}=bm(),{stringReplaceAll:ZS,stringEncaseCRLFWithFirstIndex:eC}=Cm(),{isArray:Wn}=Array,Pm=["ansi","ansi","ansi256","ansi16m"],Xt=Object.create(null),tC=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Us?Us.level:0;e.level=t.level===void 0?r:t.level},Ws=class{constructor(t){return Tm(t)}},Tm=e=>{let t={};return tC(t,e),t.template=(...r)=>Dm(t.template,...r),Object.setPrototypeOf(t,Yn.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=Ws,t.template};function Yn(e){return Tm(e)}for(let[e,t]of Object.entries(kr))Xt[e]={get(){let r=Kn(this,Ys(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:r}),r}};Xt.visible={get(){let e=Kn(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};var $m=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let e of $m)Xt[e]={get(){let{level:t}=this;return function(...r){let n=Ys(kr.color[Pm[t]][e](...r),kr.color.close,this._styler);return Kn(this,n,this._isEmpty)}}};for(let e of $m){let t="bg"+e[0].toUpperCase()+e.slice(1);Xt[t]={get(){let{level:r}=this;return function(...n){let i=Ys(kr.bgColor[Pm[r]][e](...n),kr.bgColor.close,this._styler);return Kn(this,i,this._isEmpty)}}}}var rC=Object.defineProperties(()=>{},{...Xt,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),Ys=(e,t,r)=>{let n,i;return r===void 0?(n=e,i=t):(n=r.openAll+e,i=t+r.closeAll),{open:e,close:t,openAll:n,closeAll:i,parent:r}},Kn=(e,t,r)=>{let n=(...i)=>Wn(i[0])&&Wn(i[0].raw)?Om(n,Dm(n,...i)):Om(n,i.length===1?""+i[0]:i.join(" "));return Object.setPrototypeOf(n,rC),n._generator=e,n._styler=t,n._isEmpty=r,n},Om=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let r=e._styler;if(r===void 0)return t;let{openAll:n,closeAll:i}=r;if(t.indexOf("\x1B")!==-1)for(;r!==void 0;)t=ZS(t,r.close,r.open),r=r.parent;let o=t.indexOf(`
17
- `);return o!==-1&&(t=eC(t,i,n,o)),n+t+i},Vs,Dm=(e,...t)=>{let[r]=t;if(!Wn(r)||!Wn(r.raw))return t.join(" ");let n=t.slice(1),i=[r.raw[0]];for(let o=1;o<r.length;o++)i.push(String(n[o-1]).replace(/[{}\\]/g,"\\$&"),String(r.raw[o]));return Vs===void 0&&(Vs=Fm()),Vs(e,i.join(""))};Object.defineProperties(Yn.prototype,Xt);var zn=Yn();zn.supportsColor=Us;zn.stderr=Yn({level:Gs?Gs.level:0});zn.stderr.supportsColor=Gs;Mm.exports=zn});var er=Q(Ae(),1);import Zt from"path";import{exec as mC}from"child_process";import hC from"yargs";import{mergeConfig as Ks}from"vite";import gC from"open";import Qn from"consola";import{yellow as yC}from"kolorist";import{hideBin as vC}from"yargs/helpers";var Hr="0.14.0";import r1 from"net";async function gi(e){return await n1(e)?e:await gi(e+1)}function n1(e){return new Promise(t=>{let r=r1.createServer(n=>{n.write(`Echo server\r
18
- `),n.pipe(n)});r.listen(e,"0.0.0.0"),r.on("error",()=>{t(!1)}),r.on("listening",()=>{r.close(),t(!0)})})}var jp=Q(Ae(),1),Hp=Q(Ei(),1),Vp=Q(bn(),1);import{dirname as HE,resolve as Fn}from"path";import{ensureSuffix as Bp,uniq as VE}from"@antfu/utils";function ns(e){return e!==null&&typeof e=="object"}function is(e,t,r=".",n){if(!ns(t))return is(e,{},r,n);let i=Object.assign({},t);for(let o in e){if(o==="__proto__"||o==="constructor")continue;let s=e[o];s!=null&&(n&&n(i,o,s,r)||(Array.isArray(s)&&Array.isArray(i[o])?i[o]=s.concat(i[o]):ns(s)&&ns(i[o])?i[o]=is(s,i[o],(r?`${r}.`:"")+o.toString(),n):i[o]=s))}return i}function mr(e){return(...t)=>t.reduce((r,n)=>is(r,n,"",e),{})}var $e=mr(),kw=mr((e,t,r,n)=>{if(typeof e[t]<"u"&&typeof r=="function")return e[t]=r(e[t]),!0}),Fw=mr((e,t,r,n)=>{if(Array.isArray(e[t])&&typeof r=="function")return e[t]=r(e[t]),!0});import{cyan as UE,yellow as GE}from"kolorist";import F_ from"consola";var os=()=>process.env.NODE_ENV==="production",ss=(e="development")=>{process.env.NODE_ENV=e,we.level=os()?2:3},hr=()=>ss("production");var we=F_.create({level:os()?2:3});var Tp=Q(bp(),1);import{join as Fp}from"path";import AE from"is-installed-globally";import Op from"global-dirs";import Pp from"consola";import{spawn as EE}from"cross-spawn";function _r(e,t="updated"){return new Promise((r,n)=>{let i=["log"];t==="updated"&&i.push("-1"),i.push('--pretty="%ci"',e),t==="created"&&i.push("|","tail","-1");let o=EE("git",i),s="";o.stdout.on("data",a=>s+=String(a)),o.on("close",()=>{r(+new Date(s))}),o.on("error",()=>{r(0)})})}var An="<!-- more -->",jt=/^https?:/i,Sp=/^pathname:\/\//;function Cp(e){return jt.test(e)}function it(e){return e.replace(/\\/g,"/")}function hs(e,t){return t.startsWith(e)?t:e+t}function te(e){return`/@fs${hs("/",it(e))}`}function wp(e){return e.startsWith("/")||/^\.\.?[\/\\]/.test(e)}import{mergeConfig as SE}from"vite";import{isFunction as Ap}from"@antfu/utils";import{cyan as CE,dim as wE}from"kolorist";import{loadConfig as xE}from"unconfig";import{normalizePath as bE}from"vite";async function vt(e,t={}){let{config:r,sources:n}=await await xE({sources:{files:e,rewrite:t.rewrite},cwd:t.cwd||process.cwd()}),i=bE(n[0]||"");return{config:r,configFile:i}}var Ht=mr((e,t,r)=>{if(Ap(e[t])&&Ap(r)&&(e[t]=function(...n){e[t].call(this,...n),r.call(this,...n)}),t==="vite")return e[t]=SE(e[t],r),!0});async function gs(e,t){return vt("valaxy.config",{rewrite(r){return typeof r=="function"?r(t||{}):r},cwd:e})}async function Rp(e){let{config:t,configFile:r}=await gs(e.userRoot||process.cwd());t&&we.info(`Resolve ${CE("valaxyConfig")} from ${wE(r)}`);let n=e.theme||t.theme||"yun";return{config:t,configFile:r,theme:n}}async function kp(e,t){let r={};for(let n of e){let{config:i,configFile:o}=await vt("index",{rewrite(s,a){return typeof s=="function"?s(n,t):s},cwd:n.root});!i||(n.configFile=o,r=Ht(i,r))}return r}var $p=e=>`JSON.parse(${JSON.stringify(JSON.stringify(e))})`;function Ge(e,t=!1,r={preserveSymlinks:!1}){try{return(0,Tp.sync)(e,r)}catch(n){Pp.log(n)}if(AE){try{return I.resolve(Fp(Op.yarn.packages,e))}catch{}try{return I.resolve(Fp(Op.npm.packages,e))}catch{}}if(t)throw new Error(`Failed to resolve package ${e}`);Pp.error(`Failed to resolve package ${e}`)}function RE(e){return e}var bA=RE;function kE(e){return e}var SA=kE;function wA(e){return e}function FE(e){return e}var AA=FE,ys={mode:"auto",url:"/",lang:"en",title:"Valaxy Blog",description:"A blog generated by Valaxy.",subtitle:"Next Generation Static Blog Framework.",author:{avatar:"https://www.yunyoujun.cn/images/avatar.jpg",email:"i@valaxy.site",link:"https://valaxy.site",name:"VALAXY Developer",status:{emoji:"\u{1F30C}",message:"The moonlight is beautiful."}},favicon:"/favicon.svg",feed:{name:"",favicon:"/favicon.svg"},social:[],date:{format:""},lastUpdated:!0,license:{enabled:!0,language:"",type:"by-nc-sa"},sponsor:{enable:!0,title:"\u8D5E\u52A9",methods:[]},search:{enable:!1,type:"fuse"},comment:{enable:!1},cdn:{prefix:"https://unpkg.com/"}},Dp={ignoreDeadLinks:!0,siteConfig:ys,theme:"yun",themeConfig:{pkg:{name:"",version:""}},runtimeConfig:{addons:{}},features:{katex:!0},vite:{build:{rollupOptions:{external:[]}}}};function RA(e){return e}var vs=Q(Ae(),1);import{resolve as TE}from"path";import{cyan as $E,yellow as DE}from"kolorist";import{dirname as Mp,resolve as OE}from"path";import PE from"fs";function Rn(e,t){if(!e)return"";if(wp(e))if(t){let r=PE.lstatSync(t).isFile();return OE(r?Mp(t):t,e)}else throw new Error(`entry is required when ${e} is path`);else return Mp(Ge(`${e}/package.json`)||"")}async function Lp(e,t=process.cwd()){let r={},n=o=>{o&&(r[o.name]=$e(r[o.name]||{},o))};if(Array.isArray(e))for(let o of e){if(typeof o=="string"){n(await Ip(o,{cwd:t}));continue}typeof o=="object"&&n($e(await Ip(o.name,{cwd:t}),o||{}))}let i=Object.values(r).filter(o=>o.enable);return we.info(`Resolve ${$E("addons:")} ${DE(i.map(o=>o.name).join(", "))}`),i}async function Ip(e,t={}){let r=ME(e,t.cwd||process.cwd()),n=TE(r,"./package.json");if(!vs.default.existsSync(n)){we.error(`No addon named ${e} found`);return}let i=await vs.default.readJSON(n);return{enable:!0,name:i.name,global:!!i.global,root:r,options:{},props:{}}}function ME(e,t){let r=e.startsWith("valaxy-addon")||e.startsWith(".")?e:`valaxy-addon-${e}`;return Rn(r,t)}function Np(e,t){let r=e.startsWith("valaxy-theme")||e.startsWith(".")?e:`valaxy-theme-${e}`;return Rn(r,t)}import{cyan as IE,dim as LE}from"kolorist";async function NE(e){return vt("site.config",{cwd:e})}async function kn(e){let{config:t,configFile:r}=await NE(e);return t&&we.info(`Resolve ${IE("siteConfig")} from ${LE(r)}`),{siteConfig:t,siteConfigFile:r}}import{cyan as qE,dim as BE}from"kolorist";async function jE(e){return vt("theme.config",{cwd:e})}async function qp(e){let{config:t,configFile:r}=await jE(e);return t&&we.info(`Resolve ${qE("themeConfig")} from ${BE(r)}`),{themeConfig:t,themeConfigFile:r}}var WE=(0,Hp.default)("valaxy:options");async function YE(e){let{config:t,themeRoot:r,theme:n}=e,i=t.siteConfig;i.url=Bp("/",i.url||""),i.cdn.prefix=Bp("/",i.cdn.prefix||"");let o=Fn(r,"package.json");try{t.themeConfig.pkg=await jp.default.readJson(o,"utf-8")}catch{console.error(`valaxy-theme-${n} doesn't have package.json`)}}async function _s(e,t){let{clientRoot:r,themeRoot:n,userRoot:i}=e,o=await Lp(t.addons||[],e.userRoot),s=await kp(o,e);t=Ht(t,s);let a=$e(t,Dp);e.config={...a,runtimeConfig:{addons:{}}},e.addons=o,o.forEach(p=>{e.config.runtimeConfig.addons[p.name]=p});let u=o.map(({root:p})=>p),l=o.map(({name:p})=>p);e.addonRoots=u,e.roots=VE([r,n,...u,i]);let c=e.config.vite?.build?.rollupOptions?.external||[];return e.config.vite.build.rollupOptions.external=c.filter(p=>!l.includes(p)),await YE(e),e}async function De(e={userRoot:process.cwd()},t="dev"){let r=HE(Ge("valaxy/package.json",!0)),n=Fn(r,"client"),i=Fn(e.userRoot||process.cwd()),{config:o,configFile:s,theme:a}=await Rp(e),{siteConfig:u,siteConfigFile:l}=await kn(e.userRoot),{themeConfig:c,themeConfigFile:p}=await qp(e.userRoot);o=$e({siteConfig:u},{themeConfig:c},o);let f=Np(a,e.userRoot),y=(await(0,Vp.default)(["**.md"],{cwd:Fn(i,"pages"),ignore:["**/node_modules"]})).sort(),h={mode:t,pkgRoot:r,clientRoot:n,userRoot:i,themeRoot:f,addonRoots:[],roots:[],theme:a,config:{...o,runtimeConfig:{addons:{}}},configFile:s||"",siteConfigFile:l||"",themeConfigFile:p||"",pages:y,addons:[]};WE(h);let _=await Es(h),E=Ht(o,_);return h=await _s(h,E),h}async function Es(e){we.info(`Resolve ${UE("valaxy.config.ts")} from ${GE(`theme(${e.theme})`)}`);let{config:t}=await gs(e.themeRoot,e);return t}import*as Gd from"readline";import cS from"path";import lS from"os";import{blue as Vd,bold as $s,cyan as fS,dim as We,gray as pS,green as dS,underline as Ds,yellow as mS}from"kolorist";import Ud from"consola";import{mergeConfig as hS}from"vite";import{createServer as aS,mergeConfig as uS}from"vite";import Nn from"fs";import{splitVendorChunkPlugin as Qb}from"vite";import Xb from"markdown-it";import Zb from"gray-matter";import eS from"@vitejs/plugin-vue";import tS from"vite-plugin-pages";import rS from"vite-plugin-vue-layouts";import nS from"unplugin-vue-components/vite";import iS from"@intlify/unplugin-vue-i18n/vite";import jd from"dayjs";import{convert as oS}from"html-to-text";import Wx from"markdown-it";import _d from"markdown-it-anchor";import Yx from"markdown-it-attrs";import Kx from"markdown-it-emoji";import zx from"markdown-it-task-lists";import KE from"markdown-it/lib/common/html_blocks.js";var zE="[a-zA-Z_:@][a-zA-Z0-9:._-]*",JE="[^\"'=<>`\\x00-\\x20]+",QE="'[^']*'",XE='"[^"]*"',ZE="(?:"+JE+"|"+QE+"|"+XE+")",xs="(?:\\s+"+zE+"(?:\\s*=\\s*"+ZE+")?)",Up="<[A-Za-z][A-Za-z0-9\\-]*"+xs+"*\\s*\\/?>",Gp="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",ex="<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->",tx="<[?][\\s\\S]*?[?]>",rx="<![A-Z]+\\s+[^>]*>",nx="<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",ix=new RegExp("^(?:"+Up+"|"+Gp+"|"+ex+"|"+tx+"|"+rx+"|"+nx+")"),ox=new RegExp("^(?:"+Up+"|"+Gp+")"),sx=new RegExp("^<[A-Za-z][A-Za-z0-9\\-]*"+xs+"*\\s*\\/>"),ax=new RegExp("^<([A-Za-z][A-Za-z0-9\\-]*)"+xs+"*\\s*>.*<\\/\\1\\s*>"),ux=KE,cx=["a","abbr","acronym","audio","b","bdi","bdo","big","br","button","canvas","cite","code","data","datalist","del","dfn","em","embed","i","iframe","img","input","ins","kbd","label","map","mark","meter","noscript","object","output","picture","progress","q","ruby","s","samp","script","select","slot","small","span","strong","sub","sup","svg","template","textarea","time","u","tt","var","video","wbr"],lx=["template","component","transition","transition-group","keep-alive","slot","teleport"],fx=({blockTags:e,inlineTags:t})=>{let r=[...e,...ux],n=[...t,...cx.filter(o=>!lx.includes(o))];return[[/^<(script|pre|style)(?=(\s|>|$))/i,/<\/(script|pre|style)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+r.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp("^</?(?!("+n.join("|")+")(?![\\w-]))[A-Za-z][A-Za-z0-9\\-]*(?=(\\s|/?>|$))"),/^$/,!0],[new RegExp(ox.source+"\\s*$"),/^$/,!1]]},px=e=>{let t=fx(e);return(r,n,i,o)=>{let s,a,u,l=r.bMarks[n]+r.tShift[n],c=r.eMarks[n];if(r.sCount[n]-r.blkIndent>=4||!r.md.options.html||r.src.charCodeAt(l)!==60)return!1;for(u=r.src.slice(l,c),s=0;s<t.length&&!t[s][0].test(u);s++);if(s===t.length)return!1;if(o)return t[s][2];if(s===6){let f=u.match(sx)??u.match(ax);if(f){r.line=n+1;let y=r.push("html_inline","",0);return y.content=f[0],y.map=[n,r.line],y=r.push("inline","",0),y.content=u.slice(f[0].length),y.map=[n,r.line],y.children=[],!0}}if(a=n+1,!t[s][1].test(u)){for(;a<i&&!(r.sCount[a]<r.blkIndent);a++)if(l=r.bMarks[a]+r.tShift[a],c=r.eMarks[a],u=r.src.slice(l,c),t[s][1].test(u)){u.length!==0&&a++;break}}r.line=a;let p=r.push("html_block","",0);return p.map=[n,a],p.content=r.getLines(n,a,r.blkIndent,!0),!0}},dx=e=>{let t=e|32;return t>=97&&t<=122},mx=(e,t)=>{let{pos:r}=e;if(!e.md.options.html)return!1;let n=e.posMax;if(e.src.charCodeAt(r)!==60||r+2>=n)return!1;let i=e.src.charCodeAt(r+1);if(i!==33&&i!==63&&i!==47&&!dx(i))return!1;let o=e.src.slice(r).match(ix);if(!o)return!1;if(!t){let s=e.push("html_inline","",0);s.content=e.src.slice(r,r+o[0].length)}return e.pos+=o[0].length,!0},Wp=(e,{blockTags:t=[],inlineTags:r=[]}={})=>{let n=px({blockTags:t,inlineTags:r});e.block.ruler.at("html_block",n,{alt:["paragraph","reference","blockquote"]}),e.inline.ruler.at("html_inline",mx)};import hx from"gray-matter";var Yp=(e,{grayMatterOptions:t,renderExcerpt:r=!0}={})=>{let n=e.render.bind(e);e.render=(i,o={})=>{let{data:s,content:a,excerpt:u=""}=hx(i,t);return o.content=a,o.frontmatter={...o.frontmatter,...s},o.excerpt=r&&u?n(u,{...o}):u,n(a,o)}};var gx={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},yx=/[&<>'"]/g,_t=e=>e.replace(yx,t=>gx[t]);var Er=(e,{shouldAllowHtml:t,shouldEscapeText:r})=>{let n=e.children??[],i=["text","emoji","code_inline"];return t&&i.push("html_inline"),n.filter(s=>i.includes(s.type)&&!s.meta?.isPermalinkSymbol).reduce((s,a)=>r&&(a.type==="code_inline"||a.type==="text")?`${s}${_t(a.content)}`:`${s}${a.content}`,"").trim()},On=(e,{level:t,shouldAllowHtml:r,shouldEscapeText:n,slugify:i,format:o})=>{let s=[],a=[],u=l=>{for(;a.length!==0&&l.level<=a[0].level;)a.shift();a.length===0?(s.push(l),a.push(l)):(a[0].children.push(l),a.unshift(l))};for(let l=0;l<e.length;l+=1){let c=e[l];if(c?.type!=="heading_open"||c?.level!==0)continue;let p=Number.parseInt(c.tag.slice(1),10);if(!t.includes(p))continue;let f=e[l+1];if(!f)continue;let y=Er(f,{shouldAllowHtml:r,shouldEscapeText:n}),h=c.attrGet("id")??i(y);u({level:p,title:o?.(y)??y,slug:h,link:`#${h}`,children:[]})}return s},vx=/[\u0000-\u001f]/g,_x=/[\s~`!@#$%^&*()\-_+=[\]{}|\\;:"'“”‘’<>,.?/]+/g,Ex=/[\u0300-\u036F]/g,Pn=e=>e.normalize("NFKD").replace(Ex,"").replace(vx,"").replace(_x,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"").replace(/^(\d)/,"_$1").toLowerCase();var Kp=(e,{level:t=[2,3],slugify:r=Pn,format:n}={})=>{let i=e.renderer.render.bind(e.renderer);e.renderer.render=(o,s,a)=>(a.headers=On(o,{level:t,shouldAllowHtml:!1,shouldEscapeText:!1,slugify:r,format:n}),i(o,s,a))};var zp="script",Jp="style",xr="template",xx=/^<script\s+.*?\bsetup\b.*?>$/is,bx=({customBlocks:e})=>{let t=Array.from(new Set([zp,Jp,...e])).join("|");return new RegExp(`^\\s*(?<content>(?<tagOpen><(?<type>${t})\\s?.*?>)(?<contentStripped>.*)(?<tagClose><\\/\\k<type>\\s*>))\\s*$`,"is")},Qp=(e,{customBlocks:t=[]}={})=>{let r=bx({customBlocks:t}),n=e.render.bind(e);e.render=(o,s={})=>{s.sfcBlocks={template:null,script:null,scriptSetup:null,scripts:[],styles:[],customBlocks:[]};let a=n(o,s);return s.sfcBlocks.template={type:xr,content:`<${xr}>${a}</${xr}>`,contentStripped:a,tagOpen:`<${xr}>`,tagClose:`</${xr}>`},a};let i=e.renderer.rules.html_block;e.renderer.rules.html_block=(o,s,a,u,l)=>{if(!u.sfcBlocks)return i(o,s,a,u,l);let f=o[s].content.match(r);if(!f)return i(o,s,a,u,l);let y=f.groups;return y.type===zp?(u.sfcBlocks.scripts.push(y),xx.test(y.tagOpen)?u.sfcBlocks.scriptSetup=y:u.sfcBlocks.script=y):y.type===Jp?u.sfcBlocks.styles.push(y):u.sfcBlocks.customBlocks.push(y),""}};var Xp=e=>{let t=e.renderer.render.bind(e.renderer);e.renderer.render=(r,n,i)=>{let o=r.findIndex(s=>s.tag==="h1");return i.title=o>-1?Er(r[o+1],{shouldAllowHtml:!1,shouldEscapeText:!1}):"",t(r,n,i)}};var Sx=({listTag:e,listClass:t,itemClass:r,linkTag:n,linkClass:i})=>{let o=_t(e),s=t?` class="${_t(t)}"`:"",a="li",u=r?` class="${_t(r)}"`:"",l=_t(n),c=i?` class="${_t(i)}"`:"",p=y=>n==="router-link"?` to="${y}"`:` href="${y}"`,f=y=>`<${o}${s}>${y.map(h=>`<${a}${u}${u}><${l}${c}${p(h.link)}>${h.title}</${l}>${h.children.length>0?f(h.children):""}</${a}>`).join("")}</${o}>`;return f},Cx=({pattern:e,containerTag:t,containerClass:r})=>(n,i,o,s)=>{if(n.sCount[i]-n.blkIndent>=4)return!1;let a=n.bMarks[i]+n.tShift[i],u=n.eMarks[i],l=n.src.slice(a,u).split(" ")[0];if(!e.test(l))return!1;if(s)return!0;n.line=i+1;let c=n.push("toc_open",t,1);c.markup="",c.map=[i,n.line],r&&c.attrSet("class",r);let p=n.push("toc_body","",0);p.markup=l,p.map=[i,n.line],p.hidden=!0;let f=n.push("toc_close",t,-1);return f.markup="",p.map=[i,n.line],!0},Zp=(e,{pattern:t=/^\[\[toc\]\]$/i,slugify:r=Pn,format:n,level:i=[2,3],containerTag:o="nav",containerClass:s="table-of-contents",listTag:a="ul",listClass:u="",itemClass:l="",linkTag:c="a",linkClass:p=""}={})=>{e.block.ruler.before("heading","toc",Cx({pattern:t,containerTag:o,containerClass:s}),{alt:["paragraph","reference","blockquote"]});let f=Sx({listTag:a,listClass:u,itemClass:l,linkTag:c,linkClass:p});e.renderer.rules.toc_body=y=>f(On(y,{level:i,shouldAllowHtml:!0,shouldEscapeText:!0,slugify:r,format:n}))};import ed from"katex";function td(e,t){let r=e.posMax,n=!0,i=!0,o=t>0?e.src.charCodeAt(t-1):-1,s=t+1<=r?e.src.charCodeAt(t+1):-1;return(o===32||o===9||s>=48&&s<=57)&&(i=!1),(s===32||s===9)&&(n=!1),{can_open:n,can_close:i}}function wx(e,t){let r,n,i,o;if(e.src[e.pos]!=="$")return!1;if(i=td(e,e.pos),!i.can_open)return t||(e.pending+="$"),e.pos+=1,!0;let s=e.pos+1;for(r=s;(r=e.src.indexOf("$",r))!==-1;){for(o=r-1;e.src[o]==="\\";)o-=1;if((r-o)%2===1)break;r+=1}return r===-1?(t||(e.pending+="$"),e.pos=s,!0):r-s===0?(t||(e.pending+="$$"),e.pos=s+1,!0):(i=td(e,r),i.can_close?(t||(n=e.push("math_inline","math",0),n.markup="$",n.content=e.src.slice(s,r)),e.pos=r+1,!0):(t||(e.pending+="$"),e.pos=s,!0))}function Ax(e,t,r,n){let i,o,s,a,u=!1,l=e.bMarks[t]+e.tShift[t],c=e.eMarks[t];if(l+2>c||e.src.slice(l,l+2)!=="$$")return!1;if(l+=2,i=e.src.slice(l,c),n)return!0;for(i.trim().slice(-2)==="$$"&&(i=i.trim().slice(0,-2),u=!0),s=t;!u&&(s++,!(s>=r||(l=e.bMarks[s]+e.tShift[s],c=e.eMarks[s],l<c&&e.tShift[s]<e.blkIndent)));)e.src.slice(l,c).trim().slice(-2)==="$$"&&(a=e.src.slice(0,c).lastIndexOf("$$"),o=e.src.slice(l,a),u=!0);e.line=s+1;let p=e.push("math_block","math",0);return p.block=!0,p.content=(i&&i.trim()?`${i}
17
+ `);return o!==-1&&(t=eC(t,i,n,o)),n+t+i},Vs,Dm=(e,...t)=>{let[r]=t;if(!Wn(r)||!Wn(r.raw))return t.join(" ");let n=t.slice(1),i=[r.raw[0]];for(let o=1;o<r.length;o++)i.push(String(n[o-1]).replace(/[{}\\]/g,"\\$&"),String(r.raw[o]));return Vs===void 0&&(Vs=Fm()),Vs(e,i.join(""))};Object.defineProperties(Yn.prototype,Xt);var zn=Yn();zn.supportsColor=Us;zn.stderr=Yn({level:Gs?Gs.level:0});zn.stderr.supportsColor=Gs;Mm.exports=zn});var er=Q(Ae(),1);import Zt from"path";import{exec as mC}from"child_process";import hC from"yargs";import{mergeConfig as Ks}from"vite";import gC from"open";import Qn from"consola";import{yellow as yC}from"kolorist";import{hideBin as vC}from"yargs/helpers";var Hr="0.14.2";import r1 from"net";async function gi(e){return await n1(e)?e:await gi(e+1)}function n1(e){return new Promise(t=>{let r=r1.createServer(n=>{n.write(`Echo server\r
18
+ `),n.pipe(n)});r.listen(e,"0.0.0.0"),r.on("error",()=>{t(!1)}),r.on("listening",()=>{r.close(),t(!0)})})}var jp=Q(Ae(),1),Hp=Q(Ei(),1),Vp=Q(bn(),1);import{dirname as HE,resolve as Fn}from"path";import{ensureSuffix as Bp,uniq as VE}from"@antfu/utils";function ns(e){return e!==null&&typeof e=="object"}function is(e,t,r=".",n){if(!ns(t))return is(e,{},r,n);let i=Object.assign({},t);for(let o in e){if(o==="__proto__"||o==="constructor")continue;let s=e[o];s!=null&&(n&&n(i,o,s,r)||(Array.isArray(s)&&Array.isArray(i[o])?i[o]=s.concat(i[o]):ns(s)&&ns(i[o])?i[o]=is(s,i[o],(r?`${r}.`:"")+o.toString(),n):i[o]=s))}return i}function mr(e){return(...t)=>t.reduce((r,n)=>is(r,n,"",e),{})}var $e=mr(),kw=mr((e,t,r,n)=>{if(typeof e[t]<"u"&&typeof r=="function")return e[t]=r(e[t]),!0}),Fw=mr((e,t,r,n)=>{if(Array.isArray(e[t])&&typeof r=="function")return e[t]=r(e[t]),!0});import{cyan as UE,yellow as GE}from"kolorist";import F_ from"consola";var os=()=>process.env.NODE_ENV==="production",ss=(e="development")=>{process.env.NODE_ENV=e,we.level=os()?2:3},hr=()=>ss("production");var we=F_.create({level:os()?2:3});var Tp=Q(bp(),1);import{join as Fp}from"path";import AE from"is-installed-globally";import Op from"global-dirs";import Pp from"consola";import{spawn as EE}from"cross-spawn";function _r(e,t="updated"){return new Promise((r,n)=>{let i=["log"];t==="updated"&&i.push("-1"),i.push('--pretty="%ci"',e),t==="created"&&i.push("|","tail","-1");let o=EE("git",i),s="";o.stdout.on("data",a=>s+=String(a)),o.on("close",()=>{r(+new Date(s))}),o.on("error",()=>{r(0)})})}var An="<!-- more -->",jt=/^https?:/i,Sp=/^pathname:\/\//;function Cp(e){return jt.test(e)}function it(e){return e.replace(/\\/g,"/")}function hs(e,t){return t.startsWith(e)?t:e+t}function te(e){return`/@fs${hs("/",it(e))}`}function wp(e){return e.startsWith("/")||/^\.\.?[\/\\]/.test(e)}import{mergeConfig as SE}from"vite";import{isFunction as Ap}from"@antfu/utils";import{cyan as CE,dim as wE}from"kolorist";import{loadConfig as xE}from"unconfig";import{normalizePath as bE}from"vite";async function vt(e,t={}){let{config:r,sources:n}=await await xE({sources:{files:e,rewrite:t.rewrite},cwd:t.cwd||process.cwd()}),i=bE(n[0]||"");return{config:r,configFile:i}}var Ht=mr((e,t,r)=>{if(Ap(e[t])&&Ap(r)&&(e[t]=function(...n){e[t].call(this,...n),r.call(this,...n)}),t==="vite")return e[t]=SE(e[t],r),!0});async function gs(e,t){return vt("valaxy.config",{rewrite(r){return typeof r=="function"?r(t||{}):r},cwd:e})}async function Rp(e){let{config:t,configFile:r}=await gs(e.userRoot||process.cwd());t&&we.info(`Resolve ${CE("valaxyConfig")} from ${wE(r)}`);let n=e.theme||t.theme||"yun";return{config:t,configFile:r,theme:n}}async function kp(e,t){let r={};for(let n of e){let{config:i,configFile:o}=await vt("index",{rewrite(s,a){return typeof s=="function"?s(n,t):s},cwd:n.root});!i||(n.configFile=o,r=Ht(i,r))}return r}var $p=e=>`JSON.parse(${JSON.stringify(JSON.stringify(e))})`;function Ge(e,t=!1,r={preserveSymlinks:!1}){try{return(0,Tp.sync)(e,r)}catch(n){Pp.log(n)}if(AE){try{return I.resolve(Fp(Op.yarn.packages,e))}catch{}try{return I.resolve(Fp(Op.npm.packages,e))}catch{}}if(t)throw new Error(`Failed to resolve package ${e}`);Pp.error(`Failed to resolve package ${e}`)}function RE(e){return e}var bA=RE;function kE(e){return e}var SA=kE;function wA(e){return e}function FE(e){return e}var AA=FE,ys={mode:"auto",url:"/",lang:"en",title:"Valaxy Blog",description:"A blog generated by Valaxy.",subtitle:"Next Generation Static Blog Framework.",author:{avatar:"https://www.yunyoujun.cn/images/avatar.jpg",email:"i@valaxy.site",link:"https://valaxy.site",name:"VALAXY Developer",status:{emoji:"\u{1F30C}",message:"The moonlight is beautiful."}},favicon:"/favicon.svg",feed:{name:"",favicon:"/favicon.svg"},social:[],date:{format:""},lastUpdated:!0,license:{enabled:!0,language:"",type:"by-nc-sa"},sponsor:{enable:!0,title:"\u8D5E\u52A9",methods:[]},search:{enable:!1,type:"fuse"},comment:{enable:!1},cdn:{prefix:"https://unpkg.com/"},mediumZoom:{enable:!1,selector:"",options:{}}},Dp={ignoreDeadLinks:!0,siteConfig:ys,theme:"yun",themeConfig:{pkg:{name:"",version:""}},runtimeConfig:{addons:{}},features:{katex:!0},vite:{build:{rollupOptions:{external:[]}}}};function RA(e){return e}var vs=Q(Ae(),1);import{resolve as TE}from"path";import{cyan as $E,yellow as DE}from"kolorist";import{dirname as Mp,resolve as OE}from"path";import PE from"fs";function Rn(e,t){if(!e)return"";if(wp(e))if(t){let r=PE.lstatSync(t).isFile();return OE(r?Mp(t):t,e)}else throw new Error(`entry is required when ${e} is path`);else return Mp(Ge(`${e}/package.json`)||"")}async function Lp(e,t=process.cwd()){let r={},n=o=>{o&&(r[o.name]=$e(r[o.name]||{},o))};if(Array.isArray(e))for(let o of e){if(typeof o=="string"){n(await Ip(o,{cwd:t}));continue}typeof o=="object"&&n($e(await Ip(o.name,{cwd:t}),o||{}))}let i=Object.values(r).filter(o=>o.enable);return we.info(`Resolve ${$E("addons:")} ${DE(i.map(o=>o.name).join(", "))}`),i}async function Ip(e,t={}){let r=ME(e,t.cwd||process.cwd()),n=TE(r,"./package.json");if(!vs.default.existsSync(n)){we.error(`No addon named ${e} found`);return}let i=await vs.default.readJSON(n);return{enable:!0,name:i.name,global:!!i.global,root:r,options:{},props:{}}}function ME(e,t){let r=e.startsWith("valaxy-addon")||e.startsWith(".")?e:`valaxy-addon-${e}`;return Rn(r,t)}function Np(e,t){let r=e.startsWith("valaxy-theme")||e.startsWith(".")?e:`valaxy-theme-${e}`;return Rn(r,t)}import{cyan as IE,dim as LE}from"kolorist";async function NE(e){return vt("site.config",{cwd:e})}async function kn(e){let{config:t,configFile:r}=await NE(e);return t&&we.info(`Resolve ${IE("siteConfig")} from ${LE(r)}`),{siteConfig:t,siteConfigFile:r}}import{cyan as qE,dim as BE}from"kolorist";async function jE(e){return vt("theme.config",{cwd:e})}async function qp(e){let{config:t,configFile:r}=await jE(e);return t&&we.info(`Resolve ${qE("themeConfig")} from ${BE(r)}`),{themeConfig:t,themeConfigFile:r}}var WE=(0,Hp.default)("valaxy:options");async function YE(e){let{config:t,themeRoot:r,theme:n}=e,i=t.siteConfig;i.url=Bp("/",i.url||""),i.cdn.prefix=Bp("/",i.cdn.prefix||"");let o=Fn(r,"package.json");try{t.themeConfig.pkg=await jp.default.readJson(o,"utf-8")}catch{console.error(`valaxy-theme-${n} doesn't have package.json`)}}async function _s(e,t){let{clientRoot:r,themeRoot:n,userRoot:i}=e,o=await Lp(t.addons||[],e.userRoot),s=await kp(o,e);t=Ht(t,s);let a=$e(t,Dp);e.config={...a,runtimeConfig:{addons:{}}},e.addons=o,o.forEach(p=>{e.config.runtimeConfig.addons[p.name]=p});let u=o.map(({root:p})=>p),l=o.map(({name:p})=>p);e.addonRoots=u,e.roots=VE([r,n,...u,i]);let c=e.config.vite?.build?.rollupOptions?.external||[];return e.config.vite.build.rollupOptions.external=c.filter(p=>!l.includes(p)),await YE(e),e}async function De(e={userRoot:process.cwd()},t="dev"){let r=HE(Ge("valaxy/package.json",!0)),n=Fn(r,"client"),i=Fn(e.userRoot||process.cwd()),{config:o,configFile:s,theme:a}=await Rp(e),{siteConfig:u,siteConfigFile:l}=await kn(e.userRoot),{themeConfig:c,themeConfigFile:p}=await qp(e.userRoot);o=$e({siteConfig:u},{themeConfig:c},o);let f=Np(a,e.userRoot),y=(await(0,Vp.default)(["**.md"],{cwd:Fn(i,"pages"),ignore:["**/node_modules"]})).sort(),h={mode:t,pkgRoot:r,clientRoot:n,userRoot:i,themeRoot:f,addonRoots:[],roots:[],theme:a,config:{...o,runtimeConfig:{addons:{}}},configFile:s||"",siteConfigFile:l||"",themeConfigFile:p||"",pages:y,addons:[]};WE(h);let _=await Es(h),E=Ht(o,_);return h=await _s(h,E),h}async function Es(e){we.info(`Resolve ${UE("valaxy.config.ts")} from ${GE(`theme(${e.theme})`)}`);let{config:t}=await gs(e.themeRoot,e);return t}import*as Gd from"readline";import cS from"path";import lS from"os";import{blue as Vd,bold as $s,cyan as fS,dim as We,gray as pS,green as dS,underline as Ds,yellow as mS}from"kolorist";import Ud from"consola";import{mergeConfig as hS}from"vite";import{createServer as aS,mergeConfig as uS}from"vite";import Nn from"fs";import{splitVendorChunkPlugin as Qb}from"vite";import Xb from"markdown-it";import Zb from"gray-matter";import eS from"@vitejs/plugin-vue";import tS from"vite-plugin-pages";import rS from"vite-plugin-vue-layouts";import nS from"unplugin-vue-components/vite";import iS from"@intlify/unplugin-vue-i18n/vite";import jd from"dayjs";import{convert as oS}from"html-to-text";import Wx from"markdown-it";import _d from"markdown-it-anchor";import Yx from"markdown-it-attrs";import Kx from"markdown-it-emoji";import zx from"markdown-it-task-lists";import KE from"markdown-it/lib/common/html_blocks.js";var zE="[a-zA-Z_:@][a-zA-Z0-9:._-]*",JE="[^\"'=<>`\\x00-\\x20]+",QE="'[^']*'",XE='"[^"]*"',ZE="(?:"+JE+"|"+QE+"|"+XE+")",xs="(?:\\s+"+zE+"(?:\\s*=\\s*"+ZE+")?)",Up="<[A-Za-z][A-Za-z0-9\\-]*"+xs+"*\\s*\\/?>",Gp="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",ex="<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->",tx="<[?][\\s\\S]*?[?]>",rx="<![A-Z]+\\s+[^>]*>",nx="<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",ix=new RegExp("^(?:"+Up+"|"+Gp+"|"+ex+"|"+tx+"|"+rx+"|"+nx+")"),ox=new RegExp("^(?:"+Up+"|"+Gp+")"),sx=new RegExp("^<[A-Za-z][A-Za-z0-9\\-]*"+xs+"*\\s*\\/>"),ax=new RegExp("^<([A-Za-z][A-Za-z0-9\\-]*)"+xs+"*\\s*>.*<\\/\\1\\s*>"),ux=KE,cx=["a","abbr","acronym","audio","b","bdi","bdo","big","br","button","canvas","cite","code","data","datalist","del","dfn","em","embed","i","iframe","img","input","ins","kbd","label","map","mark","meter","noscript","object","output","picture","progress","q","ruby","s","samp","script","select","slot","small","span","strong","sub","sup","svg","template","textarea","time","u","tt","var","video","wbr"],lx=["template","component","transition","transition-group","keep-alive","slot","teleport"],fx=({blockTags:e,inlineTags:t})=>{let r=[...e,...ux],n=[...t,...cx.filter(o=>!lx.includes(o))];return[[/^<(script|pre|style)(?=(\s|>|$))/i,/<\/(script|pre|style)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+r.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp("^</?(?!("+n.join("|")+")(?![\\w-]))[A-Za-z][A-Za-z0-9\\-]*(?=(\\s|/?>|$))"),/^$/,!0],[new RegExp(ox.source+"\\s*$"),/^$/,!1]]},px=e=>{let t=fx(e);return(r,n,i,o)=>{let s,a,u,l=r.bMarks[n]+r.tShift[n],c=r.eMarks[n];if(r.sCount[n]-r.blkIndent>=4||!r.md.options.html||r.src.charCodeAt(l)!==60)return!1;for(u=r.src.slice(l,c),s=0;s<t.length&&!t[s][0].test(u);s++);if(s===t.length)return!1;if(o)return t[s][2];if(s===6){let f=u.match(sx)??u.match(ax);if(f){r.line=n+1;let y=r.push("html_inline","",0);return y.content=f[0],y.map=[n,r.line],y=r.push("inline","",0),y.content=u.slice(f[0].length),y.map=[n,r.line],y.children=[],!0}}if(a=n+1,!t[s][1].test(u)){for(;a<i&&!(r.sCount[a]<r.blkIndent);a++)if(l=r.bMarks[a]+r.tShift[a],c=r.eMarks[a],u=r.src.slice(l,c),t[s][1].test(u)){u.length!==0&&a++;break}}r.line=a;let p=r.push("html_block","",0);return p.map=[n,a],p.content=r.getLines(n,a,r.blkIndent,!0),!0}},dx=e=>{let t=e|32;return t>=97&&t<=122},mx=(e,t)=>{let{pos:r}=e;if(!e.md.options.html)return!1;let n=e.posMax;if(e.src.charCodeAt(r)!==60||r+2>=n)return!1;let i=e.src.charCodeAt(r+1);if(i!==33&&i!==63&&i!==47&&!dx(i))return!1;let o=e.src.slice(r).match(ix);if(!o)return!1;if(!t){let s=e.push("html_inline","",0);s.content=e.src.slice(r,r+o[0].length)}return e.pos+=o[0].length,!0},Wp=(e,{blockTags:t=[],inlineTags:r=[]}={})=>{let n=px({blockTags:t,inlineTags:r});e.block.ruler.at("html_block",n,{alt:["paragraph","reference","blockquote"]}),e.inline.ruler.at("html_inline",mx)};import hx from"gray-matter";var Yp=(e,{grayMatterOptions:t,renderExcerpt:r=!0}={})=>{let n=e.render.bind(e);e.render=(i,o={})=>{let{data:s,content:a,excerpt:u=""}=hx(i,t);return o.content=a,o.frontmatter={...o.frontmatter,...s},o.excerpt=r&&u?n(u,{...o}):u,n(a,o)}};var gx={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},yx=/[&<>'"]/g,_t=e=>e.replace(yx,t=>gx[t]);var Er=(e,{shouldAllowHtml:t,shouldEscapeText:r})=>{let n=e.children??[],i=["text","emoji","code_inline"];return t&&i.push("html_inline"),n.filter(s=>i.includes(s.type)&&!s.meta?.isPermalinkSymbol).reduce((s,a)=>r&&(a.type==="code_inline"||a.type==="text")?`${s}${_t(a.content)}`:`${s}${a.content}`,"").trim()},On=(e,{level:t,shouldAllowHtml:r,shouldEscapeText:n,slugify:i,format:o})=>{let s=[],a=[],u=l=>{for(;a.length!==0&&l.level<=a[0].level;)a.shift();a.length===0?(s.push(l),a.push(l)):(a[0].children.push(l),a.unshift(l))};for(let l=0;l<e.length;l+=1){let c=e[l];if(c?.type!=="heading_open"||c?.level!==0)continue;let p=Number.parseInt(c.tag.slice(1),10);if(!t.includes(p))continue;let f=e[l+1];if(!f)continue;let y=Er(f,{shouldAllowHtml:r,shouldEscapeText:n}),h=c.attrGet("id")??i(y);u({level:p,title:o?.(y)??y,slug:h,link:`#${h}`,children:[]})}return s},vx=/[\u0000-\u001f]/g,_x=/[\s~`!@#$%^&*()\-_+=[\]{}|\\;:"'“”‘’<>,.?/]+/g,Ex=/[\u0300-\u036F]/g,Pn=e=>e.normalize("NFKD").replace(Ex,"").replace(vx,"").replace(_x,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"").replace(/^(\d)/,"_$1").toLowerCase();var Kp=(e,{level:t=[2,3],slugify:r=Pn,format:n}={})=>{let i=e.renderer.render.bind(e.renderer);e.renderer.render=(o,s,a)=>(a.headers=On(o,{level:t,shouldAllowHtml:!1,shouldEscapeText:!1,slugify:r,format:n}),i(o,s,a))};var zp="script",Jp="style",xr="template",xx=/^<script\s+.*?\bsetup\b.*?>$/is,bx=({customBlocks:e})=>{let t=Array.from(new Set([zp,Jp,...e])).join("|");return new RegExp(`^\\s*(?<content>(?<tagOpen><(?<type>${t})\\s?.*?>)(?<contentStripped>.*)(?<tagClose><\\/\\k<type>\\s*>))\\s*$`,"is")},Qp=(e,{customBlocks:t=[]}={})=>{let r=bx({customBlocks:t}),n=e.render.bind(e);e.render=(o,s={})=>{s.sfcBlocks={template:null,script:null,scriptSetup:null,scripts:[],styles:[],customBlocks:[]};let a=n(o,s);return s.sfcBlocks.template={type:xr,content:`<${xr}>${a}</${xr}>`,contentStripped:a,tagOpen:`<${xr}>`,tagClose:`</${xr}>`},a};let i=e.renderer.rules.html_block;e.renderer.rules.html_block=(o,s,a,u,l)=>{if(!u.sfcBlocks)return i(o,s,a,u,l);let f=o[s].content.match(r);if(!f)return i(o,s,a,u,l);let y=f.groups;return y.type===zp?(u.sfcBlocks.scripts.push(y),xx.test(y.tagOpen)?u.sfcBlocks.scriptSetup=y:u.sfcBlocks.script=y):y.type===Jp?u.sfcBlocks.styles.push(y):u.sfcBlocks.customBlocks.push(y),""}};var Xp=e=>{let t=e.renderer.render.bind(e.renderer);e.renderer.render=(r,n,i)=>{let o=r.findIndex(s=>s.tag==="h1");return i.title=o>-1?Er(r[o+1],{shouldAllowHtml:!1,shouldEscapeText:!1}):"",t(r,n,i)}};var Sx=({listTag:e,listClass:t,itemClass:r,linkTag:n,linkClass:i})=>{let o=_t(e),s=t?` class="${_t(t)}"`:"",a="li",u=r?` class="${_t(r)}"`:"",l=_t(n),c=i?` class="${_t(i)}"`:"",p=y=>n==="router-link"?` to="${y}"`:` href="${y}"`,f=y=>`<${o}${s}>${y.map(h=>`<${a}${u}${u}><${l}${c}${p(h.link)}>${h.title}</${l}>${h.children.length>0?f(h.children):""}</${a}>`).join("")}</${o}>`;return f},Cx=({pattern:e,containerTag:t,containerClass:r})=>(n,i,o,s)=>{if(n.sCount[i]-n.blkIndent>=4)return!1;let a=n.bMarks[i]+n.tShift[i],u=n.eMarks[i],l=n.src.slice(a,u).split(" ")[0];if(!e.test(l))return!1;if(s)return!0;n.line=i+1;let c=n.push("toc_open",t,1);c.markup="",c.map=[i,n.line],r&&c.attrSet("class",r);let p=n.push("toc_body","",0);p.markup=l,p.map=[i,n.line],p.hidden=!0;let f=n.push("toc_close",t,-1);return f.markup="",p.map=[i,n.line],!0},Zp=(e,{pattern:t=/^\[\[toc\]\]$/i,slugify:r=Pn,format:n,level:i=[2,3],containerTag:o="nav",containerClass:s="table-of-contents",listTag:a="ul",listClass:u="",itemClass:l="",linkTag:c="a",linkClass:p=""}={})=>{e.block.ruler.before("heading","toc",Cx({pattern:t,containerTag:o,containerClass:s}),{alt:["paragraph","reference","blockquote"]});let f=Sx({listTag:a,listClass:u,itemClass:l,linkTag:c,linkClass:p});e.renderer.rules.toc_body=y=>f(On(y,{level:i,shouldAllowHtml:!0,shouldEscapeText:!0,slugify:r,format:n}))};import ed from"katex";function td(e,t){let r=e.posMax,n=!0,i=!0,o=t>0?e.src.charCodeAt(t-1):-1,s=t+1<=r?e.src.charCodeAt(t+1):-1;return(o===32||o===9||s>=48&&s<=57)&&(i=!1),(s===32||s===9)&&(n=!1),{can_open:n,can_close:i}}function wx(e,t){let r,n,i,o;if(e.src[e.pos]!=="$")return!1;if(i=td(e,e.pos),!i.can_open)return t||(e.pending+="$"),e.pos+=1,!0;let s=e.pos+1;for(r=s;(r=e.src.indexOf("$",r))!==-1;){for(o=r-1;e.src[o]==="\\";)o-=1;if((r-o)%2===1)break;r+=1}return r===-1?(t||(e.pending+="$"),e.pos=s,!0):r-s===0?(t||(e.pending+="$$"),e.pos=s+1,!0):(i=td(e,r),i.can_close?(t||(n=e.push("math_inline","math",0),n.markup="$",n.content=e.src.slice(s,r)),e.pos=r+1,!0):(t||(e.pending+="$"),e.pos=s,!0))}function Ax(e,t,r,n){let i,o,s,a,u=!1,l=e.bMarks[t]+e.tShift[t],c=e.eMarks[t];if(l+2>c||e.src.slice(l,l+2)!=="$$")return!1;if(l+=2,i=e.src.slice(l,c),n)return!0;for(i.trim().slice(-2)==="$$"&&(i=i.trim().slice(0,-2),u=!0),s=t;!u&&(s++,!(s>=r||(l=e.bMarks[s]+e.tShift[s],c=e.eMarks[s],l<c&&e.tShift[s]<e.blkIndent)));)e.src.slice(l,c).trim().slice(-2)==="$$"&&(a=e.src.slice(0,c).lastIndexOf("$$"),o=e.src.slice(l,a),u=!0);e.line=s+1;let p=e.push("math_block","math",0);return p.block=!0,p.content=(i&&i.trim()?`${i}
19
19
  `:"")+e.getLines(t+1,s,e.tShift[t],!0)+(o&&o.trim()?o:""),p.map=[t,e.line],p.markup="$$",!0}function bs(e,t){t=t||{};let r=function(s){t.displayMode=!1;try{return ed.renderToString(s,t)}catch(a){return t.throwOnError&&console.warn(a),s}},n=function(s,a){return r(s[a].content)},i=function(s){t.displayMode=!0;try{return`<p>${ed.renderToString(s,t)}</p>`}catch(a){return t.throwOnError&&console.warn(a),s}},o=function(s,a){return`${i(s[a].content)}
20
20
  `};e.inline.ruler.after("escape","math_inline",wx),e.block.ruler.after("blockquote","math_block",Ax,{alt:["paragraph","reference","blockquote","list"]}),e.renderer.rules.math_inline=n,e.renderer.rules.math_block=o}import Ss from"markdown-it-container";function Rx(e,{icon:t,color:r,text:n,langs:i}={}){return[Ss,e,{render(o,s){let a=o[s],u=a.info.trim().slice(e.length).trim();if(a.nesting===1){if(e==="details")return`<details class="${e} custom-block">${`<summary>${u}</summary>`}
21
21
  `;let l="";t&&(l=`<i class="icon ${t}" ${r?`style="color: ${r}"`:""}></i>`);let c=`<span lang="en">${u||n}</span>`;return i&&Object.keys(i).forEach(p=>{c+=`<span lang="${p}">${i[p]}</span>`}),`<div class="${e} custom-block"><p class="custom-block-title">${l}${c}</p>
@@ -27,7 +27,7 @@ GFS4: `),console.error(e)});K[oe]||(na=global[oe]||[],oa(K,na),K.close=function(
27
27
  `:`</div>
28
28
  `})})};var od=Q(id(),1),Fx=/[\u0000-\u001F]/g,Ox=/[\s~`!@#$%^&*()\-_+=[\]{}|\\;:"'<>,.…?/]+/g,Mn=e=>(0,od.remove)(e).replace(Fx,"").replace(Ox,"-").replace(/\-{2,}/g,"-").replace(/^\-+|\-+$/g,"").replace(/^(\d)/,"_$1").toLowerCase();import sd from"crypto";var Px=128,Et,Vt,Tx=e=>{!Et||Et.length<e?(Et=Buffer.allocUnsafe(e*Px),sd.randomFillSync(Et),Vt=0):Vt+e>Et.length&&(sd.randomFillSync(Et),Vt=0),Vt+=e},$x=e=>(Tx(e-=0),Et.subarray(Vt-e,Vt)),Dx=(e,t,r)=>{let n=(2<<31-Math.clz32(e.length-1|1))-1,i=Math.ceil(1.6*n*t/e.length);return(o=t)=>{let s="";for(;;){let a=r(i),u=i;for(;u--;)if(s+=e[a[u]&n]||"",s.length===o)return s}}},ad=(e,t=21)=>Dx(e,t,$x);var md=Q(Rs(),1);import{getHighlighter as Lx}from"shiki";function Sr(e,t={}){return({code:r})=>{let n=t.tagRegExp??/(?:\/\/|\/\*{1,2}) *\[!code ([\w+-]+)(?::(\d+))?] *(?:\*{1,2}\/)?/,i=[];return r=r.split(`
29
29
  `).map((o,s)=>{let[a,u,l]=o.match(n)??[];return!a||!Object.keys(e).includes(u)?o:(Array.from({length:Number(l??1)}).forEach((c,p)=>{i.push({line:s+p+1,classes:e[u]})}),o.replace(n,""))}).join(`
30
- `),{code:r,lineOptions:i}}}function Ut(e,t,r){let n=new RegExp(`<${r??"w+"}[^>]*class="([\\w+-:;\\/* ]*)"`);return t=Array.isArray(t)?t:[t],e.replace(n,(i,o)=>i.replace(o,`${o} ${t}`))}function ld(e={}){let t=e.commonDiffClass??"diff",r=e.removedLinesClasses??["remove"],n=e.removedLinesClasses??["add"],i=e.removeLineTag??"--",o=e.addLineTag??"++",s=e.hasDiffClass??"has-diff";return{name:"diff",handler:Sr({[i]:[t,...r],[o]:[t,...n]},e),postProcess:({code:a})=>a.includes(t)?Ut(a,s,"pre"):a}}function fd(e={}){let t=e.hasFocusClass??"has-focus",r=e.hasFocusedLinesClass??"has-focused-lines",n=e.focusTag??"focus";return{name:"focus",handler:Sr({[n]:[t]},e),postProcess:({code:i})=>i.includes(t)?Ut(i,r,"pre"):i}}function pd(e={}){let t=e.hasHighlightClass??"has-highlight",r=e.hasHighlightedLinesClass??"has-highlighted-lines",n=e.highlightTag??"hl";return{name:"highlight",handler:Sr({[n]:[t]},e),postProcess:({code:i})=>i.includes(t)?Ut(i,r,"pre"):i}}function Nx(e,t,r){return e.reduce((n,i)=>{let{code:o,lineOptions:s}=i.handler?.({code:n.code,lang:r})??n;return{code:o,lineOptions:[...n.lineOptions,...s]}},{code:t,lineOptions:[]})}function qx(e,t,r){return e.reduce((n,i)=>i.postProcess?.({code:n,lang:r})??n,t)}async function dd(e={}){let t=await Lx(e),r=e.processors??[];return{...t,codeToHtml:(n,i)=>{let o=typeof i=="object"?i.lang:i,s=typeof i=="object"?i.lineOptions??[]:[],a=typeof i=="object"?i.theme:void 0,{code:u,lineOptions:l}=Nx(r,n,o),c=t.codeToHtml(u,{lang:o,theme:a,lineOptions:[...l,...s]});return qx(r,c,o)}}}var Bx=ad("abcdefghijklmnopqrstuvwxyz",10),jx=e=>{e=e.replace(/^(?:\[.*?\])?.*?([\d,-]+).*/,"$1").trim();let t=[];return e?(e.split(",").map(r=>r.split("-").map(n=>parseInt(n,10))).forEach(([r,n])=>{r&&n?t.push(...Array.from({length:n-r+1},(i,o)=>r+o)):t.push(r)}),t.map(r=>({line:r,classes:["highlighted"]}))):[]},Hx={name:"error-level",handler:Sr({error:["highlighted","error"],warning:["highlighted","warning"]})};async function hd(e="material-palenight",t="txt"){let r=typeof e=="string"||"name"in e,n=p=>typeof p=="string"?p:p.name,i=[fd(),pd({hasHighlightClass:"highlighted"}),ld(),Hx],o=await dd({themes:r?[e]:[e.dark,e.light],processors:i}),s=/<pre[^>]*(style=".*?")/,a=/^<pre(.*?)>/,u=/-vue$/,l=/:(no-)?line-numbers$/,c=/\{\{.*?\}\}/g;return(p,f,y)=>{let h=u.test(f)?"":"v-pre";f=f.replace(l,"").replace(u,"").toLowerCase()||t,f&&(o.getLoadedLanguages().includes(f)||(f!==t&&console.warn(md.default.yellow(`The language '${f}' is not loaded, falling back to '${t}' for syntax highlighting.`)),f=t));let _=jx(y),E=L=>L.replace(a,(C,S)=>`<pre ${h}${S}>`).replace(s,(C,S)=>C.replace(S,"")),b=new Map,D=L=>h?L:L.replace(c,C=>{let S=b.get(C);return S||(S=Bx(),b.set(C,S)),S}),P=L=>(b.forEach((C,S)=>{L=L.replaceAll(C,S)}),L);if(r)return E(P(o.codeToHtml(D(p),{lang:f,lineOptions:_,theme:n(e)})));let V=Ut(E(o.codeToHtml(p,{lang:f,lineOptions:_,theme:n(e.dark)})),"va-code-dark","pre"),N=Ut(E(o.codeToHtml(p,{lang:f,lineOptions:_,theme:n(e.light)})),"va-code-light","pre");return V+N}}var Vx=/^<pre .*?><code>/,gd=e=>{let t=e.renderer.rules.fence;e.renderer.rules.fence=(...r)=>{let[n,i,o]=r,s=n[i],a=s.attrs&&s.attrs[0];if(!a)return t(...r);let u=a[0];if(!u||!/[\d,-]+/.test(u))return t(...r);let l=u.split(",").map(h=>h.split("-").map(_=>parseInt(_,10))),c=o.highlight?o.highlight(s.content,s.info,""):s.content;return`<div class="highlight-lines">${c.replace(Vx,"").split(`
30
+ `),{code:r,lineOptions:i}}}function Ut(e,t,r){let n=new RegExp(`<${r??"w+"}[^>]*class="([\\w+-:;\\/* ]*)"`);return t=Array.isArray(t)?t:[t],e.replace(n,(i,o)=>i.replace(o,`${o} ${t}`))}function ld(e={}){let t=e.commonDiffClass??"diff",r=e.removedLinesClasses??["remove"],n=e.removedLinesClasses??["add"],i=e.removeLineTag??"--",o=e.addLineTag??"++",s=e.hasDiffClass??"has-diff";return{name:"diff",handler:Sr({[i]:[t,...r],[o]:[t,...n]},e),postProcess:({code:a})=>a.includes(t)?Ut(a,s,"pre"):a}}function fd(e={}){let t=e.hasFocusClass??"has-focus",r=e.hasFocusedLinesClass??"has-focused-lines",n=e.focusTag??"focus";return{name:"focus",handler:Sr({[n]:[t]},e),postProcess:({code:i})=>i.includes(t)?Ut(i,r,"pre"):i}}function pd(e={}){let t=e.hasHighlightClass??"has-highlight",r=e.hasHighlightedLinesClass??"has-highlighted-lines",n=e.highlightTag??"hl";return{name:"highlight",handler:Sr({[n]:[t]},e),postProcess:({code:i})=>i.includes(t)?Ut(i,r,"pre"):i}}function Nx(e,t,r){return e.reduce((n,i)=>{let{code:o,lineOptions:s}=i.handler?.({code:n.code,lang:r})??n;return{code:o,lineOptions:[...n.lineOptions,...s]}},{code:t,lineOptions:[]})}function qx(e,t,r){return e.reduce((n,i)=>i.postProcess?.({code:n,lang:r})??n,t)}async function dd(e={}){let t=await Lx(e),r=e.processors??[];return{...t,codeToHtml:(n,i)=>{let o=typeof i=="object"?i.lang:i,s=typeof i=="object"?i.lineOptions??[]:[],a=typeof i=="object"?i.theme:void 0,{code:u,lineOptions:l}=Nx(r,n,o),c=t.codeToHtml(u,{lang:o,theme:a,lineOptions:[...l,...s]});return qx(r,c,o)}}}var Bx=ad("abcdefghijklmnopqrstuvwxyz",10),jx=e=>{e=e.replace(/^(?:\[.*?\])?.*?([\d,-]+).*/,"$1").trim();let t=[];return e?(e.split(",").map(r=>r.split("-").map(n=>parseInt(n,10))).forEach(([r,n])=>{r&&n?t.push(...Array.from({length:n-r+1},(i,o)=>r+o)):t.push(r)}),t.map(r=>({line:r,classes:["highlighted"]}))):[]},Hx={name:"error-level",handler:Sr({error:["highlighted","error"],warning:["highlighted","warning"]})};async function hd(e="material-theme-palenight",t="txt"){let r=typeof e=="string"||"name"in e,n=p=>typeof p=="string"?p:p.name,i=[fd(),pd({hasHighlightClass:"highlighted"}),ld(),Hx],o=await dd({themes:r?[e]:[e.dark,e.light],processors:i}),s=/<pre[^>]*(style=".*?")/,a=/^<pre(.*?)>/,u=/-vue$/,l=/:(no-)?line-numbers$/,c=/\{\{.*?\}\}/g;return(p,f,y)=>{let h=u.test(f)?"":"v-pre";f=f.replace(l,"").replace(u,"").toLowerCase()||t,f&&(o.getLoadedLanguages().includes(f)||(f!==t&&console.warn(md.default.yellow(`The language '${f}' is not loaded, falling back to '${t}' for syntax highlighting.`)),f=t));let _=jx(y),E=L=>L.replace(a,(C,S)=>`<pre ${h}${S}>`).replace(s,(C,S)=>C.replace(S,"")),b=new Map,D=L=>h?L:L.replace(c,C=>{let S=b.get(C);return S||(S=Bx(),b.set(C,S)),S}),P=L=>(b.forEach((C,S)=>{L=L.replaceAll(C,S)}),L);if(r)return E(P(o.codeToHtml(D(p),{lang:f,lineOptions:_,theme:n(e)})));let V=Ut(E(o.codeToHtml(p,{lang:f,lineOptions:_,theme:n(e.dark)})),"va-code-dark","pre"),N=Ut(E(o.codeToHtml(p,{lang:f,lineOptions:_,theme:n(e.light)})),"va-code-light","pre");return V+N}}var Vx=/^<pre .*?><code>/,gd=e=>{let t=e.renderer.rules.fence;e.renderer.rules.fence=(...r)=>{let[n,i,o]=r,s=n[i],a=s.attrs&&s.attrs[0];if(!a)return t(...r);let u=a[0];if(!u||!/[\d,-]+/.test(u))return t(...r);let l=u.split(",").map(h=>h.split("-").map(_=>parseInt(_,10))),c=o.highlight?o.highlight(s.content,s.info,""):s.content;return`<div class="highlight-lines">${c.replace(Vx,"").split(`
31
31
  `).map((h,_)=>{let E=_+1;return l.some(([D,P])=>D&&P?E>=D&&E<=P:E===D)?'<div class="highlighted">&nbsp;</div>':"<br>"}).join("")}</div>`+c}},yd=e=>{let t=e.renderer.rules.fence;e.renderer.rules.fence=(...r)=>{let[n,i]=r,o=n[i],s=t(...r);return`<div class="language-${o.info.trim()}"><span class="copy"></span>${s}</div>`}};import{URL as Ux}from"url";var Gx=/(^|.*\/)index.md(#?.*)$/i,vd=(e,t,r)=>{e.renderer.rules.link_open=(o,s,a,u,l)=>{let c=o[s],p=c.attrIndex("href");if(p>=0){let f=c.attrs[p],y=f[1];jt.test(y)?(Object.entries(t).forEach(([_,E])=>{c.attrSet(_,E)}),f[1]=y.replace(Sp,"")):!y.startsWith("#")&&!y.startsWith("mailto:")&&!/\.(?!html|md)\w+($|\?)/i.test(y)&&n(f,u),f[1]=f[1].replace(/\bimport\.meta/g,"import%2Emeta").replace(/\bprocess\.env/g,"process%2Eenv")}return l.renderToken(o,s,a)};function n(o,s){let a=o[1],u=a.match(Gx);if(u){let[,l,c]=u;a=l+c}else{let l=a.replace(/[?#].*$/,"");l.endsWith(".md")&&(l=l.replace(/\.md$/,s.cleanUrls==="disabled"?".html":"")),s.cleanUrls==="disabled"&&!l.endsWith(".html")&&!l.endsWith("/")&&(l+=".html");let c=new Ux(a,"http://a.com");a=l+c.search+c.hash}!a.startsWith("/")&&!/^\.\//.test(a)&&(a=`./${a}`),i(a.replace(/\.html$/,""),s),a.startsWith("/")&&(a=`${r}${a}`.replace(/\/+/g,"/")),o[1]=decodeURI(a)}function i(o,s){(s.links||(s.links=[])).push(o)}};async function ks(e,t={},r=!1,n="/"){return e.use(gd).use(yd).use(nd,t.blocks).use(vd,{target:"_blank",rel:"noreferrer",...t.externalLinks},n),t.attrs?.disable||e.use(Yx,t.attrs),e.use(bs,t.katex),e.use(Kx),r||e.use(_d,{slugify:Mn,permalink:_d.permalink.ariaHidden({}),...t.anchor}),e.use(Wp).use(Yp,{...t.frontmatter}).use(Kp,{slugify:Mn,...t.headers}).use(Qp,{...t.sfc}).use(Xp).use(Zp,{slugify:Mn,...t.toc}),e.use(zx),t.config&&t.config(e),e}var Ed=async(e={})=>{let t=Wx({html:!0,linkify:!0,highlight:await hd(e.theme),...e.options});return await ks(t,e),t};import{resolve as Zx}from"path";import{existsSync as eb}from"fs";import tb from"jiti";import{presetAttributify as rb,presetIcons as nb,presetTypography as ib,presetUno as ob,transformerDirectives as sb,transformerVariantGroup as ab}from"unocss";var xd=Q(Ae(),1);import{resolve as Jx}from"path";import{isObject as Qx}from"@antfu/utils";import Xx from"jiti";function bd(e,t,r=""){return e={...e},Object.keys(t).forEach(n=>{Qx(e[n])?e[n]=bd(e[n],t[n],r?`${r}.${n}`:n):Array.isArray(e[n])?e[n]=[...e[n],...t[n]]:e[n]=t[n]}),e}async function Sd(e,t,r,n,i=!0){let o=n;for(let s of e){let a=Jx(s,"setup",t);if(xd.default.existsSync(a)){let{default:u}=Xx(__filename)(a),l=await u(r);l!==null&&(o=i?bd(o,l):l)}}return o}var ub=async e=>{let{config:t}=e,r=["i-ri-clipboard-line","i-ri-archive-line","i-ri-folder-2-line","i-ri-price-tag-3-line","i-ri-cloud-line"].concat(e.config.unocss?.safelist||[]),n="animate-fade-in m-auto text-left".split(" ").concat(["rotate-y-180"]).concat(r),i=t.siteConfig;i.social?.length&&i.social.forEach(s=>n.push(s?.icon||""));let o=i.sponsor?.methods||[];return o.length&&o.forEach(s=>n.push(s?.icon||"")),n},cb=async e=>{let{config:t}=e;return{shortcuts:[["btn","px-4 py-1 rounded inline-block bg-$va-c-primary text-white cursor-pointer transition hover:bg-$va-c-primary-light disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50"],["icon-btn","inline-flex justify-center items-center cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:opacity-100 hover:text-sky-600"],["va-card","shadow hover:shadow-lg"]],presets:[ob(t.unocssPresets?.uno),rb(t.unocssPresets?.attributify),nb({scale:1.2,...t.unocssPresets?.icons}),ib(t.unocssPresets?.typography)],rules:[["font-serif",{"font-family":"var(--va-font-serif)"}],["font-sans",{"font-family":"var(--va-font-sans)"}],["font-mono",{"font-family":"var(--va-font-mono)"}]],transformers:[sb(),ab()],safelist:await ub(e)}},Cd=async e=>{let t=await import("unocss/vite").then(f=>f.default),{unocss:r}=e.config,n=await cb(e),{themeRoot:i,clientRoot:o,roots:s}=e,a=["uno.config.ts","unocss.config.ts"],u=[];[i,o].forEach(f=>a.forEach(y=>u.push(Zx(f,y))));let c={},p=[];return u.forEach(f=>{if(eb(f)){let y=tb(__filename)(f);"default"in y&&(y=y.default),c=$e(c,y),p.push(f)}}),c=await Sd(s,"unocss.ts",{},c,!0),t({configDeps:p,configFile:!1,...$e(r||{},c,n)})};var Rd=Q(Ae(),1);import{dirname as mb,join as wd,resolve as xt}from"path";import{mergeConfig as hb,searchForWorkspaceRoot as Os}from"vite";import gb from"is-installed-globally";import{uniq as yb}from"@antfu/utils";var Cr=Q(Ae(),1);import{join as Fs,resolve as lb}from"path";import{uniq as fb}from"@antfu/utils";import{loadConfigFromFile as pb,mergeConfig as db}from"vite";async function In({userRoot:e,themeRoot:t},r){let n={mode:"development",command:r},i={},o=fb([t,e]).map(s=>Fs(s,"vite.config.ts"));for await(let s of o){if(!Cr.default.existsSync(s))continue;let a=await pb(n,s);!a?.config||(i=db(i,a.config))}return i}async function Ln({clientRoot:e,themeRoot:t,userRoot:r,config:n}){let i=lb(e,"template.html"),o=await Cr.default.readFile(i,"utf-8"),s="",a="";n.siteConfig.favicon&&(s+=`<link rel="icon" href="${n.siteConfig.favicon}">`);let u=[r,t];n.siteConfig.mode==="auto"&&(s+=`
32
32
  <script>
33
33
  (function () {
@@ -14,8 +14,8 @@ GFS4: `),console.error(e)});K[oe]||(na=global[oe]||[],oa(K,na),K.close=function(
14
14
  `)+r,i=n+1,n=e.indexOf(`
15
15
  `,i)}while(n!==-1);return o+=e.substr(i),o};Sm.exports={stringReplaceAll:GS,stringEncaseCRLFWithFirstIndex:WS}});var Fm=v((_F,km)=>{"use strict";var YS=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,wm=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,KS=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,zS=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,JS=new Map([["n",`
16
16
  `],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function Rm(e){let t=e[0]==="u",r=e[1]==="{";return t&&!r&&e.length===5||e[0]==="x"&&e.length===3?String.fromCharCode(parseInt(e.slice(1),16)):t&&r?String.fromCodePoint(parseInt(e.slice(2,-1),16)):JS.get(e)||e}function QS(e,t){let r=[],n=t.trim().split(/\s*,\s*/g),i;for(let o of n){let s=Number(o);if(!Number.isNaN(s))r.push(s);else if(i=o.match(KS))r.push(i[2].replace(zS,(a,u,l)=>u?Rm(u):l));else throw new Error(`Invalid Chalk template style argument: ${o} (in style '${e}')`)}return r}function XS(e){wm.lastIndex=0;let t=[],r;for(;(r=wm.exec(e))!==null;){let n=r[1];if(r[2]){let i=QS(n,r[2]);t.push([n].concat(i))}else t.push([n])}return t}function Am(e,t){let r={};for(let i of t)for(let o of i.styles)r[o[0]]=i.inverse?null:o.slice(1);let n=e;for(let[i,o]of Object.entries(r))if(!!Array.isArray(o)){if(!(i in n))throw new Error(`Unknown Chalk style: ${i}`);n=o.length>0?n[i](...o):n[i]}return n}km.exports=(e,t)=>{let r=[],n=[],i=[];if(t.replace(YS,(o,s,a,u,l,c)=>{if(s)i.push(Rm(s));else if(u){let p=i.join("");i=[],n.push(r.length===0?p:Am(e,r)(p)),r.push({inverse:a,styles:XS(u)})}else if(l){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");n.push(Am(e,r)(i.join(""))),i=[],r.pop()}else i.push(c)}),n.push(i.join("")),r.length>0){let o=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(o)}return n.join("")}});var Im=v((EF,Mm)=>{"use strict";var kr=ym(),{stdout:Us,stderr:Gs}=bm(),{stringReplaceAll:ZS,stringEncaseCRLFWithFirstIndex:eC}=Cm(),{isArray:Wn}=Array,Pm=["ansi","ansi","ansi256","ansi16m"],Xt=Object.create(null),tC=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Us?Us.level:0;e.level=t.level===void 0?r:t.level},Ws=class{constructor(t){return Tm(t)}},Tm=e=>{let t={};return tC(t,e),t.template=(...r)=>Dm(t.template,...r),Object.setPrototypeOf(t,Yn.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=Ws,t.template};function Yn(e){return Tm(e)}for(let[e,t]of Object.entries(kr))Xt[e]={get(){let r=Kn(this,Ys(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:r}),r}};Xt.visible={get(){let e=Kn(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};var $m=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let e of $m)Xt[e]={get(){let{level:t}=this;return function(...r){let n=Ys(kr.color[Pm[t]][e](...r),kr.color.close,this._styler);return Kn(this,n,this._isEmpty)}}};for(let e of $m){let t="bg"+e[0].toUpperCase()+e.slice(1);Xt[t]={get(){let{level:r}=this;return function(...n){let i=Ys(kr.bgColor[Pm[r]][e](...n),kr.bgColor.close,this._styler);return Kn(this,i,this._isEmpty)}}}}var rC=Object.defineProperties(()=>{},{...Xt,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),Ys=(e,t,r)=>{let n,i;return r===void 0?(n=e,i=t):(n=r.openAll+e,i=t+r.closeAll),{open:e,close:t,openAll:n,closeAll:i,parent:r}},Kn=(e,t,r)=>{let n=(...i)=>Wn(i[0])&&Wn(i[0].raw)?Om(n,Dm(n,...i)):Om(n,i.length===1?""+i[0]:i.join(" "));return Object.setPrototypeOf(n,rC),n._generator=e,n._styler=t,n._isEmpty=r,n},Om=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let r=e._styler;if(r===void 0)return t;let{openAll:n,closeAll:i}=r;if(t.indexOf("\x1B")!==-1)for(;r!==void 0;)t=ZS(t,r.close,r.open),r=r.parent;let o=t.indexOf(`
17
- `);return o!==-1&&(t=eC(t,i,n,o)),n+t+i},Vs,Dm=(e,...t)=>{let[r]=t;if(!Wn(r)||!Wn(r.raw))return t.join(" ");let n=t.slice(1),i=[r.raw[0]];for(let o=1;o<r.length;o++)i.push(String(n[o-1]).replace(/[{}\\]/g,"\\$&"),String(r.raw[o]));return Vs===void 0&&(Vs=Fm()),Vs(e,i.join(""))};Object.defineProperties(Yn.prototype,Xt);var zn=Yn();zn.supportsColor=Us;zn.stderr=Yn({level:Gs?Gs.level:0});zn.stderr.supportsColor=Gs;Mm.exports=zn});var er=Q(Ae(),1);var _path = require('path'); var _path2 = _interopRequireDefault(_path);var _child_process = require('child_process');var _yargs = require('yargs'); var _yargs2 = _interopRequireDefault(_yargs);var _vite = require('vite');var _open2 = require('open'); var _open3 = _interopRequireDefault(_open2);var _consola = require('consola'); var _consola2 = _interopRequireDefault(_consola);var _kolorist = require('kolorist');var _helpers = require('yargs/helpers');var Hr="0.14.0";var _net = require('net'); var _net2 = _interopRequireDefault(_net);async function gi(e){return await n1(e)?e:await gi(e+1)}function n1(e){return new Promise(t=>{let r=_net2.default.createServer(n=>{n.write(`Echo server\r
18
- `),n.pipe(n)});r.listen(e,"0.0.0.0"),r.on("error",()=>{t(!1)}),r.on("listening",()=>{r.close(),t(!0)})})}var jp=Q(Ae(),1),Hp=Q(Ei(),1),Vp=Q(bn(),1);var _utils = require('@antfu/utils');function ns(e){return e!==null&&typeof e=="object"}function is(e,t,r=".",n){if(!ns(t))return is(e,{},r,n);let i=Object.assign({},t);for(let o in e){if(o==="__proto__"||o==="constructor")continue;let s=e[o];s!=null&&(n&&n(i,o,s,r)||(Array.isArray(s)&&Array.isArray(i[o])?i[o]=s.concat(i[o]):ns(s)&&ns(i[o])?i[o]=is(s,i[o],(r?`${r}.`:"")+o.toString(),n):i[o]=s))}return i}function mr(e){return(...t)=>t.reduce((r,n)=>is(r,n,"",e),{})}var $e=mr(),kw=mr((e,t,r,n)=>{if(typeof e[t]<"u"&&typeof r=="function")return e[t]=r(e[t]),!0}),Fw=mr((e,t,r,n)=>{if(Array.isArray(e[t])&&typeof r=="function")return e[t]=r(e[t]),!0});var os=()=>process.env.NODE_ENV==="production",ss=(e="development")=>{process.env.NODE_ENV=e,we.level=os()?2:3},hr=()=>ss("production");var we=_consola2.default.create({level:os()?2:3});var Tp=Q(bp(),1);var _isinstalledglobally = require('is-installed-globally'); var _isinstalledglobally2 = _interopRequireDefault(_isinstalledglobally);var _globaldirs = require('global-dirs'); var _globaldirs2 = _interopRequireDefault(_globaldirs);var _crossspawn = require('cross-spawn');function _r(e,t="updated"){return new Promise((r,n)=>{let i=["log"];t==="updated"&&i.push("-1"),i.push('--pretty="%ci"',e),t==="created"&&i.push("|","tail","-1");let o=_crossspawn.spawn.call(void 0, "git",i),s="";o.stdout.on("data",a=>s+=String(a)),o.on("close",()=>{r(+new Date(s))}),o.on("error",()=>{r(0)})})}var An="<!-- more -->",jt=/^https?:/i,Sp=/^pathname:\/\//;function Cp(e){return jt.test(e)}function it(e){return e.replace(/\\/g,"/")}function hs(e,t){return t.startsWith(e)?t:e+t}function te(e){return`/@fs${hs("/",it(e))}`}function wp(e){return e.startsWith("/")||/^\.\.?[\/\\]/.test(e)}var _unconfig = require('unconfig');async function vt(e,t={}){let{config:r,sources:n}=await await _unconfig.loadConfig.call(void 0, {sources:{files:e,rewrite:t.rewrite},cwd:t.cwd||process.cwd()}),i=_vite.normalizePath.call(void 0, n[0]||"");return{config:r,configFile:i}}var Ht=mr((e,t,r)=>{if(_utils.isFunction.call(void 0, e[t])&&_utils.isFunction.call(void 0, r)&&(e[t]=function(...n){e[t].call(this,...n),r.call(this,...n)}),t==="vite")return e[t]=_vite.mergeConfig.call(void 0, e[t],r),!0});async function gs(e,t){return vt("valaxy.config",{rewrite(r){return typeof r=="function"?r(t||{}):r},cwd:e})}async function Rp(e){let{config:t,configFile:r}=await gs(e.userRoot||process.cwd());t&&we.info(`Resolve ${_kolorist.cyan.call(void 0, "valaxyConfig")} from ${_kolorist.dim.call(void 0, r)}`);let n=e.theme||t.theme||"yun";return{config:t,configFile:r,theme:n}}async function kp(e,t){let r={};for(let n of e){let{config:i,configFile:o}=await vt("index",{rewrite(s,a){return typeof s=="function"?s(n,t):s},cwd:n.root});!i||(n.configFile=o,r=Ht(i,r))}return r}var $p=e=>`JSON.parse(${JSON.stringify(JSON.stringify(e))})`;function Ge(e,t=!1,r={preserveSymlinks:!1}){try{return(0,Tp.sync)(e,r)}catch(n){_consola2.default.log(n)}if(_isinstalledglobally2.default){try{return I.resolve(_path.join.call(void 0, _globaldirs2.default.yarn.packages,e))}catch (e21){}try{return I.resolve(_path.join.call(void 0, _globaldirs2.default.npm.packages,e))}catch (e22){}}if(t)throw new Error(`Failed to resolve package ${e}`);_consola2.default.error(`Failed to resolve package ${e}`)}function RE(e){return e}var bA=RE;function kE(e){return e}var SA=kE;function wA(e){return e}function FE(e){return e}var AA=FE,ys= exports.t ={mode:"auto",url:"/",lang:"en",title:"Valaxy Blog",description:"A blog generated by Valaxy.",subtitle:"Next Generation Static Blog Framework.",author:{avatar:"https://www.yunyoujun.cn/images/avatar.jpg",email:"i@valaxy.site",link:"https://valaxy.site",name:"VALAXY Developer",status:{emoji:"\u{1F30C}",message:"The moonlight is beautiful."}},favicon:"/favicon.svg",feed:{name:"",favicon:"/favicon.svg"},social:[],date:{format:""},lastUpdated:!0,license:{enabled:!0,language:"",type:"by-nc-sa"},sponsor:{enable:!0,title:"\u8D5E\u52A9",methods:[]},search:{enable:!1,type:"fuse"},comment:{enable:!1},cdn:{prefix:"https://unpkg.com/"}},Dp= exports.u ={ignoreDeadLinks:!0,siteConfig:ys,theme:"yun",themeConfig:{pkg:{name:"",version:""}},runtimeConfig:{addons:{}},features:{katex:!0},vite:{build:{rollupOptions:{external:[]}}}};function RA(e){return e}var vs=Q(Ae(),1);var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);function Rn(e,t){if(!e)return"";if(wp(e))if(t){let r=_fs2.default.lstatSync(t).isFile();return _path.resolve.call(void 0, r?_path.dirname.call(void 0, t):t,e)}else throw new Error(`entry is required when ${e} is path`);else return _path.dirname.call(void 0, Ge(`${e}/package.json`)||"")}async function Lp(e,t=process.cwd()){let r={},n=o=>{o&&(r[o.name]=$e(r[o.name]||{},o))};if(Array.isArray(e))for(let o of e){if(typeof o=="string"){n(await Ip(o,{cwd:t}));continue}typeof o=="object"&&n($e(await Ip(o.name,{cwd:t}),o||{}))}let i=Object.values(r).filter(o=>o.enable);return we.info(`Resolve ${_kolorist.cyan.call(void 0, "addons:")} ${_kolorist.yellow.call(void 0, i.map(o=>o.name).join(", "))}`),i}async function Ip(e,t={}){let r=ME(e,t.cwd||process.cwd()),n=_path.resolve.call(void 0, r,"./package.json");if(!vs.default.existsSync(n)){we.error(`No addon named ${e} found`);return}let i=await vs.default.readJSON(n);return{enable:!0,name:i.name,global:!!i.global,root:r,options:{},props:{}}}function ME(e,t){let r=e.startsWith("valaxy-addon")||e.startsWith(".")?e:`valaxy-addon-${e}`;return Rn(r,t)}function Np(e,t){let r=e.startsWith("valaxy-theme")||e.startsWith(".")?e:`valaxy-theme-${e}`;return Rn(r,t)}async function NE(e){return vt("site.config",{cwd:e})}async function kn(e){let{config:t,configFile:r}=await NE(e);return t&&we.info(`Resolve ${_kolorist.cyan.call(void 0, "siteConfig")} from ${_kolorist.dim.call(void 0, r)}`),{siteConfig:t,siteConfigFile:r}}async function jE(e){return vt("theme.config",{cwd:e})}async function qp(e){let{config:t,configFile:r}=await jE(e);return t&&we.info(`Resolve ${_kolorist.cyan.call(void 0, "themeConfig")} from ${_kolorist.dim.call(void 0, r)}`),{themeConfig:t,themeConfigFile:r}}var WE=(0,Hp.default)("valaxy:options");async function YE(e){let{config:t,themeRoot:r,theme:n}=e,i=t.siteConfig;i.url=_utils.ensureSuffix.call(void 0, "/",i.url||""),i.cdn.prefix=_utils.ensureSuffix.call(void 0, "/",i.cdn.prefix||"");let o=_path.resolve.call(void 0, r,"package.json");try{t.themeConfig.pkg=await jp.default.readJson(o,"utf-8")}catch (e23){console.error(`valaxy-theme-${n} doesn't have package.json`)}}async function _s(e,t){let{clientRoot:r,themeRoot:n,userRoot:i}=e,o=await Lp(t.addons||[],e.userRoot),s=await kp(o,e);t=Ht(t,s);let a=$e(t,Dp);e.config={...a,runtimeConfig:{addons:{}}},e.addons=o,o.forEach(p=>{e.config.runtimeConfig.addons[p.name]=p});let u=o.map(({root:p})=>p),l=o.map(({name:p})=>p);e.addonRoots=u,e.roots=_utils.uniq.call(void 0, [r,n,...u,i]);let c=_optionalChain([e, 'access', _3 => _3.config, 'access', _4 => _4.vite, 'optionalAccess', _5 => _5.build, 'optionalAccess', _6 => _6.rollupOptions, 'optionalAccess', _7 => _7.external])||[];return e.config.vite.build.rollupOptions.external=c.filter(p=>!l.includes(p)),await YE(e),e}async function De(e={userRoot:process.cwd()},t="dev"){let r=_path.dirname.call(void 0, Ge("valaxy/package.json",!0)),n=_path.resolve.call(void 0, r,"client"),i=_path.resolve.call(void 0, e.userRoot||process.cwd()),{config:o,configFile:s,theme:a}=await Rp(e),{siteConfig:u,siteConfigFile:l}=await kn(e.userRoot),{themeConfig:c,themeConfigFile:p}=await qp(e.userRoot);o=$e({siteConfig:u},{themeConfig:c},o);let f=Np(a,e.userRoot),y=(await(0,Vp.default)(["**.md"],{cwd:_path.resolve.call(void 0, i,"pages"),ignore:["**/node_modules"]})).sort(),h={mode:t,pkgRoot:r,clientRoot:n,userRoot:i,themeRoot:f,addonRoots:[],roots:[],theme:a,config:{...o,runtimeConfig:{addons:{}}},configFile:s||"",siteConfigFile:l||"",themeConfigFile:p||"",pages:y,addons:[]};WE(h);let _=await Es(h),E=Ht(o,_);return h=await _s(h,E),h}async function Es(e){we.info(`Resolve ${_kolorist.cyan.call(void 0, "valaxy.config.ts")} from ${_kolorist.yellow.call(void 0, `theme(${e.theme})`)}`);let{config:t}=await gs(e.themeRoot,e);return t}var _readline = require('readline'); var Gd = _interopRequireWildcard(_readline);var _os = require('os'); var _os2 = _interopRequireDefault(_os);var _markdownit = require('markdown-it'); var _markdownit2 = _interopRequireDefault(_markdownit);var _graymatter = require('gray-matter'); var _graymatter2 = _interopRequireDefault(_graymatter);var _pluginvue = require('@vitejs/plugin-vue'); var _pluginvue2 = _interopRequireDefault(_pluginvue);var _vitepluginpages = require('vite-plugin-pages'); var _vitepluginpages2 = _interopRequireDefault(_vitepluginpages);var _vitepluginvuelayouts = require('vite-plugin-vue-layouts'); var _vitepluginvuelayouts2 = _interopRequireDefault(_vitepluginvuelayouts);var _vite3 = require('unplugin-vue-components/vite'); var _vite4 = _interopRequireDefault(_vite3);var _vite5 = require('@intlify/unplugin-vue-i18n/vite'); var _vite6 = _interopRequireDefault(_vite5);var _dayjs = require('dayjs'); var _dayjs2 = _interopRequireDefault(_dayjs);var _htmltotext = require('html-to-text');var _markdownitanchor = require('markdown-it-anchor'); var _markdownitanchor2 = _interopRequireDefault(_markdownitanchor);var _markdownitattrs = require('markdown-it-attrs'); var _markdownitattrs2 = _interopRequireDefault(_markdownitattrs);var _markdownitemoji = require('markdown-it-emoji'); var _markdownitemoji2 = _interopRequireDefault(_markdownitemoji);var _markdownittasklists = require('markdown-it-task-lists'); var _markdownittasklists2 = _interopRequireDefault(_markdownittasklists);var _html_blocksjs = require('markdown-it/lib/common/html_blocks.js'); var _html_blocksjs2 = _interopRequireDefault(_html_blocksjs);var zE="[a-zA-Z_:@][a-zA-Z0-9:._-]*",JE="[^\"'=<>`\\x00-\\x20]+",QE="'[^']*'",XE='"[^"]*"',ZE="(?:"+JE+"|"+QE+"|"+XE+")",xs="(?:\\s+"+zE+"(?:\\s*=\\s*"+ZE+")?)",Up="<[A-Za-z][A-Za-z0-9\\-]*"+xs+"*\\s*\\/?>",Gp="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",ex="<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->",tx="<[?][\\s\\S]*?[?]>",rx="<![A-Z]+\\s+[^>]*>",nx="<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",ix=new RegExp("^(?:"+Up+"|"+Gp+"|"+ex+"|"+tx+"|"+rx+"|"+nx+")"),ox=new RegExp("^(?:"+Up+"|"+Gp+")"),sx=new RegExp("^<[A-Za-z][A-Za-z0-9\\-]*"+xs+"*\\s*\\/>"),ax=new RegExp("^<([A-Za-z][A-Za-z0-9\\-]*)"+xs+"*\\s*>.*<\\/\\1\\s*>"),ux=_html_blocksjs2.default,cx=["a","abbr","acronym","audio","b","bdi","bdo","big","br","button","canvas","cite","code","data","datalist","del","dfn","em","embed","i","iframe","img","input","ins","kbd","label","map","mark","meter","noscript","object","output","picture","progress","q","ruby","s","samp","script","select","slot","small","span","strong","sub","sup","svg","template","textarea","time","u","tt","var","video","wbr"],lx=["template","component","transition","transition-group","keep-alive","slot","teleport"],fx=({blockTags:e,inlineTags:t})=>{let r=[...e,...ux],n=[...t,...cx.filter(o=>!lx.includes(o))];return[[/^<(script|pre|style)(?=(\s|>|$))/i,/<\/(script|pre|style)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+r.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp("^</?(?!("+n.join("|")+")(?![\\w-]))[A-Za-z][A-Za-z0-9\\-]*(?=(\\s|/?>|$))"),/^$/,!0],[new RegExp(ox.source+"\\s*$"),/^$/,!1]]},px=e=>{let t=fx(e);return(r,n,i,o)=>{let s,a,u,l=r.bMarks[n]+r.tShift[n],c=r.eMarks[n];if(r.sCount[n]-r.blkIndent>=4||!r.md.options.html||r.src.charCodeAt(l)!==60)return!1;for(u=r.src.slice(l,c),s=0;s<t.length&&!t[s][0].test(u);s++);if(s===t.length)return!1;if(o)return t[s][2];if(s===6){let f=_nullishCoalesce(u.match(sx), () => (u.match(ax)));if(f){r.line=n+1;let y=r.push("html_inline","",0);return y.content=f[0],y.map=[n,r.line],y=r.push("inline","",0),y.content=u.slice(f[0].length),y.map=[n,r.line],y.children=[],!0}}if(a=n+1,!t[s][1].test(u)){for(;a<i&&!(r.sCount[a]<r.blkIndent);a++)if(l=r.bMarks[a]+r.tShift[a],c=r.eMarks[a],u=r.src.slice(l,c),t[s][1].test(u)){u.length!==0&&a++;break}}r.line=a;let p=r.push("html_block","",0);return p.map=[n,a],p.content=r.getLines(n,a,r.blkIndent,!0),!0}},dx=e=>{let t=e|32;return t>=97&&t<=122},mx=(e,t)=>{let{pos:r}=e;if(!e.md.options.html)return!1;let n=e.posMax;if(e.src.charCodeAt(r)!==60||r+2>=n)return!1;let i=e.src.charCodeAt(r+1);if(i!==33&&i!==63&&i!==47&&!dx(i))return!1;let o=e.src.slice(r).match(ix);if(!o)return!1;if(!t){let s=e.push("html_inline","",0);s.content=e.src.slice(r,r+o[0].length)}return e.pos+=o[0].length,!0},Wp=(e,{blockTags:t=[],inlineTags:r=[]}={})=>{let n=px({blockTags:t,inlineTags:r});e.block.ruler.at("html_block",n,{alt:["paragraph","reference","blockquote"]}),e.inline.ruler.at("html_inline",mx)};var Yp=(e,{grayMatterOptions:t,renderExcerpt:r=!0}={})=>{let n=e.render.bind(e);e.render=(i,o={})=>{let{data:s,content:a,excerpt:u=""}=_graymatter2.default.call(void 0, i,t);return o.content=a,o.frontmatter={...o.frontmatter,...s},o.excerpt=r&&u?n(u,{...o}):u,n(a,o)}};var gx={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},yx=/[&<>'"]/g,_t=e=>e.replace(yx,t=>gx[t]);var Er=(e,{shouldAllowHtml:t,shouldEscapeText:r})=>{let n=_nullishCoalesce(e.children, () => ([])),i=["text","emoji","code_inline"];return t&&i.push("html_inline"),n.filter(s=>i.includes(s.type)&&!_optionalChain([s, 'access', _8 => _8.meta, 'optionalAccess', _9 => _9.isPermalinkSymbol])).reduce((s,a)=>r&&(a.type==="code_inline"||a.type==="text")?`${s}${_t(a.content)}`:`${s}${a.content}`,"").trim()},On=(e,{level:t,shouldAllowHtml:r,shouldEscapeText:n,slugify:i,format:o})=>{let s=[],a=[],u=l=>{for(;a.length!==0&&l.level<=a[0].level;)a.shift();a.length===0?(s.push(l),a.push(l)):(a[0].children.push(l),a.unshift(l))};for(let l=0;l<e.length;l+=1){let c=e[l];if(_optionalChain([c, 'optionalAccess', _10 => _10.type])!=="heading_open"||_optionalChain([c, 'optionalAccess', _11 => _11.level])!==0)continue;let p=Number.parseInt(c.tag.slice(1),10);if(!t.includes(p))continue;let f=e[l+1];if(!f)continue;let y=Er(f,{shouldAllowHtml:r,shouldEscapeText:n}),h=_nullishCoalesce(c.attrGet("id"), () => (i(y)));u({level:p,title:_nullishCoalesce(_optionalChain([o, 'optionalCall', _12 => _12(y)]), () => (y)),slug:h,link:`#${h}`,children:[]})}return s},vx=/[\u0000-\u001f]/g,_x=/[\s~`!@#$%^&*()\-_+=[\]{}|\\;:"'“”‘’<>,.?/]+/g,Ex=/[\u0300-\u036F]/g,Pn=e=>e.normalize("NFKD").replace(Ex,"").replace(vx,"").replace(_x,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"").replace(/^(\d)/,"_$1").toLowerCase();var Kp=(e,{level:t=[2,3],slugify:r=Pn,format:n}={})=>{let i=e.renderer.render.bind(e.renderer);e.renderer.render=(o,s,a)=>(a.headers=On(o,{level:t,shouldAllowHtml:!1,shouldEscapeText:!1,slugify:r,format:n}),i(o,s,a))};var zp="script",Jp="style",xr="template",xx=/^<script\s+.*?\bsetup\b.*?>$/is,bx=({customBlocks:e})=>{let t=Array.from(new Set([zp,Jp,...e])).join("|");return new RegExp(`^\\s*(?<content>(?<tagOpen><(?<type>${t})\\s?.*?>)(?<contentStripped>.*)(?<tagClose><\\/\\k<type>\\s*>))\\s*$`,"is")},Qp=(e,{customBlocks:t=[]}={})=>{let r=bx({customBlocks:t}),n=e.render.bind(e);e.render=(o,s={})=>{s.sfcBlocks={template:null,script:null,scriptSetup:null,scripts:[],styles:[],customBlocks:[]};let a=n(o,s);return s.sfcBlocks.template={type:xr,content:`<${xr}>${a}</${xr}>`,contentStripped:a,tagOpen:`<${xr}>`,tagClose:`</${xr}>`},a};let i=e.renderer.rules.html_block;e.renderer.rules.html_block=(o,s,a,u,l)=>{if(!u.sfcBlocks)return i(o,s,a,u,l);let f=o[s].content.match(r);if(!f)return i(o,s,a,u,l);let y=f.groups;return y.type===zp?(u.sfcBlocks.scripts.push(y),xx.test(y.tagOpen)?u.sfcBlocks.scriptSetup=y:u.sfcBlocks.script=y):y.type===Jp?u.sfcBlocks.styles.push(y):u.sfcBlocks.customBlocks.push(y),""}};var Xp=e=>{let t=e.renderer.render.bind(e.renderer);e.renderer.render=(r,n,i)=>{let o=r.findIndex(s=>s.tag==="h1");return i.title=o>-1?Er(r[o+1],{shouldAllowHtml:!1,shouldEscapeText:!1}):"",t(r,n,i)}};var Sx=({listTag:e,listClass:t,itemClass:r,linkTag:n,linkClass:i})=>{let o=_t(e),s=t?` class="${_t(t)}"`:"",a="li",u=r?` class="${_t(r)}"`:"",l=_t(n),c=i?` class="${_t(i)}"`:"",p=y=>n==="router-link"?` to="${y}"`:` href="${y}"`,f=y=>`<${o}${s}>${y.map(h=>`<${a}${u}${u}><${l}${c}${p(h.link)}>${h.title}</${l}>${h.children.length>0?f(h.children):""}</${a}>`).join("")}</${o}>`;return f},Cx=({pattern:e,containerTag:t,containerClass:r})=>(n,i,o,s)=>{if(n.sCount[i]-n.blkIndent>=4)return!1;let a=n.bMarks[i]+n.tShift[i],u=n.eMarks[i],l=n.src.slice(a,u).split(" ")[0];if(!e.test(l))return!1;if(s)return!0;n.line=i+1;let c=n.push("toc_open",t,1);c.markup="",c.map=[i,n.line],r&&c.attrSet("class",r);let p=n.push("toc_body","",0);p.markup=l,p.map=[i,n.line],p.hidden=!0;let f=n.push("toc_close",t,-1);return f.markup="",p.map=[i,n.line],!0},Zp=(e,{pattern:t=/^\[\[toc\]\]$/i,slugify:r=Pn,format:n,level:i=[2,3],containerTag:o="nav",containerClass:s="table-of-contents",listTag:a="ul",listClass:u="",itemClass:l="",linkTag:c="a",linkClass:p=""}={})=>{e.block.ruler.before("heading","toc",Cx({pattern:t,containerTag:o,containerClass:s}),{alt:["paragraph","reference","blockquote"]});let f=Sx({listTag:a,listClass:u,itemClass:l,linkTag:c,linkClass:p});e.renderer.rules.toc_body=y=>f(On(y,{level:i,shouldAllowHtml:!0,shouldEscapeText:!0,slugify:r,format:n}))};var _katex = require('katex'); var _katex2 = _interopRequireDefault(_katex);function td(e,t){let r=e.posMax,n=!0,i=!0,o=t>0?e.src.charCodeAt(t-1):-1,s=t+1<=r?e.src.charCodeAt(t+1):-1;return(o===32||o===9||s>=48&&s<=57)&&(i=!1),(s===32||s===9)&&(n=!1),{can_open:n,can_close:i}}function wx(e,t){let r,n,i,o;if(e.src[e.pos]!=="$")return!1;if(i=td(e,e.pos),!i.can_open)return t||(e.pending+="$"),e.pos+=1,!0;let s=e.pos+1;for(r=s;(r=e.src.indexOf("$",r))!==-1;){for(o=r-1;e.src[o]==="\\";)o-=1;if((r-o)%2===1)break;r+=1}return r===-1?(t||(e.pending+="$"),e.pos=s,!0):r-s===0?(t||(e.pending+="$$"),e.pos=s+1,!0):(i=td(e,r),i.can_close?(t||(n=e.push("math_inline","math",0),n.markup="$",n.content=e.src.slice(s,r)),e.pos=r+1,!0):(t||(e.pending+="$"),e.pos=s,!0))}function Ax(e,t,r,n){let i,o,s,a,u=!1,l=e.bMarks[t]+e.tShift[t],c=e.eMarks[t];if(l+2>c||e.src.slice(l,l+2)!=="$$")return!1;if(l+=2,i=e.src.slice(l,c),n)return!0;for(i.trim().slice(-2)==="$$"&&(i=i.trim().slice(0,-2),u=!0),s=t;!u&&(s++,!(s>=r||(l=e.bMarks[s]+e.tShift[s],c=e.eMarks[s],l<c&&e.tShift[s]<e.blkIndent)));)e.src.slice(l,c).trim().slice(-2)==="$$"&&(a=e.src.slice(0,c).lastIndexOf("$$"),o=e.src.slice(l,a),u=!0);e.line=s+1;let p=e.push("math_block","math",0);return p.block=!0,p.content=(i&&i.trim()?`${i}
17
+ `);return o!==-1&&(t=eC(t,i,n,o)),n+t+i},Vs,Dm=(e,...t)=>{let[r]=t;if(!Wn(r)||!Wn(r.raw))return t.join(" ");let n=t.slice(1),i=[r.raw[0]];for(let o=1;o<r.length;o++)i.push(String(n[o-1]).replace(/[{}\\]/g,"\\$&"),String(r.raw[o]));return Vs===void 0&&(Vs=Fm()),Vs(e,i.join(""))};Object.defineProperties(Yn.prototype,Xt);var zn=Yn();zn.supportsColor=Us;zn.stderr=Yn({level:Gs?Gs.level:0});zn.stderr.supportsColor=Gs;Mm.exports=zn});var er=Q(Ae(),1);var _path = require('path'); var _path2 = _interopRequireDefault(_path);var _child_process = require('child_process');var _yargs = require('yargs'); var _yargs2 = _interopRequireDefault(_yargs);var _vite = require('vite');var _open2 = require('open'); var _open3 = _interopRequireDefault(_open2);var _consola = require('consola'); var _consola2 = _interopRequireDefault(_consola);var _kolorist = require('kolorist');var _helpers = require('yargs/helpers');var Hr="0.14.2";var _net = require('net'); var _net2 = _interopRequireDefault(_net);async function gi(e){return await n1(e)?e:await gi(e+1)}function n1(e){return new Promise(t=>{let r=_net2.default.createServer(n=>{n.write(`Echo server\r
18
+ `),n.pipe(n)});r.listen(e,"0.0.0.0"),r.on("error",()=>{t(!1)}),r.on("listening",()=>{r.close(),t(!0)})})}var jp=Q(Ae(),1),Hp=Q(Ei(),1),Vp=Q(bn(),1);var _utils = require('@antfu/utils');function ns(e){return e!==null&&typeof e=="object"}function is(e,t,r=".",n){if(!ns(t))return is(e,{},r,n);let i=Object.assign({},t);for(let o in e){if(o==="__proto__"||o==="constructor")continue;let s=e[o];s!=null&&(n&&n(i,o,s,r)||(Array.isArray(s)&&Array.isArray(i[o])?i[o]=s.concat(i[o]):ns(s)&&ns(i[o])?i[o]=is(s,i[o],(r?`${r}.`:"")+o.toString(),n):i[o]=s))}return i}function mr(e){return(...t)=>t.reduce((r,n)=>is(r,n,"",e),{})}var $e=mr(),kw=mr((e,t,r,n)=>{if(typeof e[t]<"u"&&typeof r=="function")return e[t]=r(e[t]),!0}),Fw=mr((e,t,r,n)=>{if(Array.isArray(e[t])&&typeof r=="function")return e[t]=r(e[t]),!0});var os=()=>process.env.NODE_ENV==="production",ss=(e="development")=>{process.env.NODE_ENV=e,we.level=os()?2:3},hr=()=>ss("production");var we=_consola2.default.create({level:os()?2:3});var Tp=Q(bp(),1);var _isinstalledglobally = require('is-installed-globally'); var _isinstalledglobally2 = _interopRequireDefault(_isinstalledglobally);var _globaldirs = require('global-dirs'); var _globaldirs2 = _interopRequireDefault(_globaldirs);var _crossspawn = require('cross-spawn');function _r(e,t="updated"){return new Promise((r,n)=>{let i=["log"];t==="updated"&&i.push("-1"),i.push('--pretty="%ci"',e),t==="created"&&i.push("|","tail","-1");let o=_crossspawn.spawn.call(void 0, "git",i),s="";o.stdout.on("data",a=>s+=String(a)),o.on("close",()=>{r(+new Date(s))}),o.on("error",()=>{r(0)})})}var An="<!-- more -->",jt=/^https?:/i,Sp=/^pathname:\/\//;function Cp(e){return jt.test(e)}function it(e){return e.replace(/\\/g,"/")}function hs(e,t){return t.startsWith(e)?t:e+t}function te(e){return`/@fs${hs("/",it(e))}`}function wp(e){return e.startsWith("/")||/^\.\.?[\/\\]/.test(e)}var _unconfig = require('unconfig');async function vt(e,t={}){let{config:r,sources:n}=await await _unconfig.loadConfig.call(void 0, {sources:{files:e,rewrite:t.rewrite},cwd:t.cwd||process.cwd()}),i=_vite.normalizePath.call(void 0, n[0]||"");return{config:r,configFile:i}}var Ht=mr((e,t,r)=>{if(_utils.isFunction.call(void 0, e[t])&&_utils.isFunction.call(void 0, r)&&(e[t]=function(...n){e[t].call(this,...n),r.call(this,...n)}),t==="vite")return e[t]=_vite.mergeConfig.call(void 0, e[t],r),!0});async function gs(e,t){return vt("valaxy.config",{rewrite(r){return typeof r=="function"?r(t||{}):r},cwd:e})}async function Rp(e){let{config:t,configFile:r}=await gs(e.userRoot||process.cwd());t&&we.info(`Resolve ${_kolorist.cyan.call(void 0, "valaxyConfig")} from ${_kolorist.dim.call(void 0, r)}`);let n=e.theme||t.theme||"yun";return{config:t,configFile:r,theme:n}}async function kp(e,t){let r={};for(let n of e){let{config:i,configFile:o}=await vt("index",{rewrite(s,a){return typeof s=="function"?s(n,t):s},cwd:n.root});!i||(n.configFile=o,r=Ht(i,r))}return r}var $p=e=>`JSON.parse(${JSON.stringify(JSON.stringify(e))})`;function Ge(e,t=!1,r={preserveSymlinks:!1}){try{return(0,Tp.sync)(e,r)}catch(n){_consola2.default.log(n)}if(_isinstalledglobally2.default){try{return I.resolve(_path.join.call(void 0, _globaldirs2.default.yarn.packages,e))}catch (e21){}try{return I.resolve(_path.join.call(void 0, _globaldirs2.default.npm.packages,e))}catch (e22){}}if(t)throw new Error(`Failed to resolve package ${e}`);_consola2.default.error(`Failed to resolve package ${e}`)}function RE(e){return e}var bA=RE;function kE(e){return e}var SA=kE;function wA(e){return e}function FE(e){return e}var AA=FE,ys= exports.t ={mode:"auto",url:"/",lang:"en",title:"Valaxy Blog",description:"A blog generated by Valaxy.",subtitle:"Next Generation Static Blog Framework.",author:{avatar:"https://www.yunyoujun.cn/images/avatar.jpg",email:"i@valaxy.site",link:"https://valaxy.site",name:"VALAXY Developer",status:{emoji:"\u{1F30C}",message:"The moonlight is beautiful."}},favicon:"/favicon.svg",feed:{name:"",favicon:"/favicon.svg"},social:[],date:{format:""},lastUpdated:!0,license:{enabled:!0,language:"",type:"by-nc-sa"},sponsor:{enable:!0,title:"\u8D5E\u52A9",methods:[]},search:{enable:!1,type:"fuse"},comment:{enable:!1},cdn:{prefix:"https://unpkg.com/"},mediumZoom:{enable:!1,selector:"",options:{}}},Dp= exports.u ={ignoreDeadLinks:!0,siteConfig:ys,theme:"yun",themeConfig:{pkg:{name:"",version:""}},runtimeConfig:{addons:{}},features:{katex:!0},vite:{build:{rollupOptions:{external:[]}}}};function RA(e){return e}var vs=Q(Ae(),1);var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);function Rn(e,t){if(!e)return"";if(wp(e))if(t){let r=_fs2.default.lstatSync(t).isFile();return _path.resolve.call(void 0, r?_path.dirname.call(void 0, t):t,e)}else throw new Error(`entry is required when ${e} is path`);else return _path.dirname.call(void 0, Ge(`${e}/package.json`)||"")}async function Lp(e,t=process.cwd()){let r={},n=o=>{o&&(r[o.name]=$e(r[o.name]||{},o))};if(Array.isArray(e))for(let o of e){if(typeof o=="string"){n(await Ip(o,{cwd:t}));continue}typeof o=="object"&&n($e(await Ip(o.name,{cwd:t}),o||{}))}let i=Object.values(r).filter(o=>o.enable);return we.info(`Resolve ${_kolorist.cyan.call(void 0, "addons:")} ${_kolorist.yellow.call(void 0, i.map(o=>o.name).join(", "))}`),i}async function Ip(e,t={}){let r=ME(e,t.cwd||process.cwd()),n=_path.resolve.call(void 0, r,"./package.json");if(!vs.default.existsSync(n)){we.error(`No addon named ${e} found`);return}let i=await vs.default.readJSON(n);return{enable:!0,name:i.name,global:!!i.global,root:r,options:{},props:{}}}function ME(e,t){let r=e.startsWith("valaxy-addon")||e.startsWith(".")?e:`valaxy-addon-${e}`;return Rn(r,t)}function Np(e,t){let r=e.startsWith("valaxy-theme")||e.startsWith(".")?e:`valaxy-theme-${e}`;return Rn(r,t)}async function NE(e){return vt("site.config",{cwd:e})}async function kn(e){let{config:t,configFile:r}=await NE(e);return t&&we.info(`Resolve ${_kolorist.cyan.call(void 0, "siteConfig")} from ${_kolorist.dim.call(void 0, r)}`),{siteConfig:t,siteConfigFile:r}}async function jE(e){return vt("theme.config",{cwd:e})}async function qp(e){let{config:t,configFile:r}=await jE(e);return t&&we.info(`Resolve ${_kolorist.cyan.call(void 0, "themeConfig")} from ${_kolorist.dim.call(void 0, r)}`),{themeConfig:t,themeConfigFile:r}}var WE=(0,Hp.default)("valaxy:options");async function YE(e){let{config:t,themeRoot:r,theme:n}=e,i=t.siteConfig;i.url=_utils.ensureSuffix.call(void 0, "/",i.url||""),i.cdn.prefix=_utils.ensureSuffix.call(void 0, "/",i.cdn.prefix||"");let o=_path.resolve.call(void 0, r,"package.json");try{t.themeConfig.pkg=await jp.default.readJson(o,"utf-8")}catch (e23){console.error(`valaxy-theme-${n} doesn't have package.json`)}}async function _s(e,t){let{clientRoot:r,themeRoot:n,userRoot:i}=e,o=await Lp(t.addons||[],e.userRoot),s=await kp(o,e);t=Ht(t,s);let a=$e(t,Dp);e.config={...a,runtimeConfig:{addons:{}}},e.addons=o,o.forEach(p=>{e.config.runtimeConfig.addons[p.name]=p});let u=o.map(({root:p})=>p),l=o.map(({name:p})=>p);e.addonRoots=u,e.roots=_utils.uniq.call(void 0, [r,n,...u,i]);let c=_optionalChain([e, 'access', _3 => _3.config, 'access', _4 => _4.vite, 'optionalAccess', _5 => _5.build, 'optionalAccess', _6 => _6.rollupOptions, 'optionalAccess', _7 => _7.external])||[];return e.config.vite.build.rollupOptions.external=c.filter(p=>!l.includes(p)),await YE(e),e}async function De(e={userRoot:process.cwd()},t="dev"){let r=_path.dirname.call(void 0, Ge("valaxy/package.json",!0)),n=_path.resolve.call(void 0, r,"client"),i=_path.resolve.call(void 0, e.userRoot||process.cwd()),{config:o,configFile:s,theme:a}=await Rp(e),{siteConfig:u,siteConfigFile:l}=await kn(e.userRoot),{themeConfig:c,themeConfigFile:p}=await qp(e.userRoot);o=$e({siteConfig:u},{themeConfig:c},o);let f=Np(a,e.userRoot),y=(await(0,Vp.default)(["**.md"],{cwd:_path.resolve.call(void 0, i,"pages"),ignore:["**/node_modules"]})).sort(),h={mode:t,pkgRoot:r,clientRoot:n,userRoot:i,themeRoot:f,addonRoots:[],roots:[],theme:a,config:{...o,runtimeConfig:{addons:{}}},configFile:s||"",siteConfigFile:l||"",themeConfigFile:p||"",pages:y,addons:[]};WE(h);let _=await Es(h),E=Ht(o,_);return h=await _s(h,E),h}async function Es(e){we.info(`Resolve ${_kolorist.cyan.call(void 0, "valaxy.config.ts")} from ${_kolorist.yellow.call(void 0, `theme(${e.theme})`)}`);let{config:t}=await gs(e.themeRoot,e);return t}var _readline = require('readline'); var Gd = _interopRequireWildcard(_readline);var _os = require('os'); var _os2 = _interopRequireDefault(_os);var _markdownit = require('markdown-it'); var _markdownit2 = _interopRequireDefault(_markdownit);var _graymatter = require('gray-matter'); var _graymatter2 = _interopRequireDefault(_graymatter);var _pluginvue = require('@vitejs/plugin-vue'); var _pluginvue2 = _interopRequireDefault(_pluginvue);var _vitepluginpages = require('vite-plugin-pages'); var _vitepluginpages2 = _interopRequireDefault(_vitepluginpages);var _vitepluginvuelayouts = require('vite-plugin-vue-layouts'); var _vitepluginvuelayouts2 = _interopRequireDefault(_vitepluginvuelayouts);var _vite3 = require('unplugin-vue-components/vite'); var _vite4 = _interopRequireDefault(_vite3);var _vite5 = require('@intlify/unplugin-vue-i18n/vite'); var _vite6 = _interopRequireDefault(_vite5);var _dayjs = require('dayjs'); var _dayjs2 = _interopRequireDefault(_dayjs);var _htmltotext = require('html-to-text');var _markdownitanchor = require('markdown-it-anchor'); var _markdownitanchor2 = _interopRequireDefault(_markdownitanchor);var _markdownitattrs = require('markdown-it-attrs'); var _markdownitattrs2 = _interopRequireDefault(_markdownitattrs);var _markdownitemoji = require('markdown-it-emoji'); var _markdownitemoji2 = _interopRequireDefault(_markdownitemoji);var _markdownittasklists = require('markdown-it-task-lists'); var _markdownittasklists2 = _interopRequireDefault(_markdownittasklists);var _html_blocksjs = require('markdown-it/lib/common/html_blocks.js'); var _html_blocksjs2 = _interopRequireDefault(_html_blocksjs);var zE="[a-zA-Z_:@][a-zA-Z0-9:._-]*",JE="[^\"'=<>`\\x00-\\x20]+",QE="'[^']*'",XE='"[^"]*"',ZE="(?:"+JE+"|"+QE+"|"+XE+")",xs="(?:\\s+"+zE+"(?:\\s*=\\s*"+ZE+")?)",Up="<[A-Za-z][A-Za-z0-9\\-]*"+xs+"*\\s*\\/?>",Gp="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",ex="<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->",tx="<[?][\\s\\S]*?[?]>",rx="<![A-Z]+\\s+[^>]*>",nx="<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",ix=new RegExp("^(?:"+Up+"|"+Gp+"|"+ex+"|"+tx+"|"+rx+"|"+nx+")"),ox=new RegExp("^(?:"+Up+"|"+Gp+")"),sx=new RegExp("^<[A-Za-z][A-Za-z0-9\\-]*"+xs+"*\\s*\\/>"),ax=new RegExp("^<([A-Za-z][A-Za-z0-9\\-]*)"+xs+"*\\s*>.*<\\/\\1\\s*>"),ux=_html_blocksjs2.default,cx=["a","abbr","acronym","audio","b","bdi","bdo","big","br","button","canvas","cite","code","data","datalist","del","dfn","em","embed","i","iframe","img","input","ins","kbd","label","map","mark","meter","noscript","object","output","picture","progress","q","ruby","s","samp","script","select","slot","small","span","strong","sub","sup","svg","template","textarea","time","u","tt","var","video","wbr"],lx=["template","component","transition","transition-group","keep-alive","slot","teleport"],fx=({blockTags:e,inlineTags:t})=>{let r=[...e,...ux],n=[...t,...cx.filter(o=>!lx.includes(o))];return[[/^<(script|pre|style)(?=(\s|>|$))/i,/<\/(script|pre|style)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+r.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp("^</?(?!("+n.join("|")+")(?![\\w-]))[A-Za-z][A-Za-z0-9\\-]*(?=(\\s|/?>|$))"),/^$/,!0],[new RegExp(ox.source+"\\s*$"),/^$/,!1]]},px=e=>{let t=fx(e);return(r,n,i,o)=>{let s,a,u,l=r.bMarks[n]+r.tShift[n],c=r.eMarks[n];if(r.sCount[n]-r.blkIndent>=4||!r.md.options.html||r.src.charCodeAt(l)!==60)return!1;for(u=r.src.slice(l,c),s=0;s<t.length&&!t[s][0].test(u);s++);if(s===t.length)return!1;if(o)return t[s][2];if(s===6){let f=_nullishCoalesce(u.match(sx), () => (u.match(ax)));if(f){r.line=n+1;let y=r.push("html_inline","",0);return y.content=f[0],y.map=[n,r.line],y=r.push("inline","",0),y.content=u.slice(f[0].length),y.map=[n,r.line],y.children=[],!0}}if(a=n+1,!t[s][1].test(u)){for(;a<i&&!(r.sCount[a]<r.blkIndent);a++)if(l=r.bMarks[a]+r.tShift[a],c=r.eMarks[a],u=r.src.slice(l,c),t[s][1].test(u)){u.length!==0&&a++;break}}r.line=a;let p=r.push("html_block","",0);return p.map=[n,a],p.content=r.getLines(n,a,r.blkIndent,!0),!0}},dx=e=>{let t=e|32;return t>=97&&t<=122},mx=(e,t)=>{let{pos:r}=e;if(!e.md.options.html)return!1;let n=e.posMax;if(e.src.charCodeAt(r)!==60||r+2>=n)return!1;let i=e.src.charCodeAt(r+1);if(i!==33&&i!==63&&i!==47&&!dx(i))return!1;let o=e.src.slice(r).match(ix);if(!o)return!1;if(!t){let s=e.push("html_inline","",0);s.content=e.src.slice(r,r+o[0].length)}return e.pos+=o[0].length,!0},Wp=(e,{blockTags:t=[],inlineTags:r=[]}={})=>{let n=px({blockTags:t,inlineTags:r});e.block.ruler.at("html_block",n,{alt:["paragraph","reference","blockquote"]}),e.inline.ruler.at("html_inline",mx)};var Yp=(e,{grayMatterOptions:t,renderExcerpt:r=!0}={})=>{let n=e.render.bind(e);e.render=(i,o={})=>{let{data:s,content:a,excerpt:u=""}=_graymatter2.default.call(void 0, i,t);return o.content=a,o.frontmatter={...o.frontmatter,...s},o.excerpt=r&&u?n(u,{...o}):u,n(a,o)}};var gx={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},yx=/[&<>'"]/g,_t=e=>e.replace(yx,t=>gx[t]);var Er=(e,{shouldAllowHtml:t,shouldEscapeText:r})=>{let n=_nullishCoalesce(e.children, () => ([])),i=["text","emoji","code_inline"];return t&&i.push("html_inline"),n.filter(s=>i.includes(s.type)&&!_optionalChain([s, 'access', _8 => _8.meta, 'optionalAccess', _9 => _9.isPermalinkSymbol])).reduce((s,a)=>r&&(a.type==="code_inline"||a.type==="text")?`${s}${_t(a.content)}`:`${s}${a.content}`,"").trim()},On=(e,{level:t,shouldAllowHtml:r,shouldEscapeText:n,slugify:i,format:o})=>{let s=[],a=[],u=l=>{for(;a.length!==0&&l.level<=a[0].level;)a.shift();a.length===0?(s.push(l),a.push(l)):(a[0].children.push(l),a.unshift(l))};for(let l=0;l<e.length;l+=1){let c=e[l];if(_optionalChain([c, 'optionalAccess', _10 => _10.type])!=="heading_open"||_optionalChain([c, 'optionalAccess', _11 => _11.level])!==0)continue;let p=Number.parseInt(c.tag.slice(1),10);if(!t.includes(p))continue;let f=e[l+1];if(!f)continue;let y=Er(f,{shouldAllowHtml:r,shouldEscapeText:n}),h=_nullishCoalesce(c.attrGet("id"), () => (i(y)));u({level:p,title:_nullishCoalesce(_optionalChain([o, 'optionalCall', _12 => _12(y)]), () => (y)),slug:h,link:`#${h}`,children:[]})}return s},vx=/[\u0000-\u001f]/g,_x=/[\s~`!@#$%^&*()\-_+=[\]{}|\\;:"'“”‘’<>,.?/]+/g,Ex=/[\u0300-\u036F]/g,Pn=e=>e.normalize("NFKD").replace(Ex,"").replace(vx,"").replace(_x,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"").replace(/^(\d)/,"_$1").toLowerCase();var Kp=(e,{level:t=[2,3],slugify:r=Pn,format:n}={})=>{let i=e.renderer.render.bind(e.renderer);e.renderer.render=(o,s,a)=>(a.headers=On(o,{level:t,shouldAllowHtml:!1,shouldEscapeText:!1,slugify:r,format:n}),i(o,s,a))};var zp="script",Jp="style",xr="template",xx=/^<script\s+.*?\bsetup\b.*?>$/is,bx=({customBlocks:e})=>{let t=Array.from(new Set([zp,Jp,...e])).join("|");return new RegExp(`^\\s*(?<content>(?<tagOpen><(?<type>${t})\\s?.*?>)(?<contentStripped>.*)(?<tagClose><\\/\\k<type>\\s*>))\\s*$`,"is")},Qp=(e,{customBlocks:t=[]}={})=>{let r=bx({customBlocks:t}),n=e.render.bind(e);e.render=(o,s={})=>{s.sfcBlocks={template:null,script:null,scriptSetup:null,scripts:[],styles:[],customBlocks:[]};let a=n(o,s);return s.sfcBlocks.template={type:xr,content:`<${xr}>${a}</${xr}>`,contentStripped:a,tagOpen:`<${xr}>`,tagClose:`</${xr}>`},a};let i=e.renderer.rules.html_block;e.renderer.rules.html_block=(o,s,a,u,l)=>{if(!u.sfcBlocks)return i(o,s,a,u,l);let f=o[s].content.match(r);if(!f)return i(o,s,a,u,l);let y=f.groups;return y.type===zp?(u.sfcBlocks.scripts.push(y),xx.test(y.tagOpen)?u.sfcBlocks.scriptSetup=y:u.sfcBlocks.script=y):y.type===Jp?u.sfcBlocks.styles.push(y):u.sfcBlocks.customBlocks.push(y),""}};var Xp=e=>{let t=e.renderer.render.bind(e.renderer);e.renderer.render=(r,n,i)=>{let o=r.findIndex(s=>s.tag==="h1");return i.title=o>-1?Er(r[o+1],{shouldAllowHtml:!1,shouldEscapeText:!1}):"",t(r,n,i)}};var Sx=({listTag:e,listClass:t,itemClass:r,linkTag:n,linkClass:i})=>{let o=_t(e),s=t?` class="${_t(t)}"`:"",a="li",u=r?` class="${_t(r)}"`:"",l=_t(n),c=i?` class="${_t(i)}"`:"",p=y=>n==="router-link"?` to="${y}"`:` href="${y}"`,f=y=>`<${o}${s}>${y.map(h=>`<${a}${u}${u}><${l}${c}${p(h.link)}>${h.title}</${l}>${h.children.length>0?f(h.children):""}</${a}>`).join("")}</${o}>`;return f},Cx=({pattern:e,containerTag:t,containerClass:r})=>(n,i,o,s)=>{if(n.sCount[i]-n.blkIndent>=4)return!1;let a=n.bMarks[i]+n.tShift[i],u=n.eMarks[i],l=n.src.slice(a,u).split(" ")[0];if(!e.test(l))return!1;if(s)return!0;n.line=i+1;let c=n.push("toc_open",t,1);c.markup="",c.map=[i,n.line],r&&c.attrSet("class",r);let p=n.push("toc_body","",0);p.markup=l,p.map=[i,n.line],p.hidden=!0;let f=n.push("toc_close",t,-1);return f.markup="",p.map=[i,n.line],!0},Zp=(e,{pattern:t=/^\[\[toc\]\]$/i,slugify:r=Pn,format:n,level:i=[2,3],containerTag:o="nav",containerClass:s="table-of-contents",listTag:a="ul",listClass:u="",itemClass:l="",linkTag:c="a",linkClass:p=""}={})=>{e.block.ruler.before("heading","toc",Cx({pattern:t,containerTag:o,containerClass:s}),{alt:["paragraph","reference","blockquote"]});let f=Sx({listTag:a,listClass:u,itemClass:l,linkTag:c,linkClass:p});e.renderer.rules.toc_body=y=>f(On(y,{level:i,shouldAllowHtml:!0,shouldEscapeText:!0,slugify:r,format:n}))};var _katex = require('katex'); var _katex2 = _interopRequireDefault(_katex);function td(e,t){let r=e.posMax,n=!0,i=!0,o=t>0?e.src.charCodeAt(t-1):-1,s=t+1<=r?e.src.charCodeAt(t+1):-1;return(o===32||o===9||s>=48&&s<=57)&&(i=!1),(s===32||s===9)&&(n=!1),{can_open:n,can_close:i}}function wx(e,t){let r,n,i,o;if(e.src[e.pos]!=="$")return!1;if(i=td(e,e.pos),!i.can_open)return t||(e.pending+="$"),e.pos+=1,!0;let s=e.pos+1;for(r=s;(r=e.src.indexOf("$",r))!==-1;){for(o=r-1;e.src[o]==="\\";)o-=1;if((r-o)%2===1)break;r+=1}return r===-1?(t||(e.pending+="$"),e.pos=s,!0):r-s===0?(t||(e.pending+="$$"),e.pos=s+1,!0):(i=td(e,r),i.can_close?(t||(n=e.push("math_inline","math",0),n.markup="$",n.content=e.src.slice(s,r)),e.pos=r+1,!0):(t||(e.pending+="$"),e.pos=s,!0))}function Ax(e,t,r,n){let i,o,s,a,u=!1,l=e.bMarks[t]+e.tShift[t],c=e.eMarks[t];if(l+2>c||e.src.slice(l,l+2)!=="$$")return!1;if(l+=2,i=e.src.slice(l,c),n)return!0;for(i.trim().slice(-2)==="$$"&&(i=i.trim().slice(0,-2),u=!0),s=t;!u&&(s++,!(s>=r||(l=e.bMarks[s]+e.tShift[s],c=e.eMarks[s],l<c&&e.tShift[s]<e.blkIndent)));)e.src.slice(l,c).trim().slice(-2)==="$$"&&(a=e.src.slice(0,c).lastIndexOf("$$"),o=e.src.slice(l,a),u=!0);e.line=s+1;let p=e.push("math_block","math",0);return p.block=!0,p.content=(i&&i.trim()?`${i}
19
19
  `:"")+e.getLines(t+1,s,e.tShift[t],!0)+(o&&o.trim()?o:""),p.map=[t,e.line],p.markup="$$",!0}function bs(e,t){t=t||{};let r=function(s){t.displayMode=!1;try{return _katex2.default.renderToString(s,t)}catch(a){return t.throwOnError&&console.warn(a),s}},n=function(s,a){return r(s[a].content)},i=function(s){t.displayMode=!0;try{return`<p>${_katex2.default.renderToString(s,t)}</p>`}catch(a){return t.throwOnError&&console.warn(a),s}},o=function(s,a){return`${i(s[a].content)}
20
20
  `};e.inline.ruler.after("escape","math_inline",wx),e.block.ruler.after("blockquote","math_block",Ax,{alt:["paragraph","reference","blockquote","list"]}),e.renderer.rules.math_inline=n,e.renderer.rules.math_block=o}var _markdownitcontainer = require('markdown-it-container'); var _markdownitcontainer2 = _interopRequireDefault(_markdownitcontainer);function Rx(e,{icon:t,color:r,text:n,langs:i}={}){return[_markdownitcontainer2.default,e,{render(o,s){let a=o[s],u=a.info.trim().slice(e.length).trim();if(a.nesting===1){if(e==="details")return`<details class="${e} custom-block">${`<summary>${u}</summary>`}
21
21
  `;let l="";t&&(l=`<i class="icon ${t}" ${r?`style="color: ${r}"`:""}></i>`);let c=`<span lang="en">${u||n}</span>`;return i&&Object.keys(i).forEach(p=>{c+=`<span lang="${p}">${i[p]}</span>`}),`<div class="${e} custom-block"><p class="custom-block-title">${l}${c}</p>
@@ -27,7 +27,7 @@ GFS4: `),console.error(e)});K[oe]||(na=global[oe]||[],oa(K,na),K.close=function(
27
27
  `:`</div>
28
28
  `})})};var od=Q(id(),1),Fx=/[\u0000-\u001F]/g,Ox=/[\s~`!@#$%^&*()\-_+=[\]{}|\\;:"'<>,.…?/]+/g,Mn=e=>(0,od.remove)(e).replace(Fx,"").replace(Ox,"-").replace(/\-{2,}/g,"-").replace(/^\-+|\-+$/g,"").replace(/^(\d)/,"_$1").toLowerCase();var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto);var Px=128,Et,Vt,Tx=e=>{!Et||Et.length<e?(Et=Buffer.allocUnsafe(e*Px),_crypto2.default.randomFillSync(Et),Vt=0):Vt+e>Et.length&&(_crypto2.default.randomFillSync(Et),Vt=0),Vt+=e},$x=e=>(Tx(e-=0),Et.subarray(Vt-e,Vt)),Dx=(e,t,r)=>{let n=(2<<31-Math.clz32(e.length-1|1))-1,i=Math.ceil(1.6*n*t/e.length);return(o=t)=>{let s="";for(;;){let a=r(i),u=i;for(;u--;)if(s+=e[a[u]&n]||"",s.length===o)return s}}},ad=(e,t=21)=>Dx(e,t,$x);var md=Q(Rs(),1);var _shiki = require('shiki');function Sr(e,t={}){return({code:r})=>{let n=_nullishCoalesce(t.tagRegExp, () => (/(?:\/\/|\/\*{1,2}) *\[!code ([\w+-]+)(?::(\d+))?] *(?:\*{1,2}\/)?/)),i=[];return r=r.split(`
29
29
  `).map((o,s)=>{let[a,u,l]=_nullishCoalesce(o.match(n), () => ([]));return!a||!Object.keys(e).includes(u)?o:(Array.from({length:Number(_nullishCoalesce(l, () => (1)))}).forEach((c,p)=>{i.push({line:s+p+1,classes:e[u]})}),o.replace(n,""))}).join(`
30
- `),{code:r,lineOptions:i}}}function Ut(e,t,r){let n=new RegExp(`<${_nullishCoalesce(r, () => ("w+"))}[^>]*class="([\\w+-:;\\/* ]*)"`);return t=Array.isArray(t)?t:[t],e.replace(n,(i,o)=>i.replace(o,`${o} ${t}`))}function ld(e={}){let t=_nullishCoalesce(e.commonDiffClass, () => ("diff")),r=_nullishCoalesce(e.removedLinesClasses, () => (["remove"])),n=_nullishCoalesce(e.removedLinesClasses, () => (["add"])),i=_nullishCoalesce(e.removeLineTag, () => ("--")),o=_nullishCoalesce(e.addLineTag, () => ("++")),s=_nullishCoalesce(e.hasDiffClass, () => ("has-diff"));return{name:"diff",handler:Sr({[i]:[t,...r],[o]:[t,...n]},e),postProcess:({code:a})=>a.includes(t)?Ut(a,s,"pre"):a}}function fd(e={}){let t=_nullishCoalesce(e.hasFocusClass, () => ("has-focus")),r=_nullishCoalesce(e.hasFocusedLinesClass, () => ("has-focused-lines")),n=_nullishCoalesce(e.focusTag, () => ("focus"));return{name:"focus",handler:Sr({[n]:[t]},e),postProcess:({code:i})=>i.includes(t)?Ut(i,r,"pre"):i}}function pd(e={}){let t=_nullishCoalesce(e.hasHighlightClass, () => ("has-highlight")),r=_nullishCoalesce(e.hasHighlightedLinesClass, () => ("has-highlighted-lines")),n=_nullishCoalesce(e.highlightTag, () => ("hl"));return{name:"highlight",handler:Sr({[n]:[t]},e),postProcess:({code:i})=>i.includes(t)?Ut(i,r,"pre"):i}}function Nx(e,t,r){return e.reduce((n,i)=>{let{code:o,lineOptions:s}=_nullishCoalesce(_optionalChain([i, 'access', _13 => _13.handler, 'optionalCall', _14 => _14({code:n.code,lang:r})]), () => (n));return{code:o,lineOptions:[...n.lineOptions,...s]}},{code:t,lineOptions:[]})}function qx(e,t,r){return e.reduce((n,i)=>_nullishCoalesce(_optionalChain([i, 'access', _15 => _15.postProcess, 'optionalCall', _16 => _16({code:n,lang:r})]), () => (n)),t)}async function dd(e={}){let t=await _shiki.getHighlighter.call(void 0, e),r=_nullishCoalesce(e.processors, () => ([]));return{...t,codeToHtml:(n,i)=>{let o=typeof i=="object"?i.lang:i,s=typeof i=="object"?_nullishCoalesce(i.lineOptions, () => ([])):[],a=typeof i=="object"?i.theme:void 0,{code:u,lineOptions:l}=Nx(r,n,o),c=t.codeToHtml(u,{lang:o,theme:a,lineOptions:[...l,...s]});return qx(r,c,o)}}}var Bx=ad("abcdefghijklmnopqrstuvwxyz",10),jx=e=>{e=e.replace(/^(?:\[.*?\])?.*?([\d,-]+).*/,"$1").trim();let t=[];return e?(e.split(",").map(r=>r.split("-").map(n=>parseInt(n,10))).forEach(([r,n])=>{r&&n?t.push(...Array.from({length:n-r+1},(i,o)=>r+o)):t.push(r)}),t.map(r=>({line:r,classes:["highlighted"]}))):[]},Hx={name:"error-level",handler:Sr({error:["highlighted","error"],warning:["highlighted","warning"]})};async function hd(e="material-palenight",t="txt"){let r=typeof e=="string"||"name"in e,n=p=>typeof p=="string"?p:p.name,i=[fd(),pd({hasHighlightClass:"highlighted"}),ld(),Hx],o=await dd({themes:r?[e]:[e.dark,e.light],processors:i}),s=/<pre[^>]*(style=".*?")/,a=/^<pre(.*?)>/,u=/-vue$/,l=/:(no-)?line-numbers$/,c=/\{\{.*?\}\}/g;return(p,f,y)=>{let h=u.test(f)?"":"v-pre";f=f.replace(l,"").replace(u,"").toLowerCase()||t,f&&(o.getLoadedLanguages().includes(f)||(f!==t&&console.warn(md.default.yellow(`The language '${f}' is not loaded, falling back to '${t}' for syntax highlighting.`)),f=t));let _=jx(y),E=L=>L.replace(a,(C,S)=>`<pre ${h}${S}>`).replace(s,(C,S)=>C.replace(S,"")),b=new Map,D=L=>h?L:L.replace(c,C=>{let S=b.get(C);return S||(S=Bx(),b.set(C,S)),S}),P=L=>(b.forEach((C,S)=>{L=L.replaceAll(C,S)}),L);if(r)return E(P(o.codeToHtml(D(p),{lang:f,lineOptions:_,theme:n(e)})));let V=Ut(E(o.codeToHtml(p,{lang:f,lineOptions:_,theme:n(e.dark)})),"va-code-dark","pre"),N=Ut(E(o.codeToHtml(p,{lang:f,lineOptions:_,theme:n(e.light)})),"va-code-light","pre");return V+N}}var Vx=/^<pre .*?><code>/,gd=e=>{let t=e.renderer.rules.fence;e.renderer.rules.fence=(...r)=>{let[n,i,o]=r,s=n[i],a=s.attrs&&s.attrs[0];if(!a)return t(...r);let u=a[0];if(!u||!/[\d,-]+/.test(u))return t(...r);let l=u.split(",").map(h=>h.split("-").map(_=>parseInt(_,10))),c=o.highlight?o.highlight(s.content,s.info,""):s.content;return`<div class="highlight-lines">${c.replace(Vx,"").split(`
30
+ `),{code:r,lineOptions:i}}}function Ut(e,t,r){let n=new RegExp(`<${_nullishCoalesce(r, () => ("w+"))}[^>]*class="([\\w+-:;\\/* ]*)"`);return t=Array.isArray(t)?t:[t],e.replace(n,(i,o)=>i.replace(o,`${o} ${t}`))}function ld(e={}){let t=_nullishCoalesce(e.commonDiffClass, () => ("diff")),r=_nullishCoalesce(e.removedLinesClasses, () => (["remove"])),n=_nullishCoalesce(e.removedLinesClasses, () => (["add"])),i=_nullishCoalesce(e.removeLineTag, () => ("--")),o=_nullishCoalesce(e.addLineTag, () => ("++")),s=_nullishCoalesce(e.hasDiffClass, () => ("has-diff"));return{name:"diff",handler:Sr({[i]:[t,...r],[o]:[t,...n]},e),postProcess:({code:a})=>a.includes(t)?Ut(a,s,"pre"):a}}function fd(e={}){let t=_nullishCoalesce(e.hasFocusClass, () => ("has-focus")),r=_nullishCoalesce(e.hasFocusedLinesClass, () => ("has-focused-lines")),n=_nullishCoalesce(e.focusTag, () => ("focus"));return{name:"focus",handler:Sr({[n]:[t]},e),postProcess:({code:i})=>i.includes(t)?Ut(i,r,"pre"):i}}function pd(e={}){let t=_nullishCoalesce(e.hasHighlightClass, () => ("has-highlight")),r=_nullishCoalesce(e.hasHighlightedLinesClass, () => ("has-highlighted-lines")),n=_nullishCoalesce(e.highlightTag, () => ("hl"));return{name:"highlight",handler:Sr({[n]:[t]},e),postProcess:({code:i})=>i.includes(t)?Ut(i,r,"pre"):i}}function Nx(e,t,r){return e.reduce((n,i)=>{let{code:o,lineOptions:s}=_nullishCoalesce(_optionalChain([i, 'access', _13 => _13.handler, 'optionalCall', _14 => _14({code:n.code,lang:r})]), () => (n));return{code:o,lineOptions:[...n.lineOptions,...s]}},{code:t,lineOptions:[]})}function qx(e,t,r){return e.reduce((n,i)=>_nullishCoalesce(_optionalChain([i, 'access', _15 => _15.postProcess, 'optionalCall', _16 => _16({code:n,lang:r})]), () => (n)),t)}async function dd(e={}){let t=await _shiki.getHighlighter.call(void 0, e),r=_nullishCoalesce(e.processors, () => ([]));return{...t,codeToHtml:(n,i)=>{let o=typeof i=="object"?i.lang:i,s=typeof i=="object"?_nullishCoalesce(i.lineOptions, () => ([])):[],a=typeof i=="object"?i.theme:void 0,{code:u,lineOptions:l}=Nx(r,n,o),c=t.codeToHtml(u,{lang:o,theme:a,lineOptions:[...l,...s]});return qx(r,c,o)}}}var Bx=ad("abcdefghijklmnopqrstuvwxyz",10),jx=e=>{e=e.replace(/^(?:\[.*?\])?.*?([\d,-]+).*/,"$1").trim();let t=[];return e?(e.split(",").map(r=>r.split("-").map(n=>parseInt(n,10))).forEach(([r,n])=>{r&&n?t.push(...Array.from({length:n-r+1},(i,o)=>r+o)):t.push(r)}),t.map(r=>({line:r,classes:["highlighted"]}))):[]},Hx={name:"error-level",handler:Sr({error:["highlighted","error"],warning:["highlighted","warning"]})};async function hd(e="material-theme-palenight",t="txt"){let r=typeof e=="string"||"name"in e,n=p=>typeof p=="string"?p:p.name,i=[fd(),pd({hasHighlightClass:"highlighted"}),ld(),Hx],o=await dd({themes:r?[e]:[e.dark,e.light],processors:i}),s=/<pre[^>]*(style=".*?")/,a=/^<pre(.*?)>/,u=/-vue$/,l=/:(no-)?line-numbers$/,c=/\{\{.*?\}\}/g;return(p,f,y)=>{let h=u.test(f)?"":"v-pre";f=f.replace(l,"").replace(u,"").toLowerCase()||t,f&&(o.getLoadedLanguages().includes(f)||(f!==t&&console.warn(md.default.yellow(`The language '${f}' is not loaded, falling back to '${t}' for syntax highlighting.`)),f=t));let _=jx(y),E=L=>L.replace(a,(C,S)=>`<pre ${h}${S}>`).replace(s,(C,S)=>C.replace(S,"")),b=new Map,D=L=>h?L:L.replace(c,C=>{let S=b.get(C);return S||(S=Bx(),b.set(C,S)),S}),P=L=>(b.forEach((C,S)=>{L=L.replaceAll(C,S)}),L);if(r)return E(P(o.codeToHtml(D(p),{lang:f,lineOptions:_,theme:n(e)})));let V=Ut(E(o.codeToHtml(p,{lang:f,lineOptions:_,theme:n(e.dark)})),"va-code-dark","pre"),N=Ut(E(o.codeToHtml(p,{lang:f,lineOptions:_,theme:n(e.light)})),"va-code-light","pre");return V+N}}var Vx=/^<pre .*?><code>/,gd=e=>{let t=e.renderer.rules.fence;e.renderer.rules.fence=(...r)=>{let[n,i,o]=r,s=n[i],a=s.attrs&&s.attrs[0];if(!a)return t(...r);let u=a[0];if(!u||!/[\d,-]+/.test(u))return t(...r);let l=u.split(",").map(h=>h.split("-").map(_=>parseInt(_,10))),c=o.highlight?o.highlight(s.content,s.info,""):s.content;return`<div class="highlight-lines">${c.replace(Vx,"").split(`
31
31
  `).map((h,_)=>{let E=_+1;return l.some(([D,P])=>D&&P?E>=D&&E<=P:E===D)?'<div class="highlighted">&nbsp;</div>':"<br>"}).join("")}</div>`+c}},yd=e=>{let t=e.renderer.rules.fence;e.renderer.rules.fence=(...r)=>{let[n,i]=r,o=n[i],s=t(...r);return`<div class="language-${o.info.trim()}"><span class="copy"></span>${s}</div>`}};var _url = require('url');var Gx=/(^|.*\/)index.md(#?.*)$/i,vd=(e,t,r)=>{e.renderer.rules.link_open=(o,s,a,u,l)=>{let c=o[s],p=c.attrIndex("href");if(p>=0){let f=c.attrs[p],y=f[1];jt.test(y)?(Object.entries(t).forEach(([_,E])=>{c.attrSet(_,E)}),f[1]=y.replace(Sp,"")):!y.startsWith("#")&&!y.startsWith("mailto:")&&!/\.(?!html|md)\w+($|\?)/i.test(y)&&n(f,u),f[1]=f[1].replace(/\bimport\.meta/g,"import%2Emeta").replace(/\bprocess\.env/g,"process%2Eenv")}return l.renderToken(o,s,a)};function n(o,s){let a=o[1],u=a.match(Gx);if(u){let[,l,c]=u;a=l+c}else{let l=a.replace(/[?#].*$/,"");l.endsWith(".md")&&(l=l.replace(/\.md$/,s.cleanUrls==="disabled"?".html":"")),s.cleanUrls==="disabled"&&!l.endsWith(".html")&&!l.endsWith("/")&&(l+=".html");let c=new (0, _url.URL)(a,"http://a.com");a=l+c.search+c.hash}!a.startsWith("/")&&!/^\.\//.test(a)&&(a=`./${a}`),i(a.replace(/\.html$/,""),s),a.startsWith("/")&&(a=`${r}${a}`.replace(/\/+/g,"/")),o[1]=decodeURI(a)}function i(o,s){(s.links||(s.links=[])).push(o)}};async function ks(e,t={},r=!1,n="/"){return e.use(gd).use(yd).use(nd,t.blocks).use(vd,{target:"_blank",rel:"noreferrer",...t.externalLinks},n),_optionalChain([t, 'access', _17 => _17.attrs, 'optionalAccess', _18 => _18.disable])||e.use(_markdownitattrs2.default,t.attrs),e.use(bs,t.katex),e.use(_markdownitemoji2.default),r||e.use(_markdownitanchor2.default,{slugify:Mn,permalink:_markdownitanchor2.default.permalink.ariaHidden({}),...t.anchor}),e.use(Wp).use(Yp,{...t.frontmatter}).use(Kp,{slugify:Mn,...t.headers}).use(Qp,{...t.sfc}).use(Xp).use(Zp,{slugify:Mn,...t.toc}),e.use(_markdownittasklists2.default),t.config&&t.config(e),e}var Ed=async(e={})=>{let t=_markdownit2.default.call(void 0, {html:!0,linkify:!0,highlight:await hd(e.theme),...e.options});return await ks(t,e),t};var _jiti = require('jiti'); var _jiti2 = _interopRequireDefault(_jiti);var _unocss = require('unocss');var xd=Q(Ae(),1);function bd(e,t,r=""){return e={...e},Object.keys(t).forEach(n=>{_utils.isObject.call(void 0, e[n])?e[n]=bd(e[n],t[n],r?`${r}.${n}`:n):Array.isArray(e[n])?e[n]=[...e[n],...t[n]]:e[n]=t[n]}),e}async function Sd(e,t,r,n,i=!0){let o=n;for(let s of e){let a=_path.resolve.call(void 0, s,"setup",t);if(xd.default.existsSync(a)){let{default:u}=_jiti2.default.call(void 0, __filename)(a),l=await u(r);l!==null&&(o=i?bd(o,l):l)}}return o}var ub=async e=>{let{config:t}=e,r=["i-ri-clipboard-line","i-ri-archive-line","i-ri-folder-2-line","i-ri-price-tag-3-line","i-ri-cloud-line"].concat(_optionalChain([e, 'access', _19 => _19.config, 'access', _20 => _20.unocss, 'optionalAccess', _21 => _21.safelist])||[]),n="animate-fade-in m-auto text-left".split(" ").concat(["rotate-y-180"]).concat(r),i=t.siteConfig;_optionalChain([i, 'access', _22 => _22.social, 'optionalAccess', _23 => _23.length])&&i.social.forEach(s=>n.push(_optionalChain([s, 'optionalAccess', _24 => _24.icon])||""));let o=_optionalChain([i, 'access', _25 => _25.sponsor, 'optionalAccess', _26 => _26.methods])||[];return o.length&&o.forEach(s=>n.push(_optionalChain([s, 'optionalAccess', _27 => _27.icon])||"")),n},cb=async e=>{let{config:t}=e;return{shortcuts:[["btn","px-4 py-1 rounded inline-block bg-$va-c-primary text-white cursor-pointer transition hover:bg-$va-c-primary-light disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50"],["icon-btn","inline-flex justify-center items-center cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:opacity-100 hover:text-sky-600"],["va-card","shadow hover:shadow-lg"]],presets:[_unocss.presetUno.call(void 0, _optionalChain([t, 'access', _28 => _28.unocssPresets, 'optionalAccess', _29 => _29.uno])),_unocss.presetAttributify.call(void 0, _optionalChain([t, 'access', _30 => _30.unocssPresets, 'optionalAccess', _31 => _31.attributify])),_unocss.presetIcons.call(void 0, {scale:1.2,..._optionalChain([t, 'access', _32 => _32.unocssPresets, 'optionalAccess', _33 => _33.icons])}),_unocss.presetTypography.call(void 0, _optionalChain([t, 'access', _34 => _34.unocssPresets, 'optionalAccess', _35 => _35.typography]))],rules:[["font-serif",{"font-family":"var(--va-font-serif)"}],["font-sans",{"font-family":"var(--va-font-sans)"}],["font-mono",{"font-family":"var(--va-font-mono)"}]],transformers:[_unocss.transformerDirectives.call(void 0, ),_unocss.transformerVariantGroup.call(void 0, )],safelist:await ub(e)}},Cd=async e=>{let t=await Promise.resolve().then(() => require("unocss/vite")).then(f=>f.default),{unocss:r}=e.config,n=await cb(e),{themeRoot:i,clientRoot:o,roots:s}=e,a=["uno.config.ts","unocss.config.ts"],u=[];[i,o].forEach(f=>a.forEach(y=>u.push(_path.resolve.call(void 0, f,y))));let c={},p=[];return u.forEach(f=>{if(_fs.existsSync.call(void 0, f)){let y=_jiti2.default.call(void 0, __filename)(f);"default"in y&&(y=y.default),c=$e(c,y),p.push(f)}}),c=await Sd(s,"unocss.ts",{},c,!0),t({configDeps:p,configFile:!1,...$e(r||{},c,n)})};var Rd=Q(Ae(),1);var Cr=Q(Ae(),1);async function In({userRoot:e,themeRoot:t},r){let n={mode:"development",command:r},i={},o=_utils.uniq.call(void 0, [t,e]).map(s=>_path.join.call(void 0, s,"vite.config.ts"));for await(let s of o){if(!Cr.default.existsSync(s))continue;let a=await _vite.loadConfigFromFile.call(void 0, n,s);!_optionalChain([a, 'optionalAccess', _36 => _36.config])||(i=_vite.mergeConfig.call(void 0, i,a.config))}return i}async function Ln({clientRoot:e,themeRoot:t,userRoot:r,config:n}){let i=_path.resolve.call(void 0, e,"template.html"),o=await Cr.default.readFile(i,"utf-8"),s="",a="";n.siteConfig.favicon&&(s+=`<link rel="icon" href="${n.siteConfig.favicon}">`);let u=[r,t];n.siteConfig.mode==="auto"&&(s+=`
32
32
  <script>
33
33
  (function () {
@@ -1,3 +1,5 @@
1
+ import { ZoomOptions } from 'medium-zoom';
2
+
1
3
  interface ValaxyAddon<AddonOptions = Record<string, any>> {
2
4
  name: string;
3
5
  /**
@@ -180,6 +182,19 @@ interface SiteConfig {
180
182
  icon: string;
181
183
  }[];
182
184
  };
185
+ /**
186
+ * image preview by medium-zoom
187
+ * @url https://github.com/francoischalifour/medium-zoom
188
+ */
189
+ mediumZoom: {
190
+ enable: boolean;
191
+ /**
192
+ * For example: '.markdown-body img'
193
+ * @default '' content.value querySelectorAll('img')
194
+ */
195
+ selector: string | HTMLElement | HTMLElement[];
196
+ options: ZoomOptions;
197
+ };
183
198
  }
184
199
  type PartialDeep<T> = {
185
200
  [P in keyof T]?: T[P] extends object ? PartialDeep<T[P]> : T[P];
package/dist/node/cli.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkLJCTD6FMcjs = require('../chunk-LJCTD6FM.cjs');exports.cli = _chunkLJCTD6FMcjs.F; exports.run = _chunkLJCTD6FMcjs.G;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkX57MD6QQcjs = require('../chunk-X57MD6QQ.cjs');exports.cli = _chunkX57MD6QQcjs.F; exports.run = _chunkX57MD6QQcjs.G;
package/dist/node/cli.mjs CHANGED
@@ -1 +1 @@
1
- import{F as a,G as b}from"../chunk-I25SVHLW.mjs";export{a as cli,b as run};
1
+ import{F as a,G as b}from"../chunk-3CJLTSUY.mjs";export{a as cli,b as run};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkLJCTD6FMcjs = require('../chunk-LJCTD6FM.cjs');exports.build = _chunkLJCTD6FMcjs.C; exports.cli = _chunkLJCTD6FMcjs.F; exports.createServer = _chunkLJCTD6FMcjs.B; exports.defaultSiteConfig = _chunkLJCTD6FMcjs.t; exports.defaultValaxyConfig = _chunkLJCTD6FMcjs.u; exports.defineAddon = _chunkLJCTD6FMcjs.n; exports.defineConfig = _chunkLJCTD6FMcjs.s; exports.defineSiteConfig = _chunkLJCTD6FMcjs.q; exports.defineTheme = _chunkLJCTD6FMcjs.p; exports.defineUnoSetup = _chunkLJCTD6FMcjs.v; exports.defineValaxyAddon = _chunkLJCTD6FMcjs.m; exports.defineValaxyConfig = _chunkLJCTD6FMcjs.r; exports.defineValaxyTheme = _chunkLJCTD6FMcjs.o; exports.ensurePrefix = _chunkLJCTD6FMcjs.d; exports.getGitTimestamp = _chunkLJCTD6FMcjs.a; exports.getIndexHtml = _chunkLJCTD6FMcjs.A; exports.isExternal = _chunkLJCTD6FMcjs.b; exports.isPath = _chunkLJCTD6FMcjs.f; exports.mergeValaxyConfig = _chunkLJCTD6FMcjs.g; exports.mergeViteConfigs = _chunkLJCTD6FMcjs.z; exports.postProcessForSSG = _chunkLJCTD6FMcjs.E; exports.processValaxyOptions = _chunkLJCTD6FMcjs.w; exports.resolveAddonConfig = _chunkLJCTD6FMcjs.j; exports.resolveImportPath = _chunkLJCTD6FMcjs.l; exports.resolveOptions = _chunkLJCTD6FMcjs.x; exports.resolveThemeValaxyConfig = _chunkLJCTD6FMcjs.y; exports.resolveValaxyConfig = _chunkLJCTD6FMcjs.i; exports.resolveValaxyConfigFromRoot = _chunkLJCTD6FMcjs.h; exports.run = _chunkLJCTD6FMcjs.G; exports.slash = _chunkLJCTD6FMcjs.c; exports.ssgBuild = _chunkLJCTD6FMcjs.D; exports.toAtFS = _chunkLJCTD6FMcjs.e; exports.transformObject = _chunkLJCTD6FMcjs.k;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkX57MD6QQcjs = require('../chunk-X57MD6QQ.cjs');exports.build = _chunkX57MD6QQcjs.C; exports.cli = _chunkX57MD6QQcjs.F; exports.createServer = _chunkX57MD6QQcjs.B; exports.defaultSiteConfig = _chunkX57MD6QQcjs.t; exports.defaultValaxyConfig = _chunkX57MD6QQcjs.u; exports.defineAddon = _chunkX57MD6QQcjs.n; exports.defineConfig = _chunkX57MD6QQcjs.s; exports.defineSiteConfig = _chunkX57MD6QQcjs.q; exports.defineTheme = _chunkX57MD6QQcjs.p; exports.defineUnoSetup = _chunkX57MD6QQcjs.v; exports.defineValaxyAddon = _chunkX57MD6QQcjs.m; exports.defineValaxyConfig = _chunkX57MD6QQcjs.r; exports.defineValaxyTheme = _chunkX57MD6QQcjs.o; exports.ensurePrefix = _chunkX57MD6QQcjs.d; exports.getGitTimestamp = _chunkX57MD6QQcjs.a; exports.getIndexHtml = _chunkX57MD6QQcjs.A; exports.isExternal = _chunkX57MD6QQcjs.b; exports.isPath = _chunkX57MD6QQcjs.f; exports.mergeValaxyConfig = _chunkX57MD6QQcjs.g; exports.mergeViteConfigs = _chunkX57MD6QQcjs.z; exports.postProcessForSSG = _chunkX57MD6QQcjs.E; exports.processValaxyOptions = _chunkX57MD6QQcjs.w; exports.resolveAddonConfig = _chunkX57MD6QQcjs.j; exports.resolveImportPath = _chunkX57MD6QQcjs.l; exports.resolveOptions = _chunkX57MD6QQcjs.x; exports.resolveThemeValaxyConfig = _chunkX57MD6QQcjs.y; exports.resolveValaxyConfig = _chunkX57MD6QQcjs.i; exports.resolveValaxyConfigFromRoot = _chunkX57MD6QQcjs.h; exports.run = _chunkX57MD6QQcjs.G; exports.slash = _chunkX57MD6QQcjs.c; exports.ssgBuild = _chunkX57MD6QQcjs.D; exports.toAtFS = _chunkX57MD6QQcjs.e; exports.transformObject = _chunkX57MD6QQcjs.k;
@@ -2,7 +2,7 @@ import { ViteSSGOptions } from 'vite-ssg';
2
2
  export { cli, run } from './cli.js';
3
3
  import * as vite from 'vite';
4
4
  import { UserConfig, InlineConfig } from 'vite';
5
- import { D as DefaultThemeConfig, V as ValaxyConfig, P as PartialDeep, a as ValaxyAddon, R as RuntimeConfig, U as UserSiteConfig, S as SiteConfig } from '../config-c83a9122.js';
5
+ import { D as DefaultThemeConfig, V as ValaxyConfig, P as PartialDeep, a as ValaxyAddon, R as RuntimeConfig, U as UserSiteConfig, S as SiteConfig } from '../config-4c49536b.js';
6
6
  import Vue from '@vitejs/plugin-vue';
7
7
  import Components from 'unplugin-vue-components/vite';
8
8
  import { VitePluginConfig } from 'unocss/vite';
@@ -19,6 +19,7 @@ import { TocPluginOptions } from '@mdit-vue/plugin-toc';
19
19
  import { Awaitable } from '@antfu/utils';
20
20
  import * as defu from 'defu';
21
21
  import 'yargs';
22
+ import 'medium-zoom';
22
23
 
23
24
  declare module 'vite' {
24
25
  interface UserConfig {
@@ -1 +1 @@
1
- import{A,B,C,D,E,F,G,a as o,b as r,c as m,d as p,e as t,f as e,g as f,h as x,i,j as a,k as b,l as c,m as d,n as g,o as h,p as j,q as k,r as l,s as n,t as q,u as s,v as u,w as v,x as w,y,z}from"../chunk-I25SVHLW.mjs";export{C as build,F as cli,B as createServer,q as defaultSiteConfig,s as defaultValaxyConfig,g as defineAddon,n as defineConfig,k as defineSiteConfig,j as defineTheme,u as defineUnoSetup,d as defineValaxyAddon,l as defineValaxyConfig,h as defineValaxyTheme,p as ensurePrefix,o as getGitTimestamp,A as getIndexHtml,r as isExternal,e as isPath,f as mergeValaxyConfig,z as mergeViteConfigs,E as postProcessForSSG,v as processValaxyOptions,a as resolveAddonConfig,c as resolveImportPath,w as resolveOptions,y as resolveThemeValaxyConfig,i as resolveValaxyConfig,x as resolveValaxyConfigFromRoot,G as run,m as slash,D as ssgBuild,t as toAtFS,b as transformObject};
1
+ import{A,B,C,D,E,F,G,a as o,b as r,c as m,d as p,e as t,f as e,g as f,h as x,i,j as a,k as b,l as c,m as d,n as g,o as h,p as j,q as k,r as l,s as n,t as q,u as s,v as u,w as v,x as w,y,z}from"../chunk-3CJLTSUY.mjs";export{C as build,F as cli,B as createServer,q as defaultSiteConfig,s as defaultValaxyConfig,g as defineAddon,n as defineConfig,k as defineSiteConfig,j as defineTheme,u as defineUnoSetup,d as defineValaxyAddon,l as defineValaxyConfig,h as defineValaxyTheme,p as ensurePrefix,o as getGitTimestamp,A as getIndexHtml,r as isExternal,e as isPath,f as mergeValaxyConfig,z as mergeViteConfigs,E as postProcessForSSG,v as processValaxyOptions,a as resolveAddonConfig,c as resolveImportPath,w as resolveOptions,y as resolveThemeValaxyConfig,i as resolveValaxyConfig,x as resolveValaxyConfigFromRoot,G as run,m as slash,D as ssgBuild,t as toAtFS,b as transformObject};
@@ -1,145 +1,158 @@
1
- export { D as DefaultThemeConfig, P as PartialDeep, R as RuntimeConfig, S as SiteConfig, b as SocialLink, U as UserSiteConfig, c as UserValaxyConfig, a as ValaxyAddon, V as ValaxyConfig } from '../config-c83a9122.js';
1
+ export { D as DefaultThemeConfig, P as PartialDeep, R as RuntimeConfig, S as SiteConfig, b as SocialLink, U as UserSiteConfig, c as UserValaxyConfig, a as ValaxyAddon, V as ValaxyConfig } from '../config-4c49536b.js';
2
+ import 'medium-zoom';
2
3
 
3
- interface Post extends Record<string, any> {
4
+ interface PageFrontMatter extends Record<string, any> {
4
5
  /**
5
6
  * Path of post
6
7
  * route.path
7
8
  * @description 路径
8
9
  */
9
- path?: string;
10
+ path: string;
10
11
  /**
11
12
  * Title
12
13
  * @description 文章标题
13
14
  */
14
- title?: string;
15
- date?: string | number | Date;
15
+ title: string;
16
+ date: string | number | Date;
16
17
  /**
17
18
  * Updated Time
18
19
  */
19
- updated?: string | number | Date;
20
- lang?: string;
20
+ updated: string | number | Date;
21
+ /**
22
+ * i18n
23
+ */
24
+ lang: string;
21
25
  /**
22
26
  * TODO
23
27
  * Read Time
24
28
  * @description 阅读时长
25
29
  */
26
- duration?: string;
27
- /**
28
- * post card type, can be bilibili/yuque/...
29
- */
30
- type?: string;
31
- /**
32
- * override url, and jump directly
33
- */
34
- url?: string;
35
- /**
36
- * @description 摘要
37
- */
38
- excerpt?: string;
39
- /**
40
- * @default 'html'
41
- * render type of excerpt
42
- * - md: render as raw markdown
43
- * - html: render as html
44
- * - text: render as text
45
- */
46
- excerpt_type?: 'md' | 'text' | 'html';
30
+ duration: string;
47
31
  /**
48
32
  * @description Author
49
33
  * @description:zh-CN 作者
50
34
  */
51
- author?: string;
35
+ author: string;
52
36
  /**
53
37
  * Display sponsor info
54
38
  * @description 是否开启赞助
55
39
  */
56
- sponsor?: boolean;
40
+ sponsor: boolean;
57
41
  /**
58
42
  * Copyright
59
43
  * @description 是否显示文章底部版权信息
60
44
  */
61
- copyright?: boolean;
62
- /**
63
- * Category
64
- * @description 分类,若为数组,则按顺序代表多层文件夹
65
- */
66
- categories?: string | string[];
45
+ copyright: boolean;
67
46
  /**
68
- * Tags
69
- * @description 标签,可以有多个
47
+ * cover
48
+ * @description 封面图片
70
49
  */
71
- tags?: string[];
50
+ cover: string;
72
51
  /**
73
- * display prev next
74
- * @description 是否显示前一篇、后一篇导航
52
+ * display toc
53
+ * @description 是否显示目录
75
54
  */
76
- nav?: boolean;
55
+ toc: boolean;
77
56
  /**
78
57
  * display right sidebar
79
58
  * @description 是否显示右侧侧边栏
80
59
  */
81
- aside?: boolean;
60
+ aside: boolean;
61
+ /**
62
+ * enable markdown-body class
63
+ * @description 是否启用默认的 markdown 样式
64
+ */
65
+ markdown: boolean;
82
66
  /**
83
67
  * icon before title
84
68
  */
85
- icon?: string;
69
+ icon: string;
86
70
  /**
87
71
  * title color
88
72
  */
89
- color?: string;
73
+ color: string;
90
74
  /**
91
75
  * display comment
92
76
  */
93
- comment?: boolean;
77
+ comment: boolean;
94
78
  /**
95
79
  * post is end
96
80
  * @description 是否完结,将在末尾添加衬线字体 Q.E.D.
97
81
  */
98
- end?: boolean;
82
+ end: boolean;
99
83
  /**
100
84
  * use aplayer
101
85
  */
102
- aplayer?: boolean;
86
+ aplayer: boolean;
103
87
  /**
104
88
  * use katex
105
89
  */
106
- katex?: boolean;
90
+ katex: boolean;
107
91
  /**
108
92
  * use codepen
109
93
  */
110
- codepen?: boolean;
94
+ codepen: boolean;
111
95
  /**
112
- * 置顶
96
+ * use medium-zoom
97
+ * @url https://github.com/francoischalifour/medium-zoom
113
98
  */
114
- top?: number;
99
+ medium_zoom: boolean;
100
+ }
101
+ interface PostFrontMatter extends PageFrontMatter {
115
102
  /**
116
- * display toc
117
- * @description 是否显示目录
103
+ * post card type, can be bilibili/yuque/...
104
+ */
105
+ type: string;
106
+ /**
107
+ * override url, and jump directly
108
+ */
109
+ url: string;
110
+ /**
111
+ * @description 摘要
112
+ */
113
+ excerpt: string;
114
+ /**
115
+ * @default 'html'
116
+ * render type of excerpt
117
+ * - md: render as raw markdown
118
+ * - html: render as html
119
+ * - text: render as text
120
+ */
121
+ excerpt_type: 'md' | 'text' | 'html';
122
+ /**
123
+ * Category
124
+ * @description 分类,若为数组,则按顺序代表多层文件夹
118
125
  */
119
- toc?: boolean;
126
+ categories: string | string[];
127
+ /**
128
+ * Tags
129
+ * @description 标签,可以有多个
130
+ */
131
+ tags: string[];
132
+ /**
133
+ * display prev next
134
+ * @description 是否显示前一篇、后一篇导航
135
+ */
136
+ nav: boolean;
137
+ /**
138
+ * 置顶
139
+ */
140
+ top: number;
120
141
  /**
121
142
  * is draft
122
143
  * @description 是否为草稿
123
144
  */
124
- draft?: boolean;
145
+ draft: boolean;
125
146
  /**
126
147
  * hide in index
127
148
  * - true/`all`: hide in index & archive
128
149
  * - `index`: hide in index
129
150
  * @description 是否隐藏
130
151
  */
131
- hide?: 'index' | boolean;
132
- /**
133
- * cover
134
- * @description 封面图片
135
- */
136
- cover?: string;
137
- /**
138
- * enable markdown-body class
139
- * @description 是否启用默认的 markdown 样式
140
- */
141
- markdown?: boolean;
152
+ hide: 'index' | boolean;
142
153
  }
154
+ type Page = Partial<PageFrontMatter>;
155
+ type Post = Partial<PostFrontMatter>;
143
156
 
144
157
  type CleanUrlsMode = 'disabled' | 'without-subfolders' | 'with-subfolders';
145
158
  interface Header {
@@ -186,4 +199,4 @@ interface PageDataPayload {
186
199
  }
187
200
  type HeadConfig = [string, Record<string, string>] | [string, Record<string, string>, string];
188
201
 
189
- export { CleanUrlsMode, HeadConfig, Header, PageData, PageDataPayload, Post };
202
+ export { CleanUrlsMode, HeadConfig, Header, Page, PageData, PageDataPayload, PageFrontMatter, Post, PostFrontMatter };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "valaxy",
3
3
  "type": "module",
4
- "version": "0.14.0",
4
+ "version": "0.14.2",
5
5
  "description": "📄 Vite & Vue powered static blog generator.",
6
6
  "author": {
7
7
  "email": "me@yunyoujun.cn",
@@ -58,9 +58,9 @@
58
58
  "@intlify/unplugin-vue-i18n": "^0.8.1",
59
59
  "@types/body-scroll-lock": "^3.1.0",
60
60
  "@vitejs/plugin-vue": "^4.0.0",
61
- "@vueuse/core": "^9.11.1",
61
+ "@vueuse/core": "^9.12.0",
62
62
  "@vueuse/head": "^1.0.23",
63
- "@vueuse/integrations": "^9.11.1",
63
+ "@vueuse/integrations": "^9.12.0",
64
64
  "body-scroll-lock": "4.0.0-beta.0",
65
65
  "consola": "^2.15.3",
66
66
  "critters": "^0.0.16",
@@ -91,11 +91,11 @@
91
91
  "pascal-case": "^3.1.2",
92
92
  "pinia": "^2.0.28",
93
93
  "sass": "^1.57.1",
94
- "shiki": "^0.12.1",
94
+ "shiki": "^0.13.0",
95
95
  "star-markdown-css": "^0.4.1",
96
96
  "unconfig": "^0.3.7",
97
- "unocss": "^0.46.5",
98
- "unplugin-vue-components": "^0.22.12",
97
+ "unocss": "^0.49.1",
98
+ "unplugin-vue-components": "^0.23.0",
99
99
  "vite": "^4.0.4",
100
100
  "vite-plugin-pages": "^0.28.0",
101
101
  "vite-plugin-vue-layouts": "^0.7.0",
package/types/config.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { ZoomOptions } from 'medium-zoom'
1
2
  import type { ValaxyAddon } from '../types'
2
3
 
3
4
  export type DefaultThemeConfig = {
@@ -184,6 +185,20 @@ export interface SiteConfig {
184
185
  icon: string
185
186
  }[]
186
187
  }
188
+
189
+ /**
190
+ * image preview by medium-zoom
191
+ * @url https://github.com/francoischalifour/medium-zoom
192
+ */
193
+ mediumZoom: {
194
+ enable: boolean
195
+ /**
196
+ * For example: '.markdown-body img'
197
+ * @default '' content.value querySelectorAll('img')
198
+ */
199
+ selector: string | HTMLElement | HTMLElement[]
200
+ options: ZoomOptions
201
+ }
187
202
  }
188
203
 
189
204
  export type PartialDeep<T> = {
package/types/posts.ts CHANGED
@@ -1,148 +1,165 @@
1
- export interface Post extends Record<string, any> {
1
+ export interface PageFrontMatter extends Record<string, any> {
2
2
  /**
3
3
  * Path of post
4
4
  * route.path
5
5
  * @description 路径
6
6
  */
7
- path?: string
7
+ path: string
8
8
  /**
9
9
  * Title
10
10
  * @description 文章标题
11
11
  */
12
- title?: string
13
- date?: string | number | Date
12
+ title: string
13
+ date: string | number | Date
14
14
  /**
15
15
  * Updated Time
16
16
  */
17
- updated?: string | number | Date
18
- lang?: string
17
+ updated: string | number | Date
18
+ /**
19
+ * i18n
20
+ */
21
+ lang: string
19
22
  /**
20
23
  * TODO
21
24
  * Read Time
22
25
  * @description 阅读时长
23
26
  */
24
- duration?: string
25
- /**
26
- * post card type, can be bilibili/yuque/...
27
- */
28
- type?: string
29
- /**
30
- * override url, and jump directly
31
- */
32
- url?: string
33
- /**
34
- * @description 摘要
35
- */
36
- excerpt?: string
37
- /**
38
- * @default 'html'
39
- * render type of excerpt
40
- * - md: render as raw markdown
41
- * - html: render as html
42
- * - text: render as text
43
- */
44
- excerpt_type?: 'md' | 'text' | 'html'
27
+ duration: string
28
+
45
29
  /**
46
30
  * @description Author
47
31
  * @description:zh-CN 作者
48
32
  */
49
- author?: string
33
+ author: string
50
34
 
51
35
  /**
52
36
  * Display sponsor info
53
37
  * @description 是否开启赞助
54
38
  */
55
- sponsor?: boolean
39
+ sponsor: boolean
56
40
  /**
57
41
  * Copyright
58
42
  * @description 是否显示文章底部版权信息
59
43
  */
60
- copyright?: boolean
44
+ copyright: boolean
61
45
 
62
46
  /**
63
- * Category
64
- * @description 分类,若为数组,则按顺序代表多层文件夹
47
+ * cover
48
+ * @description 封面图片
65
49
  */
66
- categories?: string | string[]
50
+ cover: string
67
51
  /**
68
- * Tags
69
- * @description 标签,可以有多个
52
+ * display toc
53
+ * @description 是否显示目录
70
54
  */
71
- tags?: string[]
72
-
55
+ toc: boolean
73
56
  /**
74
- * display prev next
75
- * @description 是否显示前一篇、后一篇导航
57
+ * display right sidebar
58
+ * @description 是否显示右侧侧边栏
76
59
  */
77
- nav?: boolean
60
+ aside: boolean
78
61
 
79
62
  /**
80
- * display right sidebar
81
- * @description 是否显示右侧侧边栏
63
+ * enable markdown-body class
64
+ * @description 是否启用默认的 markdown 样式
82
65
  */
83
- aside?: boolean
66
+ markdown: boolean
84
67
 
85
68
  /**
86
69
  * icon before title
87
70
  */
88
- icon?: string
71
+ icon: string
89
72
  /**
90
73
  * title color
91
74
  */
92
- color?: string
75
+ color: string
93
76
  /**
94
77
  * display comment
95
78
  */
96
- comment?: boolean
79
+ comment: boolean
97
80
  /**
98
81
  * post is end
99
82
  * @description 是否完结,将在末尾添加衬线字体 Q.E.D.
100
83
  */
101
- end?: boolean
84
+ end: boolean
102
85
 
86
+ // third-party features
103
87
  /**
104
88
  * use aplayer
105
89
  */
106
- aplayer?: boolean
90
+ aplayer: boolean
107
91
  /**
108
92
  * use katex
109
93
  */
110
- katex?: boolean
94
+ katex: boolean
111
95
  /**
112
96
  * use codepen
113
97
  */
114
- codepen?: boolean
98
+ codepen: boolean
99
+ /**
100
+ * use medium-zoom
101
+ * @url https://github.com/francoischalifour/medium-zoom
102
+ */
103
+ medium_zoom: boolean
104
+ }
115
105
 
106
+ export interface PostFrontMatter extends PageFrontMatter {
116
107
  /**
117
- * 置顶
108
+ * post card type, can be bilibili/yuque/...
118
109
  */
119
- top?: number
110
+ type: string
111
+ /**
112
+ * override url, and jump directly
113
+ */
114
+ url: string
115
+ /**
116
+ * @description 摘要
117
+ */
118
+ excerpt: string
119
+ /**
120
+ * @default 'html'
121
+ * render type of excerpt
122
+ * - md: render as raw markdown
123
+ * - html: render as html
124
+ * - text: render as text
125
+ */
126
+ excerpt_type: 'md' | 'text' | 'html'
120
127
 
121
128
  /**
122
- * display toc
123
- * @description 是否显示目录
129
+ * Category
130
+ * @description 分类,若为数组,则按顺序代表多层文件夹
131
+ */
132
+ categories: string | string[]
133
+ /**
134
+ * Tags
135
+ * @description 标签,可以有多个
136
+ */
137
+ tags: string[]
138
+
139
+ /**
140
+ * display prev next
141
+ * @description 是否显示前一篇、后一篇导航
142
+ */
143
+ nav: boolean
144
+
145
+ /**
146
+ * 置顶
124
147
  */
125
- toc?: boolean
148
+ top: number
149
+
126
150
  /**
127
151
  * is draft
128
152
  * @description 是否为草稿
129
153
  */
130
- draft?: boolean
154
+ draft: boolean
131
155
  /**
132
156
  * hide in index
133
157
  * - true/`all`: hide in index & archive
134
158
  * - `index`: hide in index
135
159
  * @description 是否隐藏
136
160
  */
137
- hide?: 'index' | boolean
138
- /**
139
- * cover
140
- * @description 封面图片
141
- */
142
- cover?: string
143
- /**
144
- * enable markdown-body class
145
- * @description 是否启用默认的 markdown 样式
146
- */
147
- markdown?: boolean
161
+ hide: 'index' | boolean
148
162
  }
163
+
164
+ export type Page = Partial<PageFrontMatter>
165
+ export type Post = Partial<PostFrontMatter>