boltdocs 3.1.0 → 3.2.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.
- package/dist/{adapters-DEXNIv3x.mjs → adapters-ByYY44Zy.mjs} +1 -1
- package/dist/{adapters-uGz-UKQa.cjs → adapters-DvmtpdSF.cjs} +1 -1
- package/dist/{banner-DjujkctF.d.ts → banner-BMop1KLF.d.ts} +2 -2
- package/dist/{banner-DdSgCs4G.d.cts → banner-CVD0GugR.d.cts} +2 -2
- package/dist/{cache-CfRTUzWC.cjs → cache-CO4Dy2uQ.cjs} +1 -1
- package/dist/{cache-B0C2i0yP.mjs → cache-Dk53iOo6.mjs} +1 -1
- package/dist/chunk-BFSpntXv.mjs +6 -0
- package/dist/{chunk-Ds5LZdWN.cjs → chunk-D1Md3oWO.cjs} +1 -1
- package/dist/client/index.cjs +219 -172
- package/dist/client/index.d.cts +75 -9
- package/dist/client/index.d.ts +75 -9
- package/dist/client/index.js +119 -73
- package/dist/client/mdx.cjs +1 -1
- package/dist/client/mdx.d.cts +1 -1
- package/dist/client/mdx.d.ts +1 -1
- package/dist/client/mdx.js +1 -1
- package/dist/client/primitives.cjs +7 -7
- package/dist/client/primitives.d.cts +5 -22
- package/dist/client/primitives.d.ts +5 -22
- package/dist/client/primitives.js +4 -4
- package/dist/client/theme/reset.css +31 -4
- package/dist/{shiki-adapter-fS94vy-z.d.mts → config-BpzaPsJj.d.cts} +325 -78
- package/dist/config-CCXp3aXO.mjs +7 -0
- package/dist/{config-BxsogK5A.cjs → config-CMd4XoFq.cjs} +1 -1
- package/dist/config-DlGoEM9D.cjs +7 -0
- package/dist/{shiki-adapter-l2kEP5rn.d.cts → config-xtS0ZkMm.d.mts} +325 -78
- package/dist/{csp-BX06rvdg.cjs → csp-CRp_3U7a.cjs} +1 -1
- package/dist/csp-oTC2ygvF.mjs +6 -0
- package/dist/{docs-layout-DyLDBwS6.js → docs-layout-BdtZ9z6s.js} +9 -28
- package/dist/{docs-layout-D1buSdua.cjs → docs-layout-CFWI15Id.cjs} +69 -88
- package/dist/{doctor-DPDcRKM1.cjs → doctor-BBtmNJE0.cjs} +1 -1
- package/dist/doctor-Bv16QSrI.cjs +7 -0
- package/dist/doctor-DOAbSaiL.mjs +7 -0
- package/dist/{generator-BN75lJOv.cjs → generator-COepVWGi.cjs} +1 -1
- package/dist/{handler-Btd4t_67.mjs → handler-DzQae4eA.mjs} +1 -1
- package/dist/{handler-1LRMYeI4.cjs → handler-XX7cLTqe.cjs} +1 -1
- package/dist/headers-Ddwek8K7.mjs +6 -0
- package/dist/{headers-YpD10rDb.cjs → headers-dg4SDrjY.cjs} +1 -1
- package/dist/{image-5WsgWYTh.js → image-Bz87fCla.js} +1 -1
- package/dist/{image-Hb105Gu6.cjs → image-C4TlpMHn.cjs} +18 -18
- package/dist/link-2PzgTnaP.js +673 -0
- package/dist/{icons-dev-YtDoLUsb.cjs → link-D1Gjkb-2.cjs} +0 -350
- package/dist/{mdx-Bv-pS6-O.js → mdx-BuO6a1f7.js} +195 -40
- package/dist/{mdx-CDUcJmye.cjs → mdx-CD-tSjRG.cjs} +234 -73
- package/dist/{meta-loader-CTB62-Mo.cjs → meta-loader-Dq1zcFnh.cjs} +1 -1
- package/dist/node/cache.cjs +1 -1
- package/dist/node/cache.d.cts +2 -1
- package/dist/node/cache.d.mts +2 -1
- package/dist/node/cache.mjs +1 -1
- package/dist/node/cli-entry.cjs +6 -6
- package/dist/node/cli-entry.mjs +9 -9
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.d.cts +20 -174
- package/dist/node/index.d.mts +18 -175
- package/dist/node/index.mjs +1 -1
- package/dist/node/mdx/shiki-adapter.cjs +1 -1
- package/dist/node/mdx/shiki-adapter.d.cts +49 -1
- package/dist/node/mdx/shiki-adapter.d.mts +49 -1
- package/dist/node/mdx/shiki-adapter.mjs +1 -1
- package/dist/node-B5hu_6qj.cjs +104 -0
- package/dist/node-BXtqM1uH.mjs +6 -0
- package/dist/node-C8725aw7.mjs +104 -0
- package/dist/node-aD1eisrR.cjs +6 -0
- package/dist/{package-_-Oa8-qN.cjs → package-CH2ChQqw.cjs} +1 -1
- package/dist/{package-CoHWTf0N.mjs → package-DSSB8B5L.mjs} +1 -1
- package/dist/{pages-external-CX2uyW95.cjs → pages-external-XkYIs-d5.cjs} +1 -1
- package/dist/parser-DCiEWkSk.cjs +8 -0
- package/dist/parser-qk9FIHJ7.mjs +8 -0
- package/dist/plugin-CX1OZ6jB.cjs +73 -0
- package/dist/plugin-CgfiWaFZ.mjs +73 -0
- package/dist/routes-BW6zsk7Z.mjs +6 -0
- package/dist/routes-BgoIB5wb.cjs +6 -0
- package/dist/{routes-D_S9kjkS.cjs → routes-CORVxc02.cjs} +1 -1
- package/dist/{search-dialog-BpNULmrl.cjs → search-dialog-B1NERUNx.cjs} +101 -55
- package/dist/{search-dialog-BbtxA1uT.cjs → search-dialog-BRFno7HD.cjs} +8 -8
- package/dist/{search-dialog-DC7oXU-5.js → search-dialog-BmxHiKwt.js} +2 -2
- package/dist/{search-dialog-gp9lrJXm.js → search-dialog-D6TvjcuV.js} +1 -1
- package/dist/{search-dialog-PJrFRU5G.js → search-dialog-DFnlx8LO.js} +44 -4
- package/dist/{search-dialog-BIuxGQsg.cjs → search-dialog-DHqwjJuG.cjs} +1 -1
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.d.mts +1 -1
- package/dist/server/index.mjs +1 -1
- package/dist/shiki-adapter-CoQ6jyJ4.cjs +6 -0
- package/dist/shiki-adapter-D-aKw7PP.mjs +6 -0
- package/dist/{sidebar-DknLUI1R.d.ts → sidebar-COTaMHR-.d.ts} +349 -41
- package/dist/{sidebar-DH2iPKXM.d.cts → sidebar-CrEdJuHX.d.cts} +349 -41
- package/dist/{types-generator-CYcHkDzZ.cjs → types-generator-BXhv7Ill.cjs} +1 -1
- package/dist/types-generator-bDPvUztF.mjs +26 -0
- package/dist/utils-Crm9oPcV.mjs +7 -0
- package/dist/utils-D6Xtj0FZ.cjs +7 -0
- package/package.json +13 -10
- package/src/shared/types.ts +361 -19
- package/dist/chunk-hT5z_Zn9-DsJawvsz.mjs +0 -6
- package/dist/chunk-hT5z_Zn9-SKz6VFXu.cjs +0 -6
- package/dist/config-DAgpZyh6.mjs +0 -7
- package/dist/config-DrRQYDCI.cjs +0 -7
- package/dist/csp-z2D0FuRW.mjs +0 -6
- package/dist/doctor-BadGEhXv.cjs +0 -7
- package/dist/doctor-vDsUDgqp.mjs +0 -7
- package/dist/escape-string-regexp-AG8q1e25-9Un9V90q.mjs +0 -6
- package/dist/escape-string-regexp-AG8q1e25-bJ9Ixe7c.cjs +0 -6
- package/dist/esm-shims-DSep1HcR.mjs +0 -6
- package/dist/headers-CL0pMcwm.mjs +0 -6
- package/dist/icons-dev-CHZOwhQA.js +0 -921
- package/dist/lib-BR0SoanK-CLswltLI.cjs +0 -6
- package/dist/lib-BR0SoanK-DcYeDrE6.mjs +0 -6
- package/dist/lib-DPoCz1YB-CLYXwKST.cjs +0 -6
- package/dist/lib-DPoCz1YB-CyGOqgSO.mjs +0 -6
- package/dist/micromark-util-character-5KqJafVT-C6gnc770.cjs +0 -6
- package/dist/micromark-util-character-5KqJafVT-DkPKsbgn.mjs +0 -6
- package/dist/node-BDBv8CT6.mjs +0 -104
- package/dist/node-DFV_FV0y.mjs +0 -6
- package/dist/node-DqsP7kXz.cjs +0 -6
- package/dist/node-yFmAavND.cjs +0 -104
- package/dist/parser-BZJgAa9E.mjs +0 -8
- package/dist/parser-DlanzESE.cjs +0 -8
- package/dist/plugin-BVuwx5D9.cjs +0 -73
- package/dist/plugin-BoxD91Yh.mjs +0 -73
- package/dist/rehype-slug--ZOxZ-_K-BNeYC4aT.cjs +0 -6
- package/dist/rehype-slug--ZOxZ-_K-CjIQEJCs.mjs +0 -6
- package/dist/remark-frontmatter-wFYRLcCt-CutW0gA3.mjs +0 -8
- package/dist/remark-frontmatter-wFYRLcCt-ENB5qG3y.cjs +0 -8
- package/dist/remark-gfm-B8TMkQbX-CjUJo8Rd.cjs +0 -21
- package/dist/remark-gfm-B8TMkQbX-Ctu0VV1_.mjs +0 -21
- package/dist/rolldown-runtime-fkIsjY3S.mjs +0 -6
- package/dist/rollup-DMqoG11U-CKcJ37u_.mjs +0 -59
- package/dist/rollup-DMqoG11U-DKdxvZIj.cjs +0 -59
- package/dist/routes-BN2XbGcT.mjs +0 -6
- package/dist/routes-Cnq8xTCv.cjs +0 -6
- package/dist/shiki-adapter-CGTmrR6S.cjs +0 -6
- package/dist/shiki-adapter-CK3llqw2.mjs +0 -6
- package/dist/types-generator-DVOnRVKU.mjs +0 -26
- package/dist/utils-B3xYMrpK.mjs +0 -7
- package/dist/utils-Bz1tG9Dg.cjs +0 -7
- /package/dist/{errors-C0Hx15Ag.mjs → errors-0zGHRLue.mjs} +0 -0
- /package/dist/{errors-Dx6JHoKE.cjs → errors-vKw8CkiX.cjs} +0 -0
- /package/dist/{index-DJYJzs-Z.d.mts → index-1KsTDq4o.d.mts} +0 -0
- /package/dist/{meta-loader-Bq-MjTXB.mjs → meta-loader-C4Hu9RN9.mjs} +0 -0
package/dist/node/cli-entry.cjs
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
* Copyright (c) 2026 Jesus Alcala
|
|
5
5
|
* Licensed under the MIT License.
|
|
6
6
|
*/
|
|
7
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../chunk-
|
|
8
|
-
`+(0,o.double)([` ${o.colors.green(`➜`)} ${o.colors.green(`Local:`)} ${o.colors.
|
|
7
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../chunk-D1Md3oWO.cjs`),t=require(`../node-B5hu_6qj.cjs`),n=require(`./cache.cjs`),r=require(`../config-DlGoEM9D.cjs`);let i=require(`node:path`);i=e.r(i);let a=require(`node:fs`);a=e.r(a);let o=require(`@bdocs/dui`),s=require(`node:fs/promises`);s=e.r(s);let c=require(`node:module`),l=require(`@bdocs/ssg/node`),u=require(`cac`);u=e.r(u);let d=require(`node:os`);d=e.r(d);let f=require(`node:url`),p=require(`vite`);function m(e){let t=e;for(;t&&t!==i.default.dirname(t);){if(a.default.existsSync(i.default.join(t,`.git`))||a.default.existsSync(i.default.join(t,`pnpm-workspace.yaml`)))return t;t=i.default.dirname(t)}t=e;let n=e;for(;t&&t!==i.default.dirname(t);)a.default.existsSync(i.default.join(t,`package.json`))&&(n=t),t=i.default.dirname(t);return n}let h=m(process.cwd());function g(e){if(!e)return;let t;if(typeof e==`string`)t=e;else if(e instanceof URL){if(e.protocol!==`file:`)return;t=e.pathname}else if(Buffer.isBuffer(e))t=e.toString();else return;let n=i.default.resolve(h,t),r=i.default.relative(h,n),a=r.startsWith(`..`)||i.default.isAbsolute(r),o=n.split(i.default.sep),s=o.some(e=>e.startsWith(`.env`)),c=o.some((e,t)=>{if(e===`node_modules`){let e=o[t+1];return!e||!e.startsWith(`.`)}return!1});if(a||s||c)throw Error(`[Boltdocs Security] Write/delete operation blocked on path: "${n}". Modifications are restricted to the project root, and cannot access .env or non-cache node_modules folders.`)}function _(e){return e==null?!1:typeof e==`number`?e!==0:typeof e==`string`?e.includes(`w`)||e.includes(`a`)||e.includes(`+`):!0}function v(){let e=a.default.writeFile;a.default.writeFile=((t,...n)=>{try{g(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return e.call(a.default,t,...n)});let t=a.default.writeFileSync;a.default.writeFileSync=(e,...n)=>(g(e),t.call(a.default,e,...n));let n=a.default.rm;a.default.rm=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return n.call(a.default,e,...t)});let r=a.default.rmSync;a.default.rmSync=(e,...t)=>(g(e),r.call(a.default,e,...t));let i=a.default.unlink;a.default.unlink=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return i.call(a.default,e,...t)});let o=a.default.unlinkSync;a.default.unlinkSync=(e,...t)=>(g(e),o.call(a.default,e,...t));let c=a.default.mkdir;a.default.mkdir=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return c.call(a.default,e,...t)});let l=a.default.mkdirSync;a.default.mkdirSync=(e,...t)=>(g(e),l.call(a.default,e,...t));let u=a.default.rmdir;a.default.rmdir=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return u.call(a.default,e,...t)});let d=a.default.rmdirSync;a.default.rmdirSync=(e,...t)=>(g(e),d.call(a.default,e,...t));let f=a.default.appendFile;a.default.appendFile=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return f.call(a.default,e,...t)});let p=a.default.appendFileSync;a.default.appendFileSync=(e,...t)=>(g(e),p.call(a.default,e,...t));let m=a.default.copyFile;a.default.copyFile=((e,t,...n)=>{try{g(e),g(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return m.call(a.default,e,t,...n)});let h=a.default.copyFileSync;a.default.copyFileSync=(e,t,...n)=>(g(e),g(t),h.call(a.default,e,t,...n));let v=a.default.rename;a.default.rename=((e,t,...n)=>{try{g(e),g(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return v.call(a.default,e,t,...n)});let y=a.default.renameSync;a.default.renameSync=(e,t,...n)=>(g(e),g(t),y.call(a.default,e,t,...n));let b=a.default.createWriteStream;a.default.createWriteStream=(e,...t)=>(g(e),b.call(a.default,e,...t));let x=a.default.open;a.default.open=((e,t,...n)=>{if(_(typeof t==`function`?void 0:t))try{g(e)}catch(e){let r=n[n.length-1],i=typeof t==`function`?t:typeof r==`function`?r:void 0;if(i){process.nextTick(()=>i(e));return}throw e}return x.call(a.default,e,t,...n)});let S=a.default.openSync;a.default.openSync=(e,t,...n)=>(_(t)&&g(e),S.call(a.default,e,t,...n));let C=e=>{if(!e)return;let t=e.writeFile;t&&(e.writeFile=async(n,...r)=>(g(n),t.call(e,n,...r)));let n=e.rm;n&&(e.rm=async(t,...r)=>(g(t),n.call(e,t,...r)));let r=e.mkdir;r&&(e.mkdir=async(t,...n)=>(g(t),r.call(e,t,...n)));let i=e.rmdir;i&&(e.rmdir=async(t,...n)=>(g(t),i.call(e,t,...n)));let a=e.unlink;a&&(e.unlink=async(t,...n)=>(g(t),a.call(e,t,...n)));let o=e.appendFile;o&&(e.appendFile=async(t,...n)=>(g(t),o.call(e,t,...n)));let s=e.copyFile;s&&(e.copyFile=async(t,n,...r)=>(g(t),g(n),s.call(e,t,n,...r)));let c=e.rename;c&&(e.rename=async(t,n,...r)=>(g(t),g(n),c.call(e,t,n,...r)));let l=e.open;l&&(e.open=async(t,n,...r)=>(_(n)&&g(t),l.call(e,t,n,...r)))};C(a.default.promises),C(s.default)}function y(e,t){let n=t?` ${o.colors.green(`➜`)} ${o.colors.green(`Network:`)} ${o.colors.cyan(t)}`:` ${o.colors.green(`➜`)} ${o.colors.green(`Network:`)} ${o.colors.gray(`use --host to expose`)}`;return`
|
|
8
|
+
`+(0,o.double)([` ${o.colors.green(`➜`)} ${o.colors.green(`Local:`)} ${o.colors.bgGreen.gray(e)}`,n,``,` ${o.colors.dim(`press h + enter for help`)}`],{title:`boltdocs dev server`})+`
|
|
9
9
|
`}function b(e,t){let n=t?` ${o.colors.green(`➜`)} ${o.colors.green(`Network:`)} ${o.colors.cyan(t)}`:` ${o.colors.green(`➜`)} ${o.colors.green(`Network:`)} ${o.colors.gray(`use --host to expose`)}`;return`
|
|
10
|
-
`+(0,o.double)([` ${o.colors.green(`➜`)} ${o.colors.green(`Local:`)} ${o.colors.
|
|
10
|
+
`+(0,o.double)([` ${o.colors.green(`➜`)} ${o.colors.green(`Local:`)} ${o.colors.bgGreen.gray(e)}`,n],{title:`boltdocs preview server`})+`
|
|
11
11
|
`}function x(e,t){return`
|
|
12
12
|
`+(0,o.double)([(0,o.padCenter)(`🚀 Update available!`,50),``,` ${o.colors.dim(`Current:`)} ${o.colors.red(e)} ${o.colors.gray(`→`)} ${o.colors.green(t)}`,``,` ${o.colors.dim(`Run:`)} ${o.colors.bold(`npm install boltdocs@latest`)}`])+`
|
|
13
|
-
`}const S=(0,c.createRequire)(require(`url`).pathToFileURL(__filename).href);function C(e,t){let n=e.split(`-`)[0].split(`.`).map(Number),r=t.split(`-`)[0].split(`.`).map(Number);for(let e=0;e<Math.max(n.length,r.length);e++){let t=n[e]??0,i=r[e]??0;if(Number.isNaN(t)||Number.isNaN(i))return!1;if(t!==i)return t>i}return!1}async function w(){try{let e=new AbortController,t=setTimeout(()=>e.abort(),2e3),n=await fetch(`https://registry.npmjs.org/boltdocs/latest`,{signal:e.signal,headers:{Accept:`application/vnd.npm.install-v1+json`}});return clearTimeout(t),n.ok?(await n.json()).version??null:null}catch{return null}}async function T(){try{let e=(0,f.fileURLToPath)(require(`url`).pathToFileURL(__filename).href),t=i.default.dirname(e);for(let e=0;e<5;e++){let e=i.default.join(t,`package.json`);if(a.default.existsSync(e)){let t=JSON.parse(a.default.readFileSync(e,`utf-8`));if(t.name===`boltdocs`)return t.version}t=i.default.dirname(t)}}catch{}try{return S(`boltdocs/package.json`).version}catch{return`0.0.0`}}async function E(){let e=``;try{e=i.default.join(d.default.homedir(),`.boltdocs`,`update-check.json`)}catch{return}let t=0;try{if(a.default.existsSync(e)){let n=JSON.parse(a.default.readFileSync(e,`utf-8`));t=Number(n.lastCheck)||0}}catch{}let n=Date.now();if(n-t<864e5)return;try{a.default.mkdirSync(i.default.dirname(e),{recursive:!0}),a.default.writeFileSync(e,JSON.stringify({lastCheck:n}),`utf-8`)}catch{}let r=await T();if(r===`0.0.0`)return;let o=await w();o&&C(o,r)&&console.log(x(r,o))}let D=!1;async function O(e=process.cwd(),n={}){if(D)return;D=!0,E();let a;try{a=await r.n(i.default.resolve(e,`docs`),e),t.
|
|
14
|
-
`+(0,o.table)(
|
|
15
|
-
`),s.some(e=>e.status.includes(`Warning`))?(0,o.warn)(`⚠️ One or more plugins have security warnings. Review the flags above.`):(0,o.success)(`✓ All plugins passed the static security check!`)}const{emitWarning:
|
|
13
|
+
`}const S=(0,c.createRequire)(require(`url`).pathToFileURL(__filename).href);function C(e,t){let n=e.split(`-`)[0].split(`.`).map(Number),r=t.split(`-`)[0].split(`.`).map(Number);for(let e=0;e<Math.max(n.length,r.length);e++){let t=n[e]??0,i=r[e]??0;if(Number.isNaN(t)||Number.isNaN(i))return!1;if(t!==i)return t>i}return!1}async function w(){try{let e=new AbortController,t=setTimeout(()=>e.abort(),2e3),n=await fetch(`https://registry.npmjs.org/boltdocs/latest`,{signal:e.signal,headers:{Accept:`application/vnd.npm.install-v1+json`}});return clearTimeout(t),n.ok?(await n.json()).version??null:null}catch{return null}}async function T(){try{let e=(0,f.fileURLToPath)(require(`url`).pathToFileURL(__filename).href),t=i.default.dirname(e);for(let e=0;e<5;e++){let e=i.default.join(t,`package.json`);if(a.default.existsSync(e)){let t=JSON.parse(a.default.readFileSync(e,`utf-8`));if(t.name===`boltdocs`)return t.version}t=i.default.dirname(t)}}catch{}try{return S(`boltdocs/package.json`).version}catch{return`0.0.0`}}async function E(){let e=``;try{e=i.default.join(d.default.homedir(),`.boltdocs`,`update-check.json`)}catch{return}let t=0;try{if(a.default.existsSync(e)){let n=JSON.parse(a.default.readFileSync(e,`utf-8`));t=Number(n.lastCheck)||0}}catch{}let n=Date.now();if(n-t<864e5)return;try{a.default.mkdirSync(i.default.dirname(e),{recursive:!0}),a.default.writeFileSync(e,JSON.stringify({lastCheck:n}),`utf-8`)}catch{}let r=await T();if(r===`0.0.0`)return;let o=await w();o&&C(o,r)&&console.log(x(r,o))}let D=!1;async function O(e=process.cwd(),n={}){if(D)return;D=!0,E();let a;try{a=await r.n(i.default.resolve(e,`docs`),e),t.m(a,e)}catch{}try{let r=await t.n(e,`development`,a);r.logLevel=`warn`,r.clearScreen=!1,n.port!==void 0&&(r.server=r.server||{},r.server.port=Number(n.port)),n.host!==void 0&&(r.server=r.server||{},r.server.host=n.host),n.force&&(r.optimizeDeps=r.optimizeDeps||{},r.optimizeDeps.force=!0);let i=await(0,l.createServer)(r);await i.listen();let o=i.resolvedUrls;console.log(y(o?.local?.[0]??`http://localhost:${n.port??5173}`,o?.network?.[0]??null)),i.bindCLIShortcuts({print:!1})}catch(e){(0,o.error)(`Failed to start dev server:`,e),process.exit(1)}}function k(e){return e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(1)}s`}function A(e){return e.map(e=>({label:e.name,status:e.success?`success`:`error`,details:e.details}))}async function j(e=process.cwd(),r={}){E();let i=r.turbo||process.env.BOLTDOCS_TURBO===`true`;i&&console.log(o.colors.yellow(`⚠ experimental — Turbo mode enabled, faster parser active`));try{let r=await t.f().run({root:e,timing:{},turbo:i});r.success||((0,o.error)(`Build failed at step "${r.failedStep}":`,r.error),await n.flushCache(),process.exit(1));let a=A(r.stepResults);console.log(``),console.log((0,o.steps)(a)),console.log((0,o.divider)(`═`,44)),console.log(` ${o.colors.dim(`Total`.padEnd(20))} ${o.colors.cyan(k(r.timing.total))}`),console.log(``);let s=r.stepResults.find(e=>e.name===`Build metrics`)?.metrics;if(s){let e=e=>(e/1024).toFixed(0),t=e=>(e/1024/1024).toFixed(1),n=s.jsSize>1024*1024?t(s.jsSize)+` MB`:e(s.jsSize)+` kB`,r=s.cssSize>1024*1024?t(s.cssSize)+` MB`:e(s.cssSize)+` kB`;console.log((0,o.table)([`Metric`,`Result`],[[`Build Time`,k(s.buildTime)],[`Pages`,String(s.totalPages)],[`JavaScript`,n],[`CSS`,r]],{style:`round`,headerSeparator:!0})),console.log(``)}let c=k(r.timing.total);console.log((0,o.double)([`boltdocs build completed in ${c}`,``,`${o.colors.cyan(`boltdocs`)} documentation is ready at ${o.colors.green(`dist/`)}`])),await n.flushCache(),process.exit(0)}catch(e){(0,o.error)(`Build failed:`,e),await n.flushCache(),process.exit(1)}}async function M(e=process.cwd(),n={}){try{let r=await t.n(e,`production`);r.logLevel=`warn`,r.clearScreen=!1,n.port!==void 0&&(r.preview=r.preview||{},r.preview.port=Number(n.port)),n.host!==void 0&&(r.preview=r.preview||{},r.preview.host=n.host);let i=(await(0,p.preview)(r)).resolvedUrls;console.log(b(i?.local?.[0]??`http://localhost:${n.port??4173}`,i?.network?.[0]??null))}catch(e){(0,o.error)(`Failed to start preview server:`,e),process.exit(1)}}function N(e){let t=[];if(!a.default.existsSync(e))return t;try{let n=a.default.readdirSync(e);for(let r of n){let n=i.default.join(e,r);a.default.statSync(n).isDirectory()?r!==`node_modules`&&r!==`.git`&&r!==`dist`&&r!==`coverage`&&t.push(...N(n)):/\.(js|mjs|cjs|ts|tsx|jsx)$/.test(r)&&t.push(n)}}catch{}return t}async function P(e=process.cwd()){(0,o.info)(`Starting static security audit of Boltdocs plugins...`);let t;try{t=await r.n(i.default.resolve(e,`docs`),e)}catch(e){(0,o.error)(`Failed to load Boltdocs configuration for audit:`,e),process.exit(1)}let n=t.plugins||[];if(n.length===0){(0,o.success)(`No plugins configured. Nothing to audit.`);return}let s=[];for(let t of n){if(!t.name)continue;let n=null;try{let r=(0,c.createRequire)(i.default.resolve(e,`package.json`)).resolve(`${t.name}/package.json`);n=i.default.dirname(r)}catch{let r=i.default.resolve(e,`node_modules`,t.name);a.default.existsSync(r)&&(n=r)}if(!n){s.push({name:o.colors.cyan(t.name),status:o.colors.red(`❓ Unresolved`),details:`Could not locate plugin files in node_modules.`});continue}let r=N(n),l=[];for(let e of r)try{let t=a.default.readFileSync(e,`utf-8`);t.includes(`fetch(`)&&l.push(`fetch`),t.includes(`axios`)&&l.push(`axios`),t.includes(`http.request`)&&l.push(`http.request`),t.includes(`https.request`)&&l.push(`https.request`),t.includes(`process.env`)&&l.push(`process.env`)}catch{}let u=Array.from(new Set(l));u.length>0?s.push({name:o.colors.cyan(t.name),status:o.colors.yellow(`⚠️ Warning`),details:`Contains network/env accesses: ${o.colors.bold(u.join(`, `))}. Ensure you trust the author.`}):s.push({name:o.colors.cyan(t.name),status:o.colors.green(`✅ Clean`),details:`No external network calls or env accesses detected.`})}let l=[`Plugin`,`Status`,`Audit Notes`],u=s.map(e=>[e.name,e.status,e.details]);console.log(`
|
|
14
|
+
`+(0,o.table)(l,u)+`
|
|
15
|
+
`),s.some(e=>e.status.includes(`Warning`))?(0,o.warn)(`⚠️ One or more plugins have security warnings. Review the flags above.`):(0,o.success)(`✓ All plugins passed the static security check!`)}const{emitWarning:F}=process;process.emitWarning=function(e,...t){if(!(e&&typeof e==`object`&&e.code===`DEP0205`)&&!(typeof e==`string`&&t.includes(`DEP0205`)))return Reflect.apply(F,process,[e,...t])},v(),(0,o.configure)({prefix:`boltdocs`});const I=(0,u.default)(`boltdocs`);I.command(`dev [root]`,`Start development server`).option(`--port <port>`,`Port to listen on`).option(`--host [host]`,`Host to bind to`).option(`--force`,`Force Vite to re-optimize dependencies`).action(O),I.command(`[root]`,`Start development server`).option(`--port <port>`,`Port to listen on`).option(`--host [host]`,`Host to bind to`).option(`--force`,`Force Vite to re-optimize dependencies`).action(O),I.command(`build [root]`,`Build for production`).option(`--turbo`,`Enable experimental turbo mode (faster parser, critical CSS, and more)`).action(j),I.command(`preview [root]`,`Preview production build`).option(`--port <port>`,`Port to listen on`).option(`--host [host]`,`Host to bind to`).action(M),I.command(`audit [root]`,`Audit configured plugins for security warnings`).action(P),I.command(`doctor [root]`,`Check the health of your documentation`).option(`--fix`,`Automatically fix broken internal links and sync translations`).option(`--check-external`,`Verify external links (slower)`).option(`--init`,`Initialize doctor.json with default configuration`).option(`--budget`,`Check build performance against configured budgets`).action(async(e,t)=>{let{doctorAction:n}=await Promise.resolve().then(()=>require(`../doctor-BBtmNJE0.cjs`));await n(e,t)}),I.command(`generate-changelog <file>`,`Generate changelog documentation from CHANGELOG.md`).option(`-o, --output <path>`,`Output folder (default: docs/changelog)`,{default:`docs/changelog`}).option(`-t, --title <text>`,`Title for changelog pages`,{default:`Changelog`}).option(`--infer-tab`,`Infer tab from folder name (default: true)`,{default:!0}).option(`-l, --limit <number>`,`Limit number of versions to generate`).action(async(e,t)=>{let{generateChangelog:n}=await Promise.resolve().then(()=>require(`../generator-COepVWGi.cjs`));await n(e,{output:t.output,title:t.title,inferTab:t.inferTab,limit:t.limit?parseInt(String(t.limit),10):void 0})}),I.help(),I.version(`3.0.0`),I.parse(),exports.t=E;
|
package/dist/node/cli-entry.mjs
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
* Copyright (c) 2026 Jesus Alcala
|
|
5
5
|
* Licensed under the MIT License.
|
|
6
6
|
*/
|
|
7
|
-
import{
|
|
8
|
-
`+
|
|
9
|
-
`}function
|
|
10
|
-
`+
|
|
11
|
-
`}function
|
|
12
|
-
`+
|
|
13
|
-
`}const
|
|
14
|
-
`+
|
|
15
|
-
`),r.some(e=>e.status.includes(`Warning`))?
|
|
7
|
+
import{d as e,n as t,p as n}from"../node-C8725aw7.mjs";import{flushCache as r}from"./cache.mjs";import{r as i}from"../config-CCXp3aXO.mjs";import{createRequire as a}from"node:module";import o from"node:path";import s from"node:fs";import{colors as c,configure as l,divider as u,double as d,error as f,info as p,padCenter as m,steps as h,success as g,table as _,warn as v}from"@bdocs/dui";import y from"node:fs/promises";import{createServer as b}from"@bdocs/ssg/node";import x from"cac";import S from"node:os";import{fileURLToPath as C}from"node:url";import{preview as w}from"vite";function T(e){let t=e;for(;t&&t!==o.dirname(t);){if(s.existsSync(o.join(t,`.git`))||s.existsSync(o.join(t,`pnpm-workspace.yaml`)))return t;t=o.dirname(t)}t=e;let n=e;for(;t&&t!==o.dirname(t);)s.existsSync(o.join(t,`package.json`))&&(n=t),t=o.dirname(t);return n}let E=T(process.cwd());function D(e){if(!e)return;let t;if(typeof e==`string`)t=e;else if(e instanceof URL){if(e.protocol!==`file:`)return;t=e.pathname}else if(Buffer.isBuffer(e))t=e.toString();else return;let n=o.resolve(E,t),r=o.relative(E,n),i=r.startsWith(`..`)||o.isAbsolute(r),a=n.split(o.sep),s=a.some(e=>e.startsWith(`.env`)),c=a.some((e,t)=>{if(e===`node_modules`){let e=a[t+1];return!e||!e.startsWith(`.`)}return!1});if(i||s||c)throw Error(`[Boltdocs Security] Write/delete operation blocked on path: "${n}". Modifications are restricted to the project root, and cannot access .env or non-cache node_modules folders.`)}function O(e){return e==null?!1:typeof e==`number`?e!==0:typeof e==`string`?e.includes(`w`)||e.includes(`a`)||e.includes(`+`):!0}function k(){let e=s.writeFile;s.writeFile=((t,...n)=>{try{D(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return e.call(s,t,...n)});let t=s.writeFileSync;s.writeFileSync=(e,...n)=>(D(e),t.call(s,e,...n));let n=s.rm;s.rm=((e,...t)=>{try{D(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return n.call(s,e,...t)});let r=s.rmSync;s.rmSync=(e,...t)=>(D(e),r.call(s,e,...t));let i=s.unlink;s.unlink=((e,...t)=>{try{D(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return i.call(s,e,...t)});let a=s.unlinkSync;s.unlinkSync=(e,...t)=>(D(e),a.call(s,e,...t));let o=s.mkdir;s.mkdir=((e,...t)=>{try{D(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return o.call(s,e,...t)});let c=s.mkdirSync;s.mkdirSync=(e,...t)=>(D(e),c.call(s,e,...t));let l=s.rmdir;s.rmdir=((e,...t)=>{try{D(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return l.call(s,e,...t)});let u=s.rmdirSync;s.rmdirSync=(e,...t)=>(D(e),u.call(s,e,...t));let d=s.appendFile;s.appendFile=((e,...t)=>{try{D(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return d.call(s,e,...t)});let f=s.appendFileSync;s.appendFileSync=(e,...t)=>(D(e),f.call(s,e,...t));let p=s.copyFile;s.copyFile=((e,t,...n)=>{try{D(e),D(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return p.call(s,e,t,...n)});let m=s.copyFileSync;s.copyFileSync=(e,t,...n)=>(D(e),D(t),m.call(s,e,t,...n));let h=s.rename;s.rename=((e,t,...n)=>{try{D(e),D(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return h.call(s,e,t,...n)});let g=s.renameSync;s.renameSync=(e,t,...n)=>(D(e),D(t),g.call(s,e,t,...n));let _=s.createWriteStream;s.createWriteStream=(e,...t)=>(D(e),_.call(s,e,...t));let v=s.open;s.open=((e,t,...n)=>{if(O(typeof t==`function`?void 0:t))try{D(e)}catch(e){let r=n[n.length-1],i=typeof t==`function`?t:typeof r==`function`?r:void 0;if(i){process.nextTick(()=>i(e));return}throw e}return v.call(s,e,t,...n)});let b=s.openSync;s.openSync=(e,t,...n)=>(O(t)&&D(e),b.call(s,e,t,...n));let x=e=>{if(!e)return;let t=e.writeFile;t&&(e.writeFile=async(n,...r)=>(D(n),t.call(e,n,...r)));let n=e.rm;n&&(e.rm=async(t,...r)=>(D(t),n.call(e,t,...r)));let r=e.mkdir;r&&(e.mkdir=async(t,...n)=>(D(t),r.call(e,t,...n)));let i=e.rmdir;i&&(e.rmdir=async(t,...n)=>(D(t),i.call(e,t,...n)));let a=e.unlink;a&&(e.unlink=async(t,...n)=>(D(t),a.call(e,t,...n)));let o=e.appendFile;o&&(e.appendFile=async(t,...n)=>(D(t),o.call(e,t,...n)));let s=e.copyFile;s&&(e.copyFile=async(t,n,...r)=>(D(t),D(n),s.call(e,t,n,...r)));let c=e.rename;c&&(e.rename=async(t,n,...r)=>(D(t),D(n),c.call(e,t,n,...r)));let l=e.open;l&&(e.open=async(t,n,...r)=>(O(n)&&D(t),l.call(e,t,n,...r)))};x(s.promises),x(y)}function A(e,t){let n=t?` ${c.green(`➜`)} ${c.green(`Network:`)} ${c.cyan(t)}`:` ${c.green(`➜`)} ${c.green(`Network:`)} ${c.gray(`use --host to expose`)}`;return`
|
|
8
|
+
`+d([` ${c.green(`➜`)} ${c.green(`Local:`)} ${c.bgGreen.gray(e)}`,n,``,` ${c.dim(`press h + enter for help`)}`],{title:`boltdocs dev server`})+`
|
|
9
|
+
`}function j(e,t){let n=t?` ${c.green(`➜`)} ${c.green(`Network:`)} ${c.cyan(t)}`:` ${c.green(`➜`)} ${c.green(`Network:`)} ${c.gray(`use --host to expose`)}`;return`
|
|
10
|
+
`+d([` ${c.green(`➜`)} ${c.green(`Local:`)} ${c.bgGreen.gray(e)}`,n],{title:`boltdocs preview server`})+`
|
|
11
|
+
`}function M(e,t){return`
|
|
12
|
+
`+d([m(`🚀 Update available!`,50),``,` ${c.dim(`Current:`)} ${c.red(e)} ${c.gray(`→`)} ${c.green(t)}`,``,` ${c.dim(`Run:`)} ${c.bold(`npm install boltdocs@latest`)}`])+`
|
|
13
|
+
`}const N=a(import.meta.url);function P(e,t){let n=e.split(`-`)[0].split(`.`).map(Number),r=t.split(`-`)[0].split(`.`).map(Number);for(let e=0;e<Math.max(n.length,r.length);e++){let t=n[e]??0,i=r[e]??0;if(Number.isNaN(t)||Number.isNaN(i))return!1;if(t!==i)return t>i}return!1}async function F(){try{let e=new AbortController,t=setTimeout(()=>e.abort(),2e3),n=await fetch(`https://registry.npmjs.org/boltdocs/latest`,{signal:e.signal,headers:{Accept:`application/vnd.npm.install-v1+json`}});return clearTimeout(t),n.ok?(await n.json()).version??null:null}catch{return null}}async function I(){try{let e=C(import.meta.url),t=o.dirname(e);for(let e=0;e<5;e++){let e=o.join(t,`package.json`);if(s.existsSync(e)){let t=JSON.parse(s.readFileSync(e,`utf-8`));if(t.name===`boltdocs`)return t.version}t=o.dirname(t)}}catch{}try{return N(`boltdocs/package.json`).version}catch{return`0.0.0`}}async function L(){let e=``;try{e=o.join(S.homedir(),`.boltdocs`,`update-check.json`)}catch{return}let t=0;try{if(s.existsSync(e)){let n=JSON.parse(s.readFileSync(e,`utf-8`));t=Number(n.lastCheck)||0}}catch{}let n=Date.now();if(n-t<864e5)return;try{s.mkdirSync(o.dirname(e),{recursive:!0}),s.writeFileSync(e,JSON.stringify({lastCheck:n}),`utf-8`)}catch{}let r=await I();if(r===`0.0.0`)return;let i=await F();i&&P(i,r)&&console.log(M(r,i))}let R=!1;async function z(e=process.cwd(),r={}){if(R)return;R=!0,L();let a;try{a=await i(o.resolve(e,`docs`),e),n(a,e)}catch{}try{let n=await t(e,`development`,a);n.logLevel=`warn`,n.clearScreen=!1,r.port!==void 0&&(n.server=n.server||{},n.server.port=Number(r.port)),r.host!==void 0&&(n.server=n.server||{},n.server.host=r.host),r.force&&(n.optimizeDeps=n.optimizeDeps||{},n.optimizeDeps.force=!0);let i=await b(n);await i.listen();let o=i.resolvedUrls;console.log(A(o?.local?.[0]??`http://localhost:${r.port??5173}`,o?.network?.[0]??null)),i.bindCLIShortcuts({print:!1})}catch(e){f(`Failed to start dev server:`,e),process.exit(1)}}function B(e){return e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(1)}s`}function V(e){return e.map(e=>({label:e.name,status:e.success?`success`:`error`,details:e.details}))}async function H(t=process.cwd(),n={}){L();let i=n.turbo||process.env.BOLTDOCS_TURBO===`true`;i&&console.log(c.yellow(`⚠ experimental — Turbo mode enabled, faster parser active`));try{let n=await e().run({root:t,timing:{},turbo:i});n.success||(f(`Build failed at step "${n.failedStep}":`,n.error),await r(),process.exit(1));let a=V(n.stepResults);console.log(``),console.log(h(a)),console.log(u(`═`,44)),console.log(` ${c.dim(`Total`.padEnd(20))} ${c.cyan(B(n.timing.total))}`),console.log(``);let o=n.stepResults.find(e=>e.name===`Build metrics`)?.metrics;if(o){let e=e=>(e/1024).toFixed(0),t=e=>(e/1024/1024).toFixed(1),n=o.jsSize>1024*1024?t(o.jsSize)+` MB`:e(o.jsSize)+` kB`,r=o.cssSize>1024*1024?t(o.cssSize)+` MB`:e(o.cssSize)+` kB`;console.log(_([`Metric`,`Result`],[[`Build Time`,B(o.buildTime)],[`Pages`,String(o.totalPages)],[`JavaScript`,n],[`CSS`,r]],{style:`round`,headerSeparator:!0})),console.log(``)}let s=B(n.timing.total);console.log(d([`boltdocs build completed in ${s}`,``,`${c.cyan(`boltdocs`)} documentation is ready at ${c.green(`dist/`)}`])),await r(),process.exit(0)}catch(e){f(`Build failed:`,e),await r(),process.exit(1)}}async function U(e=process.cwd(),n={}){try{let r=await t(e,`production`);r.logLevel=`warn`,r.clearScreen=!1,n.port!==void 0&&(r.preview=r.preview||{},r.preview.port=Number(n.port)),n.host!==void 0&&(r.preview=r.preview||{},r.preview.host=n.host);let i=(await w(r)).resolvedUrls;console.log(j(i?.local?.[0]??`http://localhost:${n.port??4173}`,i?.network?.[0]??null))}catch(e){f(`Failed to start preview server:`,e),process.exit(1)}}function W(e){let t=[];if(!s.existsSync(e))return t;try{let n=s.readdirSync(e);for(let r of n){let n=o.join(e,r);s.statSync(n).isDirectory()?r!==`node_modules`&&r!==`.git`&&r!==`dist`&&r!==`coverage`&&t.push(...W(n)):/\.(js|mjs|cjs|ts|tsx|jsx)$/.test(r)&&t.push(n)}}catch{}return t}async function G(e=process.cwd()){p(`Starting static security audit of Boltdocs plugins...`);let t;try{t=await i(o.resolve(e,`docs`),e)}catch(e){f(`Failed to load Boltdocs configuration for audit:`,e),process.exit(1)}let n=t.plugins||[];if(n.length===0){g(`No plugins configured. Nothing to audit.`);return}let r=[];for(let t of n){if(!t.name)continue;let n=null;try{let r=a(o.resolve(e,`package.json`)).resolve(`${t.name}/package.json`);n=o.dirname(r)}catch{let r=o.resolve(e,`node_modules`,t.name);s.existsSync(r)&&(n=r)}if(!n){r.push({name:c.cyan(t.name),status:c.red(`❓ Unresolved`),details:`Could not locate plugin files in node_modules.`});continue}let i=W(n),l=[];for(let e of i)try{let t=s.readFileSync(e,`utf-8`);t.includes(`fetch(`)&&l.push(`fetch`),t.includes(`axios`)&&l.push(`axios`),t.includes(`http.request`)&&l.push(`http.request`),t.includes(`https.request`)&&l.push(`https.request`),t.includes(`process.env`)&&l.push(`process.env`)}catch{}let u=Array.from(new Set(l));u.length>0?r.push({name:c.cyan(t.name),status:c.yellow(`⚠️ Warning`),details:`Contains network/env accesses: ${c.bold(u.join(`, `))}. Ensure you trust the author.`}):r.push({name:c.cyan(t.name),status:c.green(`✅ Clean`),details:`No external network calls or env accesses detected.`})}let l=[`Plugin`,`Status`,`Audit Notes`],u=r.map(e=>[e.name,e.status,e.details]);console.log(`
|
|
14
|
+
`+_(l,u)+`
|
|
15
|
+
`),r.some(e=>e.status.includes(`Warning`))?v(`⚠️ One or more plugins have security warnings. Review the flags above.`):g(`✓ All plugins passed the static security check!`)}const{emitWarning:K}=process;process.emitWarning=function(e,...t){if(!(e&&typeof e==`object`&&e.code===`DEP0205`)&&!(typeof e==`string`&&t.includes(`DEP0205`)))return Reflect.apply(K,process,[e,...t])},k(),l({prefix:`boltdocs`});const q=x(`boltdocs`);q.command(`dev [root]`,`Start development server`).option(`--port <port>`,`Port to listen on`).option(`--host [host]`,`Host to bind to`).option(`--force`,`Force Vite to re-optimize dependencies`).action(z),q.command(`[root]`,`Start development server`).option(`--port <port>`,`Port to listen on`).option(`--host [host]`,`Host to bind to`).option(`--force`,`Force Vite to re-optimize dependencies`).action(z),q.command(`build [root]`,`Build for production`).option(`--turbo`,`Enable experimental turbo mode (faster parser, critical CSS, and more)`).action(H),q.command(`preview [root]`,`Preview production build`).option(`--port <port>`,`Port to listen on`).option(`--host [host]`,`Host to bind to`).action(U),q.command(`audit [root]`,`Audit configured plugins for security warnings`).action(G),q.command(`doctor [root]`,`Check the health of your documentation`).option(`--fix`,`Automatically fix broken internal links and sync translations`).option(`--check-external`,`Verify external links (slower)`).option(`--init`,`Initialize doctor.json with default configuration`).option(`--budget`,`Check build performance against configured budgets`).action(async(e,t)=>{let{doctorAction:n}=await import(`../doctor-DOAbSaiL.mjs`).then(e=>e.t);await n(e,t)}),q.command(`generate-changelog <file>`,`Generate changelog documentation from CHANGELOG.md`).option(`-o, --output <path>`,`Output folder (default: docs/changelog)`,{default:`docs/changelog`}).option(`-t, --title <text>`,`Title for changelog pages`,{default:`Changelog`}).option(`--infer-tab`,`Infer tab from folder name (default: true)`,{default:!0}).option(`-l, --limit <number>`,`Limit number of versions to generate`).action(async(e,t)=>{let{generateChangelog:n}=await import(`../generator-CcOBN5vI.mjs`);await n(e,{output:t.output,title:t.title,inferTab:t.inferTab,limit:t.limit?parseInt(String(t.limit),10):void 0})}),q.help(),q.version(`3.0.0`),q.parse();export{L as t};
|
package/dist/node/index.cjs
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}})
|
|
6
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../node-B5hu_6qj.cjs`),t=require(`../utils-D6Xtj0FZ.cjs`),n=require(`./cache.cjs`),r=require(`../routes-BgoIB5wb.cjs`),i=require(`../config-DlGoEM9D.cjs`),a=require(`../handler-XX7cLTqe.cjs`),o=require(`../adapters-DvmtpdSF.cjs`);exports.BoltdocsPluginStore=e.g,exports.PluginCompatibilityError=e._,exports.PluginError=e.v,exports.PluginHookError=e.y,exports.PluginLifecycleManager=e.a,exports.PluginValidationError=e.b,exports.createPlugin=e.i,exports.createViteConfig=e.n,exports.default=e.t,exports.defineConfig=i.a,exports.flushCache=n.flushCache,exports.generateEntryCode=e.x,exports.generateRoutes=r.t,exports.handleAwsFeedback=o.t,exports.handleFeedback=a.t,exports.handleNetlifyFeedback=o.r,exports.handleVercelFeedback=o.i,exports.handleWebFeedback=o.n,exports.invalidateRouteCache=r.r,exports.normalizePath=t.u,exports.resolveConfig=i.n,exports.sanitizeFilename=t.f,exports.validatePlugins=e.h;var s=require(`@bdocs/unist-utils`);Object.keys(s).forEach(function(e){e!==`default`&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return s[e]}})});
|
package/dist/node/index.d.cts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
import { flushCache } from "./cache.cjs";
|
|
3
3
|
import { i as handleVercelFeedback, n as handleWebFeedback, r as handleNetlifyFeedback, t as handleAwsFeedback } from "../index-aWC0KjDF.cjs";
|
|
4
|
-
import { a as
|
|
4
|
+
import { a as BoltdocsThemeConfig, c as PluginLogger, d as PluginTransformMiddleware, f as RouteMeta, i as BoltdocsPlugin, l as PluginMeta, n as defineConfig, o as PluginContext, r as BoltdocsConfig, s as PluginLifecycleHooks, t as resolveConfig, u as PluginStore } from "../config-BpzaPsJj.cjs";
|
|
5
5
|
import { InlineConfig, Plugin } from "vite";
|
|
6
|
-
|
|
6
|
+
export * from "@bdocs/unist-utils";
|
|
7
|
+
|
|
8
|
+
//#region \0rolldown/runtime.js
|
|
9
|
+
//#endregion
|
|
7
10
|
//#region src/node/plugin/types.d.ts
|
|
8
11
|
/**
|
|
9
12
|
* Configuration options specifically for the Boltdocs Vite plugin.
|
|
@@ -54,6 +57,8 @@ interface SecureBoltdocsPlugin {
|
|
|
54
57
|
rehypePlugins?: unknown[];
|
|
55
58
|
vitePlugins?: Plugin[];
|
|
56
59
|
components?: Record<string, string>;
|
|
60
|
+
metadata?: Record<string, unknown>;
|
|
61
|
+
middleware?: PluginTransformMiddleware[];
|
|
57
62
|
hooks?: PluginLifecycleHooks;
|
|
58
63
|
}
|
|
59
64
|
//#endregion
|
|
@@ -113,181 +118,21 @@ declare class PluginLifecycleManager {
|
|
|
113
118
|
private outDir;
|
|
114
119
|
constructor(plugins: SecureBoltdocsPlugin[], config: BoltdocsConfig, docsDir?: string, rootDir?: string, routes?: RouteMeta[], outDir?: string);
|
|
115
120
|
runHook(hookName: keyof PluginLifecycleHooks, ...args: unknown[]): Promise<void>;
|
|
116
|
-
runChain<TParams
|
|
121
|
+
runChain<TParams extends Record<string, unknown>>(hookName: keyof PluginLifecycleHooks, initialParams: TParams): Promise<TParams>;
|
|
122
|
+
/**
|
|
123
|
+
* Run registered transform middleware in `enforce` order over a chain of
|
|
124
|
+
* params. Middleware registered via `ctx.middleware.add()` from lifecycle
|
|
125
|
+
* hooks or declared statically via `BoltdocsPlugin.middleware` are all
|
|
126
|
+
* collected. Execution respects `__signal: 'skip'` and `__signal: 'break'`.
|
|
127
|
+
*/
|
|
128
|
+
runMiddlewareChain<TParams extends Record<string, unknown>>(hookName: 'transformSource' | 'transformMdx' | 'transformHtml', initialParams: TParams): Promise<TParams>;
|
|
117
129
|
private getSortedPlugins;
|
|
118
130
|
private createStep;
|
|
119
131
|
private createContext;
|
|
132
|
+
private createGenericContext;
|
|
120
133
|
private createLogger;
|
|
121
134
|
}
|
|
122
135
|
//#endregion
|
|
123
|
-
//#region ../../node_modules/.pnpm/@types+unist@3.0.3/node_modules/@types/unist/index.d.ts
|
|
124
|
-
// ## Interfaces
|
|
125
|
-
/**
|
|
126
|
-
* Info associated with nodes by the ecosystem.
|
|
127
|
-
*
|
|
128
|
-
* This space is guaranteed to never be specified by unist or specifications
|
|
129
|
-
* implementing unist.
|
|
130
|
-
* But you can use it in utilities and plugins to store data.
|
|
131
|
-
*
|
|
132
|
-
* This type can be augmented to register custom data.
|
|
133
|
-
* For example:
|
|
134
|
-
*
|
|
135
|
-
* ```ts
|
|
136
|
-
* declare module 'unist' {
|
|
137
|
-
* interface Data {
|
|
138
|
-
* // `someNode.data.myId` is typed as `number | undefined`
|
|
139
|
-
* myId?: number | undefined
|
|
140
|
-
* }
|
|
141
|
-
* }
|
|
142
|
-
* ```
|
|
143
|
-
*/
|
|
144
|
-
interface Data {}
|
|
145
|
-
/**
|
|
146
|
-
* One place in a source file.
|
|
147
|
-
*/
|
|
148
|
-
interface Point {
|
|
149
|
-
/**
|
|
150
|
-
* Line in a source file (1-indexed integer).
|
|
151
|
-
*/
|
|
152
|
-
line: number;
|
|
153
|
-
/**
|
|
154
|
-
* Column in a source file (1-indexed integer).
|
|
155
|
-
*/
|
|
156
|
-
column: number;
|
|
157
|
-
/**
|
|
158
|
-
* Character in a source file (0-indexed integer).
|
|
159
|
-
*/
|
|
160
|
-
offset?: number | undefined;
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Position of a node in a source document.
|
|
164
|
-
*
|
|
165
|
-
* A position is a range between two points.
|
|
166
|
-
*/
|
|
167
|
-
interface Position {
|
|
168
|
-
/**
|
|
169
|
-
* Place of the first character of the parsed source region.
|
|
170
|
-
*/
|
|
171
|
-
start: Point;
|
|
172
|
-
/**
|
|
173
|
-
* Place of the first character after the parsed source region.
|
|
174
|
-
*/
|
|
175
|
-
end: Point;
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Abstract unist node.
|
|
179
|
-
*
|
|
180
|
-
* The syntactic unit in unist syntax trees are called nodes.
|
|
181
|
-
*
|
|
182
|
-
* This interface is supposed to be extended.
|
|
183
|
-
* If you can use {@link Literal} or {@link Parent}, you should.
|
|
184
|
-
* But for example in markdown, a `thematicBreak` (`***`), is neither literal
|
|
185
|
-
* nor parent, but still a node.
|
|
186
|
-
*/
|
|
187
|
-
interface Node {
|
|
188
|
-
/**
|
|
189
|
-
* Node type.
|
|
190
|
-
*/
|
|
191
|
-
type: string;
|
|
192
|
-
/**
|
|
193
|
-
* Info from the ecosystem.
|
|
194
|
-
*/
|
|
195
|
-
data?: Data | undefined;
|
|
196
|
-
/**
|
|
197
|
-
* Position of a node in a source document.
|
|
198
|
-
*
|
|
199
|
-
* Nodes that are generated (not in the original source document) must not
|
|
200
|
-
* have a position.
|
|
201
|
-
*/
|
|
202
|
-
position?: Position | undefined;
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Abstract unist node that contains other nodes (*children*).
|
|
206
|
-
*
|
|
207
|
-
* This interface is supposed to be extended.
|
|
208
|
-
*
|
|
209
|
-
* For example, in XML, an element is a parent of different things, such as
|
|
210
|
-
* comments, text, and further elements.
|
|
211
|
-
*/
|
|
212
|
-
interface Parent extends Node {
|
|
213
|
-
/**
|
|
214
|
-
* List of children.
|
|
215
|
-
*/
|
|
216
|
-
children: Node[];
|
|
217
|
-
}
|
|
218
|
-
//#endregion
|
|
219
|
-
//#region src/node/mdx/types.d.ts
|
|
220
|
-
interface MdxJsxAttributeValueExpression {
|
|
221
|
-
type: 'mdxJsxAttributeValueExpression';
|
|
222
|
-
value: string;
|
|
223
|
-
data?: {
|
|
224
|
-
estree?: any;
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
interface MdxJsxAttribute {
|
|
228
|
-
type: 'mdxJsxAttribute';
|
|
229
|
-
name: string;
|
|
230
|
-
value?: string | MdxJsxAttributeValueExpression;
|
|
231
|
-
}
|
|
232
|
-
interface MdxJsxElement {
|
|
233
|
-
type: 'mdxJsxFlowElement' | 'mdxJsxTextElement';
|
|
234
|
-
name: string | null;
|
|
235
|
-
attributes?: MdxJsxAttribute[];
|
|
236
|
-
children?: any[];
|
|
237
|
-
}
|
|
238
|
-
interface ElementNode {
|
|
239
|
-
type: 'element';
|
|
240
|
-
tagName: string;
|
|
241
|
-
properties?: Record<string, any>;
|
|
242
|
-
children?: any[];
|
|
243
|
-
}
|
|
244
|
-
//#endregion
|
|
245
|
-
//#region src/node/plugins/plugin-utils.d.ts
|
|
246
|
-
interface NodeWithHProperties extends Node {
|
|
247
|
-
data?: {
|
|
248
|
-
hProperties?: Record<string, unknown>;
|
|
249
|
-
[key: string]: unknown;
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* General, type-safe utility to visit nodes in the AST (MDAST/HAST/MDX).
|
|
254
|
-
*/
|
|
255
|
-
declare function visitNodes<T extends Node>(tree: Node, test: string | string[] | ((node: Node) => boolean), callback: (node: T, index: number, parent: Parent) => void | number | boolean | symbol): void;
|
|
256
|
-
declare function visitRehypeElements(tree: Node, tagName: string, callback: (node: ElementNode, index: number, parent: Parent) => void | number | boolean | symbol): void;
|
|
257
|
-
declare function visitMdxElements(tree: Node, name: string | string[], callback: (node: MdxJsxElement, index: number, parent: Parent) => void | number | boolean | symbol): void;
|
|
258
|
-
declare function setNodeProperty(node: NodeWithHProperties, key: string, value: unknown): void;
|
|
259
|
-
declare function getNodeProperty(node: NodeWithHProperties, key: string): unknown;
|
|
260
|
-
declare function createMdxAttribute(name: string, value: unknown): MdxJsxAttribute;
|
|
261
|
-
declare function createRehypeElement(tagName: string, properties?: Record<string, unknown>, children?: Node[]): ElementNode;
|
|
262
|
-
declare function createMdxElement(name: string, attributes?: Record<string, unknown>, children?: Node[], isFlow?: boolean): MdxJsxElement;
|
|
263
|
-
declare function visitRemarkHeadings(tree: Node, callback: (node: any, index: number, parent: Parent) => void | number | boolean | symbol): void;
|
|
264
|
-
declare function visitRemarkLinks(tree: Node, callback: (node: any, index: number, parent: Parent) => void | number | boolean | symbol): void;
|
|
265
|
-
declare function addNodeClass(node: ElementNode, className: string): void;
|
|
266
|
-
declare function removeNodeClass(node: ElementNode, className: string): void;
|
|
267
|
-
declare function hasNodeClass(node: ElementNode, className: string): boolean;
|
|
268
|
-
//#endregion
|
|
269
|
-
//#region src/node/mdx/constants.d.ts
|
|
270
|
-
declare const MDX_NODES: {
|
|
271
|
-
readonly ROOT: "root";
|
|
272
|
-
readonly ELEMENT: "element";
|
|
273
|
-
readonly TEXT: "text";
|
|
274
|
-
readonly COMMENT: "comment";
|
|
275
|
-
readonly CODE: "code";
|
|
276
|
-
readonly INLINE_CODE: "inlineCode";
|
|
277
|
-
readonly HEADING: "heading";
|
|
278
|
-
readonly PARAGRAPH: "paragraph";
|
|
279
|
-
readonly LINK: "link";
|
|
280
|
-
readonly IMAGE: "image";
|
|
281
|
-
readonly LIST: "list";
|
|
282
|
-
readonly LIST_ITEM: "listItem";
|
|
283
|
-
readonly JSX_FLOW_ELEMENT: "mdxJsxFlowElement";
|
|
284
|
-
readonly JSX_TEXT_ELEMENT: "mdxJsxTextElement";
|
|
285
|
-
readonly JSX_ATTRIBUTE: "mdxJsxAttribute";
|
|
286
|
-
readonly FLOW_EXPRESSION: "mdxFlowExpression";
|
|
287
|
-
readonly TEXT_EXPRESSION: "mdxTextExpression";
|
|
288
|
-
readonly ESM: "mdxjsEsm";
|
|
289
|
-
};
|
|
290
|
-
//#endregion
|
|
291
136
|
//#region src/node/plugins/index.d.ts
|
|
292
137
|
declare function createPlugin(plugin: SecureBoltdocsPlugin): SecureBoltdocsPlugin;
|
|
293
138
|
//#endregion
|
|
@@ -322,8 +167,9 @@ declare function normalizePath(p: string): string;
|
|
|
322
167
|
* @returns The sanitized name
|
|
323
168
|
*/
|
|
324
169
|
declare function sanitizeFilename(name: string): string;
|
|
325
|
-
|
|
326
|
-
|
|
170
|
+
declare namespace index_d_exports {
|
|
171
|
+
export { BoltdocsConfig, BoltdocsPlugin, BoltdocsPluginOptions, BoltdocsPluginStore, BoltdocsThemeConfig, PluginCompatibilityError, PluginContext, PluginError, PluginHookError, PluginLifecycleHooks, PluginLifecycleManager, PluginLogger, PluginMeta, PluginStore, PluginValidationError, RouteMeta, SecureBoltdocsPlugin, createPlugin, createViteConfig, boltdocs as default, defineConfig, flushCache, generateEntryCode, generateRoutes, handleAwsFeedback, handleFeedback, handleNetlifyFeedback, handleVercelFeedback, handleWebFeedback, invalidateRouteCache, normalizePath, resolveConfig, sanitizeFilename, validatePlugins };
|
|
172
|
+
}
|
|
327
173
|
declare function boltdocs(options?: BoltdocsPluginOptions): Promise<Plugin[]>;
|
|
328
174
|
/**
|
|
329
175
|
* Generates the complete Vite configuration for a Boltdocs project.
|
|
@@ -331,4 +177,4 @@ declare function boltdocs(options?: BoltdocsPluginOptions): Promise<Plugin[]>;
|
|
|
331
177
|
*/
|
|
332
178
|
declare function createViteConfig(root: string, mode?: 'development' | 'production', preResolvedConfig?: BoltdocsConfig, turbo?: boolean): Promise<InlineConfig>;
|
|
333
179
|
//#endregion
|
|
334
|
-
export { type BoltdocsConfig, type BoltdocsPlugin, type BoltdocsPluginOptions, BoltdocsPluginStore, type BoltdocsThemeConfig,
|
|
180
|
+
export { type BoltdocsConfig, type BoltdocsPlugin, type BoltdocsPluginOptions, BoltdocsPluginStore, type BoltdocsThemeConfig, PluginCompatibilityError, type PluginContext, PluginError, PluginHookError, type PluginLifecycleHooks, PluginLifecycleManager, type PluginLogger, type PluginMeta, type PluginStore, PluginValidationError, type RouteMeta, SecureBoltdocsPlugin, createPlugin, createViteConfig, boltdocs as default, defineConfig, flushCache, generateEntryCode, generateRoutes, handleAwsFeedback, handleFeedback, handleNetlifyFeedback, handleVercelFeedback, handleWebFeedback, invalidateRouteCache, normalizePath, resolveConfig, sanitizeFilename, validatePlugins };
|