mdat 0.6.4 → 0.6.5

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/bin/cli.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import{defaultLoaders as vn}from"cosmiconfig";function xe(t,e){let n=vn[".json"],o=n(t,e);return ht(o)}function ht(t,e="",n={}){for(let[o,i]of Object.entries(t)){let r=e?`${e}.${o}`:o;typeof i=="object"&&i!==null&&!Array.isArray(i)?ht(i,r,n):i===null?n[r]="null":n[r]=i.toString()}return n}import Tn from"node:fs";import O from"node:path";import{packageUp as $n}from"package-up";import{isFileSync as yt}from"path-type";import Nn from"untildify";function An(t,e){let n=e===0?1:Math.floor(Math.log10(Math.abs(e))+1);return t.toString().padStart(n,"0")}function bt(t,e,n,o){let i=[];for(let[r,a]of t.entries()){let s=n&&t.length>1?`-${An(r+1,t.length+1)}`:"",d=_n(a,e,n,o,s);i.push(d)}return i}function _n(t,e,n,o,i=""){let r=wt(t),a=e?wt(e):void 0;if(!yt(r))throw new Error(`Input file not found: "${r}"`);if(a){if(yt(a))throw new Error(`Output path must be a directory, received a file path: "${a}"`);Tn.mkdirSync(a,{recursive:!0})}let s=n?O.basename(n,O.extname(n)):O.basename(r,O.extname(r)),d=`.${o??(n&&O.extname(n)!==""?O.extname(n):O.extname(t)===""?"":O.extname(t))}`,m=`${s}${i}${d}`,c=a??O.dirname(r);return{input:r,name:m,output:c}}function wt(t){return Nn(t)}async function X(){return $n()}function Q(t){return t==null?[]:Array.isArray(t)?t:[t]}import Ct from"chalk";import{cosmiconfig as Pt}from"cosmiconfig";import In from"node:fs/promises";import St from"node:path";import Mn from"plur";import{readPackage as Dn}from"read-pkg";import{deepMergeDefined as Ee,log as b,optionsSchema as jn,rulesSchema as Fn}from"remark-mdat";import{z as Le}from"zod";var Ot=jn.merge(Le.object({assetsPath:Le.string().optional(),packageFile:Le.string().optional()})).describe("Config Extension");async function L(t){let{additionalConfig:e,additionalRules:n,searchFrom:o}=t??{},i={addMetaComment:!1,assetsPath:"./assets",closingPrefix:"/",keywordPrefix:"",metaCommentIdentifier:"+",packageFile:await X(),rules:{mdat:"Powered by the Markdown Autophagic Template system: [mdat](https://github.com/kitschpatrol/mdat)."}},r=Pt("mdat"),a=await r.search(o);if(a){let{config:s,filepath:d}=a;b.info(`Using config from "${d}"`);let m=Rt(s,Ot);m&&(i=Ee(i,m))}if(e!==void 0){let s=Array.isArray(e)?e:[e];for(let d of s){let m;if(typeof d=="string"){let p=await r.load(d);if(p==null)continue;let{config:g,filepath:y}=p;b.info(`Loaded additional config from "${y}"`),m=g}else m=d;if(m===void 0)continue;b.info("Merging configuration object");let c=Rt(m,Ot);c!==void 0&&(i=Ee(i,c))}}if(n!==void 0){let s=Array.isArray(n)?n:[n],d=Pt("mdat",{loaders:{".json":xe}});for(let m of s){let c;if(typeof m=="string"){let g;if(St.basename(m).endsWith("package.json")){let M=await In.readFile(m,"utf8");g={config:xe(m,M),filepath:m}}else g=await d.load(m);if(g==null)continue;let{config:y,filepath:w}=g;b.info(`Loaded additional config from "${w}"`),c=y}else c=m;if(c===void 0)continue;b.info("Merging rules into configuration object");let p=Un(c,Fn);p!==void 0&&(i=Ee(i,p))}}if(i.rules){let s=Object.keys(i.rules).sort().map(d=>`"${Ct.bold.green(d)}"`);b.info(`Loaded ${Ct.bold(s.length)} mdat comment expansion ${Mn("rule",s.length)}:`);for(let d of s)b.info(` ${d}`)}else b.error("No rules loaded from additional configurations or rules, using default.");return ee=i,i}function Un(t,e){if(e.safeParse(t).success)return{rules:t};b.error(`Rules object has the wrong shape. Ignoring and using default configuration:
3
3
  ${JSON.stringify(t,void 0,2)}`)}function Rt(t,e){if(e.safeParse(t).success)return t;b.error(`Config object has the wrong shape. Ignoring and using default configuration:
4
4
  ${JSON.stringify(t,void 0,2)}`)}var ee;async function P(){return ee===void 0&&(b.warn("getConfig(): config was undefined"),ee??=await L()),ee}var ve;async function h(){let{packageFile:t}=await P();if(t===void 0)throw new Error("No packageFile found or set in config");if(ve??=await Dn({cwd:St.dirname(t)}),ve===void 0)throw new Error("No package.json found");return ve}import{remark as Te}from"remark";import $e from"remark-gfm";import{mdatCheck as Vn,mdatClean as kt,mdatExpand as Bn,mdatSplit as xt}from"remark-mdat";import{read as Jn}from"to-vfile";import{VFile as Ci}from"vfile";async function S(t,e,n,o,i,r,a){let s=await e({additionalConfig:r,additionalRules:a});r=s;let d=Q(t),m=bt(d,i,o,"md"),c=[],p=n(s);for(let{input:g,name:y,output:w}of m){let M=await Jn(g),Z=await p.process(M);Z.dirname=w,Z.basename=y,c.push(Z)}return c}function te(t){return Te().use({settings:{bullet:"-",emphasis:"_"}}).use($e).use(()=>async function(n,o){xt(n,o),kt(n,o,t),await Bn(n,o,t)})}function ne(t){return Te().use({settings:{bullet:"-",emphasis:"_"}}).use($e).use(()=>function(n,o){xt(n,o),kt(n,o,t)})}function oe(t){return Te().use({settings:{bullet:"-",emphasis:"_"}}).use($e).use(()=>async function(n,o){await Vn(n,o,{...t,paranoid:!1})})}async function Et(t,e,n,o,i){return S(t,L,te,e,n,o,i)}async function Lt(t,e,n,o,i){return S(t,L,oe,e,n,o,i)}async function vt(t,e,n,o,i){return S(t,L,ne,e,n,o,i)}import{z as v}from"zod";var ie={badges:{async content(t){var a;let e=v.object({custom:v.record(v.object({image:v.string(),link:v.string()})).optional(),npm:v.array(v.string()).optional()}).optional().parse(t),n=await h(),{name:o}=n,i=[];if(!n.private&&((a=n.publishConfig)==null?void 0:a.access)==="public"&&i.push(`[![NPM Package ${o}](https://img.shields.io/npm/v/${o}.svg)](https://npmjs.com/package/${o})`),(e==null?void 0:e.npm)!==void 0)for(let s of e.npm)i.push(`[![NPM Package ${s}](https://img.shields.io/npm/v/${s}.svg)](https://npmjs.com/package/${s})`);let{license:r}=n;if(r!==void 0&&i.push(`[![License: ${r}](https://img.shields.io/badge/License-${r}-yellow.svg)](https://opensource.org/licenses/${r})`),(e==null?void 0:e.custom)!==void 0)for(let[s,{image:d,link:m}]of Object.entries(e.custom))i.push(`[![${s}](${d})](${m})`);return i.join(`
5
- `)},order:3,required:!1}};import{globby as qn}from"globby";import re from"node:path";import{isFile as zn}from"path-type";import{readPackage as Gn}from"read-pkg";import{z as Ne}from"zod";var ae={banner:{async content(t){let e=Ne.object({alt:Ne.string().optional(),src:Ne.string().optional()}).optional().parse(t),{assetsPath:n,packageFile:o}=await P();if(o===void 0)throw new Error("No package.json found");let i=(e==null?void 0:e.src)??await Kn(n);if(i===void 0)throw new Error("Banner image not found at any typical location, consider adding something at ./assets/banner.webp");if(!Tt(i)&&!await zn(i))throw new Error(`Banner image not found at "${i}"`);let r=(e==null?void 0:e.alt)??`${(await Gn({cwd:re.dirname(o)})).name} banner`;if(r===void 0||r==="undefined banner")throw new Error("Banner image alt text not available");return`![${r}](${i})`},order:2}};async function Kn(t){let{packageFile:e}=await P();if(e===void 0)throw new Error("No package.json found");let n=re.dirname(e),o=t===void 0?[".","assets","media","readme-assets","readme-media","readme","images"]:[t],i=["banner","header","logo","readme","cover","screenshot","screenshots","demo","overview","image","hero"],r=["png","gif","jpg","jpeg","svg","webp"],a=await qn(o.map(s=>re.join(n,s)),{expandDirectories:{extensions:r,files:i}});if(a.length>0)return re.relative(process.cwd(),a[0])}function Tt(t,e=!0){if(typeof t!="string")throw new TypeError("Expected a string");if(t=t.trim(),t.includes(" "))return!1;try{return new URL(t),!0}catch{return e?Tt(`https://${t}`,!1):!1}}function $t(t,e=Number.MAX_SAFE_INTEGER){var i;let n=[],o=Wn(t,e);return n.push(Yn(o)),n.push(Zn(t,o)),o.hasMultipleSubcommands&&o.canRecurse&&n.push(Xn(o.fullCommandName)),((i=o.defaultCommand)==null?void 0:i.commandName)!==void 0&&n.push(Qn(o)),n.push(eo(t,o)),t.positionals&&!o.commandsOnly&&n.push(Ae(["Positional Argument","Description","Type","Default"],t.positionals.map(r=>[r.arguments?[r.arguments.map(a=>`\`${a}\``)].join(" "):"",`${r.description??""}${r.required?" _(Required.)_":" _(Optional.)_"}`,r.type?`\`${r.type}\``:"",r.defaultValue?r.defaultValue.includes(" ")?r.defaultValue:`\`${r.defaultValue}\``:""]))),t.commands&&n.push(Ae(["Command","Argument","Description"],t.commands.map(r=>{var a;return[`\`${r.commandName??(r.default?"[default]":"")}\``,r.arguments?(a=r.arguments)==null?void 0:a.map(s=>`\`${s}\``).join(" "):"",`${r.description??""}${r.default?" _(Default command.)_":""}`]}))),t.options&&!o.commandsOnly&&n.push(Ae(["Option","Alias","Argument","Description","Type","Default"],t.options.map(r=>[r.flags?r.flags.map(a=>`\`${a}\``).join(" "):"",r.aliases?r.aliases.map(a=>`\`${a}\``).join(" "):"",r.arguments?r.arguments.map(a=>`\`${a}\``).join(" "):"",r.description??"",r.type?`\`${r.type}\``:"",r.defaultValue?r.defaultValue.includes(" ")?r.defaultValue:`\`${r.defaultValue}\``:""]))),o.canRecurse&&o.hasMultipleSubcommands&&n.push("_See the sections below for more information on each subcommand._"),n.join(`
5
+ `)},order:3}};import{globby as zn}from"globby";import re from"node:path";import{isFile as qn}from"path-type";import{readPackage as Gn}from"read-pkg";import{z as Ne}from"zod";var ae={banner:{async content(t){let e=Ne.object({alt:Ne.string().optional(),src:Ne.string().optional()}).optional().parse(t),{assetsPath:n,packageFile:o}=await P();if(o===void 0)throw new Error("No package.json found");let i=(e==null?void 0:e.src)??await Kn(n);if(i===void 0)throw new Error("Banner image not found at any typical location, consider adding something at ./assets/banner.webp");if(!Tt(i)&&!await qn(i))throw new Error(`Banner image not found at "${i}"`);let r=(e==null?void 0:e.alt)??`${(await Gn({cwd:re.dirname(o)})).name} banner`;if(r===void 0||r==="undefined banner")throw new Error("Banner image alt text not available");return`![${r}](${i})`},order:2}};async function Kn(t){let{packageFile:e}=await P();if(e===void 0)throw new Error("No package.json found");let n=re.dirname(e),o=t===void 0?[".","assets","media","readme-assets","readme-media","readme","images"]:[t],i=["banner","header","logo","readme","cover","screenshot","screenshots","demo","overview","image","hero"],r=["png","gif","jpg","jpeg","svg","webp"],a=await zn(o.map(s=>re.join(n,s)),{expandDirectories:{extensions:r,files:i}});if(a.length>0)return re.relative(process.cwd(),a[0])}function Tt(t,e=!0){if(typeof t!="string")throw new TypeError("Expected a string");if(t=t.trim(),t.includes(" "))return!1;try{return new URL(t),!0}catch{return e?Tt(`https://${t}`,!1):!1}}function $t(t,e=Number.MAX_SAFE_INTEGER){var i;let n=[],o=Wn(t,e);return n.push(Yn(o)),n.push(Zn(t,o)),o.hasMultipleSubcommands&&o.canRecurse&&n.push(Xn(o.fullCommandName)),((i=o.defaultCommand)==null?void 0:i.commandName)!==void 0&&n.push(Qn(o)),n.push(eo(t,o)),t.positionals&&!o.commandsOnly&&n.push(Ae(["Positional Argument","Description","Type","Default"],t.positionals.map(r=>[r.arguments?[r.arguments.map(a=>`\`${a}\``)].join(" "):"",`${r.description??""}${r.required?" _(Required.)_":" _(Optional.)_"}`,r.type?`\`${r.type}\``:"",r.defaultValue?r.defaultValue.includes(" ")?r.defaultValue:`\`${r.defaultValue}\``:""]))),t.commands&&n.push(Ae(["Command","Argument","Description"],t.commands.map(r=>{var a;return[`\`${r.commandName??(r.default?"[default]":"")}\``,r.arguments?(a=r.arguments)==null?void 0:a.map(s=>`\`${s}\``).join(" "):"",`${r.description??""}${r.default?" _(Default command.)_":""}`]}))),t.options&&!o.commandsOnly&&n.push(Ae(["Option","Alias","Argument","Description","Type","Default"],t.options.map(r=>[r.flags?r.flags.map(a=>`\`${a}\``).join(" "):"",r.aliases?r.aliases.map(a=>`\`${a}\``).join(" "):"",r.arguments?r.arguments.map(a=>`\`${a}\``).join(" "):"",r.description??"",r.type?`\`${r.type}\``:"",r.defaultValue?r.defaultValue.includes(" ")?r.defaultValue:`\`${r.defaultValue}\``:""]))),o.canRecurse&&o.hasMultipleSubcommands&&n.push("_See the sections below for more information on each subcommand._"),n.join(`
6
6
 
7
7
  `)}function Wn(t,e){var m,c;let n=t.subcommandName===void 0,o=t.commands?t.commands.length>1:!1,i=e>1,r=(m=t.commands)==null?void 0:m.find(p=>p.default),a=(c=t.commands)==null?void 0:c.find(p=>p.commandName===void 0),s=`${t.commandName}${t.subcommandName?` ${t.subcommandName}`:""}`,d=i&&o&&(r==null?void 0:r.commandName)!==void 0;return{canRecurse:i,commandsOnly:d,defaultCommand:r,fullCommandName:s,hasMultipleSubcommands:o,isTopLevel:n,topLevelCommand:a}}function Yn(t){return`#### ${t.isTopLevel?"Command":"Subcommand"}: \`${t.fullCommandName}\``}function Zn(t,e){var n,o;return e.isTopLevel&&((n=e.topLevelCommand)!=null&&n.description)?(t.commands=(o=t.commands)==null?void 0:o.filter(i=>i!==e.topLevelCommand),e.topLevelCommand.description):t.description??""}function Xn(t){return`This section lists top-level commands for \`${t}\`.`}function Qn(t){var e,n;return`If no command is provided, \`${(e=t.defaultCommand)==null?void 0:e.parentCommandName} ${(n=t.defaultCommand)==null?void 0:n.commandName}\` is run by default.`}function eo(t,e){var o;let n=(o=e.topLevelCommand)!=null&&o.arguments?` ${e.topLevelCommand.arguments.join(" ")}`:`${t.arguments?` ${t.arguments.join(" ")}`:""}`;return`Usage:
8
8
 
@@ -11,7 +11,7 @@ ${e.fullCommandName}${n}
11
11
  \`\`\``}function Ae(t,e){let n=to(e);t=t.filter((i,r)=>!n.includes(r)),e=e.map(i=>i.filter((r,a)=>!n.includes(a)));let o="";o+=`| ${t.join(" | ")} |
12
12
  `,o+=`| ${t.map(()=>"---").join(" | ")} |
13
13
  `;for(let i of e)o+=`| ${i.join(" | ")} |
14
- `;return o}function to(t){var o;let e=[],n=((o=t[0])==null?void 0:o.length)||0;for(let i=0;i<n;i++){let r=!0;for(let a of t)if(a[i]!==""){r=!1;break}r&&e.push(i)}return e}import{CstParser as no,Lexer as R,createToken as f}from"chevrotain";var me=f({name:"flag",pattern:/--[\w-_]+/}),Me=f({longer_alt:me,name:"alias",pattern:/-[A-Za-z]/}),Nt=f({group:R.SKIPPED,name:"comma",pattern:/,/}),At=f({group:R.SKIPPED,name:"dollar",pattern:/\$/}),se=f({group:R.SKIPPED,name:"whiteSpace",pattern:/ /}),_t=f({group:R.SKIPPED,name:"newLine",pattern:/\n/}),De=f({name:"word",pattern:/\S+/}),H=f({name:"argument",pattern:/(<\S+>|\[.+])/}),je=f({name:"programDescription",pattern:/\w.+(?=\n\n {2}Usage)/}),It=f({group:R.SKIPPED,name:"startUsage",pattern:/ {2}Usage\n/,push_mode:"USAGE_MODE"}),Mt=f({group:R.SKIPPED,name:"endUsage",pattern:/\n/,pop_mode:!0}),Fe=f({name:"startOptions",pattern:/ {2}Options\n/,push_mode:"OPTIONS_MODE"}),Ue=f({name:"startRow",pattern:/ {4}/,push_mode:"ROW_MODE"}),Ve=f({name:"rowDescription",pattern:/\w.+/}),Dt=f({group:R.SKIPPED,name:"endRow",pattern:/\n/,pop_mode:!0}),jt=f({group:R.SKIPPED,name:"endOptions",pattern:/\n/,pop_mode:!0}),oo=new R({defaultMode:"DEFAULT_MODE",modes:{DEFAULT_MODE:[It,Fe,je,_t,se],OPTIONS_MODE:[jt,Ue],ROW_MODE:[Dt,Me,me,Nt,H,Ve,se],USAGE_MODE:[Mt,At,H,De,se]}}),io=[me,Me,Nt,At,se,_t,De,H,je,It,Mt,Fe,Ue,Ve,Dt,jt],_e=class extends no{programHelp=this.RULE("programHelp",()=>{this.CONSUME(je,{LABEL:"description"}),this.AT_LEAST_ONE(()=>{this.CONSUME(De,{LABEL:"commandName"})}),this.MANY(()=>{this.CONSUME(H)}),this.OPTION(()=>{this.SUBRULE(this.optionsSection)})});optionsSection=this.RULE("optionsSection",()=>{this.CONSUME(Fe),this.MANY(()=>{this.SUBRULE(this.sectionRow)})});sectionRow=this.RULE("sectionRow",()=>{this.CONSUME(Ue),this.MANY(()=>{this.OR([{ALT:()=>this.CONSUME(H)},{ALT:()=>this.CONSUME(Me)},{ALT:()=>this.CONSUME(me)},{ALT:()=>this.CONSUME(Ve,{LABEL:"description"})}])})});constructor(){super(io),this.performSelfAnalysis()}},J=new _e,Ie=class extends J.getBaseCstVisitorConstructor(){constructor(){super(),this.validateVisitor()}programHelp(e){let{command:n,subcommand:o}=de(this.getString(e.commandName));return{arguments:this.getArray(e.argument),commandName:n,description:this.getString(e.description),options:e.optionsSection?this.visit(e.optionsSection):void 0,subcommandName:o}}optionsSection(e){return e.sectionRow.map(n=>this.visit(n))}sectionRow(e){return{aliases:this.getArray(e.alias),arguments:this.getArray(e.argument),description:this.getString(e.description,!0),flags:this.getArray(e.flag)}}getString(e,n=!1){if(e!==void 0)return e.map(o=>n?this.clean(o.image):o.image).join(" ")}getArray(e){if(e!==void 0)return e.map(n=>n.image)}clean(e){return e.replaceAll(/^[\s[]*(default:)?\s*|[\s\]]*$/g,"")}},ro=new Ie;function Ft(t){let e=oo.tokenize(t);if(e.errors.length>0)throw new Error(`Errors lexing CLI command: ${JSON.stringify(e.errors,void 0,2)}`);J.input=e.tokens;let n=J.programHelp();if(J.errors.length>0)throw new Error(`Errors parsing CLI command help text: ${JSON.stringify(J.errors,void 0,2)}`);let o;try{o=ro.visit(n)}catch(i){if(i instanceof Error)throw new TypeError(`Errors visiting CLI command help text: ${String(i)}`)}if(o===void 0)throw new Error("Could not parse help string");return o}import{CstParser as ao,Lexer as T,createToken as l}from"chevrotain";var qe=l({name:"flag",pattern:/--[\w-_]+/}),ze=l({name:"alias",pattern:/-[A-Za-z]/}),Ut=l({group:T.SKIPPED,name:"comma",pattern:/,/}),D=l({name:"word",pattern:/\S+/}),z=l({name:"argument",pattern:/<\S+>|\[\S+]/}),Ge=l({name:"type",pattern:/\[(boolean|string|array)]/}),Ke=l({name:"defaultInfo",pattern:/\[default]/}),We=l({name:"required",pattern:/\[required]/}),Ye=l({name:"defaultInfoDescription",pattern:/\[default:\s.+?]/}),Ze=l({name:"choices",pattern:/\[choices:\s.+?]/}),Be=l({group:T.SKIPPED,name:"whiteSpace",pattern:/\s/}),Vt=l({group:T.SKIPPED,name:"startProgramDescription",pattern:/\n\n/,push_mode:"PROGRAM_DESCRIPTION_MODE"}),Xe=l({name:"programDescription",pattern:/.+/}),Bt=l({group:T.SKIPPED,name:"endProgramDescription",pattern:/\n\n/,pop_mode:!0}),Qe=l({name:"startOptionsSection",pattern:/Options:?\n/,push_mode:"SECTION_MODE"}),et=l({name:"startPositionalsSection",pattern:/Positionals:\n/,push_mode:"SECTION_MODE"}),tt=l({name:"startCommandsSection",pattern:/Commands:\n/,push_mode:"SECTION_MODE"}),nt=l({name:"startRow",pattern:/ {2,}/,push_mode:"ROW_MODE"}),ot=l({name:"rowDescription",pattern:/ {2}\w.+ {2}/}),it=l({name:"rowDescriptionTerminal",pattern:/ {2}\w.+/}),Jt=l({group:T.SKIPPED,name:"endRow",pattern:/\n/,pop_mode:!0}),Ht=l({group:T.SKIPPED,name:"endSection",pattern:/\n+/,pop_mode:!0}),so=new T({defaultMode:"DEFAULT_MODE",modes:{DEFAULT_MODE:[Qe,et,tt,Vt,z,D,Be],PROGRAM_DESCRIPTION_MODE:[Bt,Xe],ROW_MODE:[Jt,Ut,Ge,ot,it,Ye,Ke,We,Ze,qe,ze,z,D,Be],SECTION_MODE:[nt,Ht]}}),mo=[qe,ze,Ut,D,z,Ge,Ke,We,Ye,Ze,Be,Vt,Xe,Bt,Qe,et,tt,nt,ot,it,Jt,Ht],Je=class extends ao{programHelp=this.RULE("programHelp",()=>{this.AT_LEAST_ONE(()=>{this.CONSUME(D,{LABEL:"commandName"})}),this.MANY1(()=>{this.CONSUME(z)}),this.OPTION(()=>{this.CONSUME(Xe,{LABEL:"description"})}),this.OPTION1(()=>{this.SUBRULE(this.commandsSection)}),this.OPTION2(()=>{this.SUBRULE(this.positionalsSection)}),this.OPTION3(()=>{this.SUBRULE(this.optionsSection)})});positionalsSection=this.RULE("positionalsSection",()=>{this.CONSUME(et),this.MANY(()=>{this.SUBRULE(this.sectionRow)})});commandsSection=this.RULE("commandsSection",()=>{this.CONSUME(tt),this.MANY1(()=>{this.SUBRULE1(this.sectionRow)})});optionsSection=this.RULE("optionsSection",()=>{this.CONSUME(Qe),this.MANY2(()=>{this.SUBRULE2(this.sectionRow)})});sectionRow=this.RULE("sectionRow",()=>{this.CONSUME(nt),this.OPTION(()=>{this.CONSUME(D,{LABEL:"parentCommandName"})}),this.MANY(()=>{this.CONSUME1(D,{LABEL:"commandName"})}),this.MANY1(()=>{this.OR([{ALT:()=>this.CONSUME(z)},{ALT:()=>this.CONSUME(ze)},{ALT:()=>this.CONSUME(qe)},{ALT:()=>this.CONSUME(ot,{LABEL:"description"})},{ALT:()=>this.CONSUME(it,{LABEL:"description"})},{ALT:()=>this.CONSUME(Ge)},{ALT:()=>this.CONSUME(We)},{ALT:()=>this.CONSUME(Ye)},{ALT:()=>this.CONSUME(Ke)},{ALT:()=>this.CONSUME(Ze)}])})});constructor(){super(mo),this.performSelfAnalysis()}},q=new Je,He=class extends q.getBaseCstVisitorConstructor(){constructor(){super(),this.validateVisitor()}programHelp(e){let{command:n,subcommand:o}=de(this.getString(e.commandName));return{arguments:this.getArray(e.argument),commandName:n,commands:e.commandsSection?this.visit(e.commandsSection):void 0,description:this.getString(e.description),options:e.optionsSection?this.visit(e.optionsSection):void 0,positionals:e.positionalsSection?this.visit(e.positionalsSection):void 0,subcommandName:o}}positionalsSection(e){return e.sectionRow.map(n=>this.positionalParentCommandToArguments(this.visit(n)))}commandsSection(e){return e.sectionRow.map(n=>this.visit(n))}optionsSection(e){return e.sectionRow.map(n=>this.visit(n))}sectionRow(e){return{aliases:this.getArray(e.alias),arguments:this.getArray(e.argument),choices:this.splitChoices(this.getString(e.choices)),commandName:this.getString(e.commandName),default:e.defaultInfo?!0:void 0,defaultValue:this.getString(e.defaultInfoDescription,!0),description:this.getString(e.description,!0),flags:this.getArray(e.flag),parentCommandName:this.getString(e.parentCommandName),required:e.required?!0:void 0,type:this.getString(e.type,!0)}}positionalParentCommandToArguments(e){let{arguments:n,parentCommandName:o,...i}=e;return o===void 0?e:{arguments:[o,...n??[]],...i}}getString(e,n=!1){if(e!==void 0)return e.map(o=>n?this.clean(o.image):o.image).join(" ")}getArray(e){if(e!==void 0)return e.map(n=>n.image)}clean(e){return e.replaceAll(/^[\s[]*(default:)?\s*|[\s\]]*$/g,"")}splitChoices(e){if(e!==void 0)return this.clean(e.replaceAll(/^\[choices:\s/g,"")).split(", ")}},co=new He;function qt(t){let e=so.tokenize(t);if(e.errors.length>0)throw new Error(`Errors lexing CLI command: ${JSON.stringify(e.errors,void 0,2)}`);q.input=e.tokens;let n=q.programHelp();if(q.errors.length>0)throw new Error(`Errors parsing CLI command help text: ${JSON.stringify(q.errors,void 0,2)}`);let o;try{o=co.visit(n)}catch(i){if(i instanceof Error)throw new TypeError(`Errors visiting CLI command help text: ${String(i)}`)}if(o===void 0)throw new Error("Could not parse help string");return o}var zt={meow:Ft,yargs:qt};function de(t){if(t===void 0)throw new Error('Could not find "commandName" entry in help');let e=t.split(" ");if(e.length===0&&t===void 0)throw new Error('Could not find "commandName" entry in help');if(e.length===1)return{command:e[0],subcommand:void 0};let n=e.at(-1);return{command:e.slice(0,-1).join(" "),subcommand:n}}import{log as rt}from"remark-mdat";function Gt(t){for(let[e,n]of Object.entries(zt)){rt.info(`Trying to parse help string with ${e} parser...`);try{return n(t)}catch(o){o instanceof Error&&rt.info(`Error in "${e}" parser: ${String(o)}`);continue}}rt.error("Could not parse help string with any parser")}import{execaCommand as po}from"execa";import{log as Kt}from"remark-mdat";async function at(t,e="--help",n){let o=`${t} ${e}`,i=await fo(o),r=Gt(i);return r===void 0?(Kt.warn("Falling back to basic cli help text output."),uo(i)):lo(t,e,n??Number.MAX_SAFE_INTEGER,r)}async function lo(t,e,n,o){if(n<=0)return Kt.info("Max CLI command help depth reached, stopping recursion"),"";let i=$t(o,n),r=t.split(" ")[0];if(o.commands)for(let a of o.commands){if(!a.parentCommandName||!a.commandName)continue;let s=await at(`${r} ${a.commandName}`,e,n-1);if(s==="")return i;i+=`
14
+ `;return o}function to(t){var o;let e=[],n=((o=t[0])==null?void 0:o.length)||0;for(let i=0;i<n;i++){let r=!0;for(let a of t)if(a[i]!==""){r=!1;break}r&&e.push(i)}return e}import{CstParser as no,Lexer as R,createToken as f}from"chevrotain";var me=f({name:"flag",pattern:/--[\w-_]+/}),Me=f({longer_alt:me,name:"alias",pattern:/-[A-Za-z]/}),Nt=f({group:R.SKIPPED,name:"comma",pattern:/,/}),At=f({group:R.SKIPPED,name:"dollar",pattern:/\$/}),se=f({group:R.SKIPPED,name:"whiteSpace",pattern:/ /}),_t=f({group:R.SKIPPED,name:"newLine",pattern:/\n/}),De=f({name:"word",pattern:/\S+/}),H=f({name:"argument",pattern:/(<\S+>|\[.+])/}),je=f({name:"programDescription",pattern:/\w.+(?=\n\n {2}Usage)/}),It=f({group:R.SKIPPED,name:"startUsage",pattern:/ {2}Usage\n/,push_mode:"USAGE_MODE"}),Mt=f({group:R.SKIPPED,name:"endUsage",pattern:/\n/,pop_mode:!0}),Fe=f({name:"startOptions",pattern:/ {2}Options\n/,push_mode:"OPTIONS_MODE"}),Ue=f({name:"startRow",pattern:/ {4}/,push_mode:"ROW_MODE"}),Ve=f({name:"rowDescription",pattern:/\w.+/}),Dt=f({group:R.SKIPPED,name:"endRow",pattern:/\n/,pop_mode:!0}),jt=f({group:R.SKIPPED,name:"endOptions",pattern:/\n/,pop_mode:!0}),oo=new R({defaultMode:"DEFAULT_MODE",modes:{DEFAULT_MODE:[It,Fe,je,_t,se],OPTIONS_MODE:[jt,Ue],ROW_MODE:[Dt,Me,me,Nt,H,Ve,se],USAGE_MODE:[Mt,At,H,De,se]}}),io=[me,Me,Nt,At,se,_t,De,H,je,It,Mt,Fe,Ue,Ve,Dt,jt],_e=class extends no{programHelp=this.RULE("programHelp",()=>{this.CONSUME(je,{LABEL:"description"}),this.AT_LEAST_ONE(()=>{this.CONSUME(De,{LABEL:"commandName"})}),this.MANY(()=>{this.CONSUME(H)}),this.OPTION(()=>{this.SUBRULE(this.optionsSection)})});optionsSection=this.RULE("optionsSection",()=>{this.CONSUME(Fe),this.MANY(()=>{this.SUBRULE(this.sectionRow)})});sectionRow=this.RULE("sectionRow",()=>{this.CONSUME(Ue),this.MANY(()=>{this.OR([{ALT:()=>this.CONSUME(H)},{ALT:()=>this.CONSUME(Me)},{ALT:()=>this.CONSUME(me)},{ALT:()=>this.CONSUME(Ve,{LABEL:"description"})}])})});constructor(){super(io),this.performSelfAnalysis()}},J=new _e,Ie=class extends J.getBaseCstVisitorConstructor(){constructor(){super(),this.validateVisitor()}programHelp(e){let{command:n,subcommand:o}=de(this.getString(e.commandName));return{arguments:this.getArray(e.argument),commandName:n,description:this.getString(e.description),options:e.optionsSection?this.visit(e.optionsSection):void 0,subcommandName:o}}optionsSection(e){return e.sectionRow.map(n=>this.visit(n))}sectionRow(e){return{aliases:this.getArray(e.alias),arguments:this.getArray(e.argument),description:this.getString(e.description,!0),flags:this.getArray(e.flag)}}getString(e,n=!1){if(e!==void 0)return e.map(o=>n?this.clean(o.image):o.image).join(" ")}getArray(e){if(e!==void 0)return e.map(n=>n.image)}clean(e){return e.replaceAll(/^[\s[]*(default:)?\s*|[\s\]]*$/g,"")}},ro=new Ie;function Ft(t){let e=oo.tokenize(t);if(e.errors.length>0)throw new Error(`Errors lexing CLI command: ${JSON.stringify(e.errors,void 0,2)}`);J.input=e.tokens;let n=J.programHelp();if(J.errors.length>0)throw new Error(`Errors parsing CLI command help text: ${JSON.stringify(J.errors,void 0,2)}`);let o;try{o=ro.visit(n)}catch(i){if(i instanceof Error)throw new TypeError(`Errors visiting CLI command help text: ${String(i)}`)}if(o===void 0)throw new Error("Could not parse help string");return o}import{CstParser as ao,Lexer as T,createToken as l}from"chevrotain";var ze=l({name:"flag",pattern:/--[\w-_]+/}),qe=l({name:"alias",pattern:/-[A-Za-z]/}),Ut=l({group:T.SKIPPED,name:"comma",pattern:/,/}),D=l({name:"word",pattern:/\S+/}),q=l({name:"argument",pattern:/<\S+>|\[\S+]/}),Ge=l({name:"type",pattern:/\[(boolean|string|array)]/}),Ke=l({name:"defaultInfo",pattern:/\[default]/}),We=l({name:"required",pattern:/\[required]/}),Ye=l({name:"defaultInfoDescription",pattern:/\[default:\s.+?]/}),Ze=l({name:"choices",pattern:/\[choices:\s.+?]/}),Be=l({group:T.SKIPPED,name:"whiteSpace",pattern:/\s/}),Vt=l({group:T.SKIPPED,name:"startProgramDescription",pattern:/\n\n/,push_mode:"PROGRAM_DESCRIPTION_MODE"}),Xe=l({name:"programDescription",pattern:/.+/}),Bt=l({group:T.SKIPPED,name:"endProgramDescription",pattern:/\n\n/,pop_mode:!0}),Qe=l({name:"startOptionsSection",pattern:/Options:?\n/,push_mode:"SECTION_MODE"}),et=l({name:"startPositionalsSection",pattern:/Positionals:\n/,push_mode:"SECTION_MODE"}),tt=l({name:"startCommandsSection",pattern:/Commands:\n/,push_mode:"SECTION_MODE"}),nt=l({name:"startRow",pattern:/ {2,}/,push_mode:"ROW_MODE"}),ot=l({name:"rowDescription",pattern:/ {2}\w.+ {2}/}),it=l({name:"rowDescriptionTerminal",pattern:/ {2}\w.+/}),Jt=l({group:T.SKIPPED,name:"endRow",pattern:/\n/,pop_mode:!0}),Ht=l({group:T.SKIPPED,name:"endSection",pattern:/\n+/,pop_mode:!0}),so=new T({defaultMode:"DEFAULT_MODE",modes:{DEFAULT_MODE:[Qe,et,tt,Vt,q,D,Be],PROGRAM_DESCRIPTION_MODE:[Bt,Xe],ROW_MODE:[Jt,Ut,Ge,ot,it,Ye,Ke,We,Ze,ze,qe,q,D,Be],SECTION_MODE:[nt,Ht]}}),mo=[ze,qe,Ut,D,q,Ge,Ke,We,Ye,Ze,Be,Vt,Xe,Bt,Qe,et,tt,nt,ot,it,Jt,Ht],Je=class extends ao{programHelp=this.RULE("programHelp",()=>{this.AT_LEAST_ONE(()=>{this.CONSUME(D,{LABEL:"commandName"})}),this.MANY1(()=>{this.CONSUME(q)}),this.OPTION(()=>{this.CONSUME(Xe,{LABEL:"description"})}),this.OPTION1(()=>{this.SUBRULE(this.commandsSection)}),this.OPTION2(()=>{this.SUBRULE(this.positionalsSection)}),this.OPTION3(()=>{this.SUBRULE(this.optionsSection)})});positionalsSection=this.RULE("positionalsSection",()=>{this.CONSUME(et),this.MANY(()=>{this.SUBRULE(this.sectionRow)})});commandsSection=this.RULE("commandsSection",()=>{this.CONSUME(tt),this.MANY1(()=>{this.SUBRULE1(this.sectionRow)})});optionsSection=this.RULE("optionsSection",()=>{this.CONSUME(Qe),this.MANY2(()=>{this.SUBRULE2(this.sectionRow)})});sectionRow=this.RULE("sectionRow",()=>{this.CONSUME(nt),this.OPTION(()=>{this.CONSUME(D,{LABEL:"parentCommandName"})}),this.MANY(()=>{this.CONSUME1(D,{LABEL:"commandName"})}),this.MANY1(()=>{this.OR([{ALT:()=>this.CONSUME(q)},{ALT:()=>this.CONSUME(qe)},{ALT:()=>this.CONSUME(ze)},{ALT:()=>this.CONSUME(ot,{LABEL:"description"})},{ALT:()=>this.CONSUME(it,{LABEL:"description"})},{ALT:()=>this.CONSUME(Ge)},{ALT:()=>this.CONSUME(We)},{ALT:()=>this.CONSUME(Ye)},{ALT:()=>this.CONSUME(Ke)},{ALT:()=>this.CONSUME(Ze)}])})});constructor(){super(mo),this.performSelfAnalysis()}},z=new Je,He=class extends z.getBaseCstVisitorConstructor(){constructor(){super(),this.validateVisitor()}programHelp(e){let{command:n,subcommand:o}=de(this.getString(e.commandName));return{arguments:this.getArray(e.argument),commandName:n,commands:e.commandsSection?this.visit(e.commandsSection):void 0,description:this.getString(e.description),options:e.optionsSection?this.visit(e.optionsSection):void 0,positionals:e.positionalsSection?this.visit(e.positionalsSection):void 0,subcommandName:o}}positionalsSection(e){return e.sectionRow.map(n=>this.positionalParentCommandToArguments(this.visit(n)))}commandsSection(e){return e.sectionRow.map(n=>this.visit(n))}optionsSection(e){return e.sectionRow.map(n=>this.visit(n))}sectionRow(e){return{aliases:this.getArray(e.alias),arguments:this.getArray(e.argument),choices:this.splitChoices(this.getString(e.choices)),commandName:this.getString(e.commandName),default:e.defaultInfo?!0:void 0,defaultValue:this.getString(e.defaultInfoDescription,!0),description:this.getString(e.description,!0),flags:this.getArray(e.flag),parentCommandName:this.getString(e.parentCommandName),required:e.required?!0:void 0,type:this.getString(e.type,!0)}}positionalParentCommandToArguments(e){let{arguments:n,parentCommandName:o,...i}=e;return o===void 0?e:{arguments:[o,...n??[]],...i}}getString(e,n=!1){if(e!==void 0)return e.map(o=>n?this.clean(o.image):o.image).join(" ")}getArray(e){if(e!==void 0)return e.map(n=>n.image)}clean(e){return e.replaceAll(/^[\s[]*(default:)?\s*|[\s\]]*$/g,"")}splitChoices(e){if(e!==void 0)return this.clean(e.replaceAll(/^\[choices:\s/g,"")).split(", ")}},co=new He;function zt(t){let e=so.tokenize(t);if(e.errors.length>0)throw new Error(`Errors lexing CLI command: ${JSON.stringify(e.errors,void 0,2)}`);z.input=e.tokens;let n=z.programHelp();if(z.errors.length>0)throw new Error(`Errors parsing CLI command help text: ${JSON.stringify(z.errors,void 0,2)}`);let o;try{o=co.visit(n)}catch(i){if(i instanceof Error)throw new TypeError(`Errors visiting CLI command help text: ${String(i)}`)}if(o===void 0)throw new Error("Could not parse help string");return o}var qt={meow:Ft,yargs:zt};function de(t){if(t===void 0)throw new Error('Could not find "commandName" entry in help');let e=t.split(" ");if(e.length===0&&t===void 0)throw new Error('Could not find "commandName" entry in help');if(e.length===1)return{command:e[0],subcommand:void 0};let n=e.at(-1);return{command:e.slice(0,-1).join(" "),subcommand:n}}import{log as rt}from"remark-mdat";function Gt(t){for(let[e,n]of Object.entries(qt)){rt.info(`Trying to parse help string with ${e} parser...`);try{return n(t)}catch(o){o instanceof Error&&rt.info(`Error in "${e}" parser: ${String(o)}`);continue}}rt.error("Could not parse help string with any parser")}import{execaCommand as po}from"execa";import{log as Kt}from"remark-mdat";async function at(t,e="--help",n){let o=`${t} ${e}`,i=await fo(o),r=Gt(i);return r===void 0?(Kt.warn("Falling back to basic cli help text output."),uo(i)):lo(t,e,n??Number.MAX_SAFE_INTEGER,r)}async function lo(t,e,n,o){if(n<=0)return Kt.info("Max CLI command help depth reached, stopping recursion"),"";let i=$t(o,n),r=t.split(" ")[0];if(o.commands)for(let a of o.commands){if(!a.parentCommandName||!a.commandName)continue;let s=await at(`${r} ${a.commandName}`,e,n-1);if(s==="")return i;i+=`
15
15
 
16
16
  ${s}`}return i}function uo(t){return`\`\`\`txt
17
17
  ${t}
@@ -21,8 +21,8 @@ ${n.message}
21
21
  `);return e}import{isExecutable as go}from"is-executable";import ho from"node:path";import{log as yo}from"remark-mdat";import wo from"which";async function Wt(t){return t??=await bo(),Po(t)}async function bo(){let t=await h();if(t!=null&&t.bin){let e=typeof t.bin=="string"?t.bin:String(Object.values(t.bin).at(0));if(Co(e))return yo.info(`Inferred <!-- cli-help --> command to run from package.json: ${e}`),e}throw new Error(`Could not infer which command to run for the <!-- cli-help --> rule. Please pass a "cliCommand" option to the expansion comment, e.g. <!-- cli-help {cliCommend: './dist/bin.js'} -->`)}function Co(t){let e=ho.parse(t);return e.root!==""||e.dir!==""}async function Po(t){let e=await wo(t,{nothrow:!0});if(e===null&&(e=await Oo(t)??void 0),e!==void 0&&await go(e))return e;throw new Error(`The cli-help rule noticed that "${e}" is not executable.`)}async function Oo(t){var n;let e=await h();return((n=e==null?void 0:e.bin)==null?void 0:n[t])??void 0}import{z as ce}from"zod";var Yt={"cli-help":{async content(t){let e=ce.object({cliCommand:ce.string().optional(),depth:ce.number().optional(),helpFlag:ce.string().optional()}).optional().parse(t),n=await Wt(e==null?void 0:e.cliCommand);return at(n,e==null?void 0:e.helpFlag,e==null?void 0:e.depth)}}};import Ro from"node:fs/promises";import Zt from"node:path";import{z as st}from"zod";var Xt={code:{async content(t){let e=st.object({file:st.string(),language:st.string().optional()}).parse(t),n=Zt.extname(e.file)??"",o=await Ro.readFile(Zt.join(process.cwd(),e.file),"utf8");return`\`\`\`${n}
22
22
  ${o}
23
23
  \`\`\``}}};var pe={contributing:{async content(){var n;let t=await h(),e=(n=t==null?void 0:t.bugs)==null?void 0:n.url;if(e===void 0)throw new Error('Could not find "bugs.url" entry in package.json');return`## Contributing
24
- [Issues](${e}) and pull requests are welcome.`},order:15,required:!0}};var le={license:{async content(){let t=await h(),{author:e,license:n}=t;if((e==null?void 0:e.name)===void 0)throw new Error('Could not find "author.name" entry in package.json');if(n===void 0)throw new Error('Could not find "license" entry in package.json');return`## License
25
- [${n}](license.txt) \xA9 ${e.name}`},order:16,required:!0}};import{getSoleRule as Qt}from"remark-mdat";var en={footer:{content:[Qt(pe),Qt(le)],order:17}};var ue={"short-description":{async content(){let t=await h();if(t.description===void 0)throw new Error('Could not find "description" entry in package.json');return`**${t.description}**`},order:4,required:!0}};import{z as fe}from"zod";var ge={title:{applicationOrder:2,async content(t){let{postfix:e,prefix:n,titleCase:o}=fe.object({postfix:fe.string().optional().default(""),prefix:fe.string().optional().default(""),titleCase:fe.boolean().optional().default(!1)}).parse(t??{}),{name:i}=await h();return`# ${n}${o?So(i):i}${e}`},order:1,required:!0}};function So(t){return t.split(/[ _-]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}import{getSoleRule as he}from"remark-mdat";var tn={header:{applicationOrder:2,content:[he(ge),he(ae),he(ie),he(ue)],order:1}};import{toc as ko}from"mdast-util-toc";import{remark as xo}from"remark";import Eo from"remark-gfm";import{z as k}from"zod";var ye={"table-of-contents":{applicationOrder:1,async content(t,e){let n=k.object({depth:k.union([k.literal(1),k.literal(2),k.literal(3),k.literal(4),k.literal(5),k.literal(6)]).optional()}).optional().parse(t),o=ko(e,{heading:null,maxDepth:(n==null?void 0:n.depth)??3,tight:!0}),i="## Table of contents";if(o.map===void 0)throw new Error("Could not generate table of contents");let r={children:o.map.children,type:"root"},a=xo().use(Eo).stringify(r).replaceAll(`
24
+ [Issues](${e}) and pull requests are welcome.`},order:15}};var le={license:{async content(){let t=await h(),{author:e,license:n}=t;if((e==null?void 0:e.name)===void 0)throw new Error('Could not find "author.name" entry in package.json');if(n===void 0)throw new Error('Could not find "license" entry in package.json');return`## License
25
+ [${n}](license.txt) \xA9 ${e.name}`},order:16}};import{getSoleRule as Qt}from"remark-mdat";var en={footer:{content:[Qt(pe),Qt(le)],order:17}};var ue={"short-description":{async content(){let t=await h();if(t.description===void 0)throw new Error('Could not find "description" entry in package.json');return`**${t.description}**`},order:4}};import{z as fe}from"zod";var ge={title:{applicationOrder:2,async content(t){let{postfix:e,prefix:n,titleCase:o}=fe.object({postfix:fe.string().optional().default(""),prefix:fe.string().optional().default(""),titleCase:fe.boolean().optional().default(!1)}).parse(t??{}),{name:i}=await h();return`# ${n}${o?So(i):i}${e}`},order:1}};function So(t){return t.split(/[ _-]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}import{getSoleRule as he}from"remark-mdat";var tn={header:{applicationOrder:2,content:[he(ge),he(ae),he(ie),he(ue)],order:1}};import{toc as ko}from"mdast-util-toc";import{remark as xo}from"remark";import Eo from"remark-gfm";import{z as k}from"zod";var ye={"table-of-contents":{applicationOrder:1,async content(t,e){let n=k.object({depth:k.union([k.literal(1),k.literal(2),k.literal(3),k.literal(4),k.literal(5),k.literal(6)]).optional()}).optional().parse(t),o=ko(e,{heading:null,maxDepth:(n==null?void 0:n.depth)??3,tight:!0}),i="## Table of contents";if(o.map===void 0)throw new Error("Could not generate table of contents");let r={children:o.map.children,type:"root"},a=xo().use(Eo).stringify(r).replaceAll(`
26
26
 
27
27
  `,`
28
28
  `);return[i,a].join(`
@@ -300,4 +300,4 @@ _State anyone or anything that significantly helped with the development of your
300
300
  <!-- contributing -->
301
301
 
302
302
  <!-- license -->
303
- `;var $={"Mdat Readme":{content:{compound:un,explicit:fn},description:"The house style. An expansive starting point. Prune to your context and taste.",exampleLink:"https://github.com/kitschpatrol/mdat/blob/main/readme.md"},"Standard Readme Basic":{content:{compound:gn,explicit:hn},description:'Includes only the "required" sections from the Standard Readme specification.',exampleLink:"https://github.com/RichardLitt/standard-readme/blob/main/example-readmes/minimal-readme.md"},"Standard Readme Full":{content:{compound:yn,explicit:wn},description:"Includes all sections from the Standard Readme specification.",exampleLink:"https://github.com/RichardLitt/standard-readme/blob/main/example-readmes/maximal-readme.md"}};import{confirm as bn,group as jo,intro as Fo,note as Cn,outro as Uo,select as pt}from"@clack/prompts";import x from"chalk";import Vo from"node:fs/promises";import Pe from"node:path";import{deepMergeDefined as Bo}from"remark-mdat";import{write as Jo}from"to-vfile";async function Pn(){let t=await ct(),e=await X();return{packageDirectory:e===void 0?void 0:Pe.dirname(Pe.resolve(e)),readmePath:t}}async function On(){let{packageDirectory:t,readmePath:e}=await Pn(),n=Pe.resolve(process.cwd());Fo(`Running ${x.bold("mdat readme init")} interactively`);let o=await jo({overwrite:async()=>e===void 0||await bn({message:`Found an existing readme at "${x.blue(e)}". Do you want to overwrite it?`,active:"Overwrite",inactive:"Exit"})?!0:(()=>{throw new Error("`mdat readme init` was cancelled to avoid an overwrite - no changes were made")})(),output:async()=>t!==void 0&&t!==n?pt({initialValue:t,message:"There's a root package directory nearby, do you want to create the readme there instead of the current directory?",options:[{label:`Create in the current package root: "${x.blue(t)}"`,value:t},{label:`Create in current working directory: "${x.blue(n)}"`,value:n}]}):n,template:async()=>pt({message:"Which template would you like to use?",options:qo()}),compound:async()=>pt({message:'Do you want to use "compound comments" where possible, which combine several expansions into a single comment block?',options:[{label:`Yes: Combine things like ${x.green("<!-- title -->")} and ${x.green("<!-- badges -->")} in a single ${x.green("<!-- header -->")} comment.`,value:!0},{label:"No: Use individual `mdat` expansion comments for each section.",value:!1}]}),expand:async()=>t===void 0?!1:bn({initialValue:!0,message:"Do you want to run `mdat readme` now to expand the template with content from your package.json?"})},{onCancel(){throw new Error("`mdat readme init` was cancelled - no changes were made")}}),i=await lt(o);return t===void 0&&Cn("No package.json was found. Once you've created one, you can run `mdat readme` to expand the template with content from your package.json."),Cn(`Readme created: "${x.bold.blue(i)}"`),Uo("Done!"),i}async function lt(t){let{packageDirectory:e}=await Pn(),n=Bo({compound:!0,output:e??process.cwd(),overwrite:!0,expand:e!==void 0,template:Object.keys($)[0]},t??{}),o=Ho(n.template,n.compound),i=Pe.join(n.output,"readme.md");await Vo.writeFile(i,o,"utf8");let[r]=await Ce(i);return await Jo(r),i}function Ho(t,e){let o=$[t].content[e?"compound":"explicit"];if(o===void 0||o==="")throw new Error(`No template found for "${t}"`);return o}function qo(){return Object.entries($).map(([t,e])=>({label:t,hint:e.description,value:t}))}var N={config:{defaultDescription:"Configuration is loaded if found from the usual places, or defaults are used.",description:"Path(s) to files containing mdat configs.",string:!0,type:"array"}},G={meta:{alias:"m",description:"Embed an extra comment at the top of the generated Markdown warning editors that certain sections of the document have been generated dynamically.",type:"boolean"}},K={name:{alias:"n",defaultDescription:"Same name as input file. Overwrites the input file.",description:"Output file name.",type:"string"}},F={output:{alias:"o",defaultDescription:"Same directory as input file.",description:"Output file directory.",type:"string"}},A={prefix:{description:"Require a string prefix before all comments to be considered for expansion. Useful if you have a bunch of non-`mdat` comments in your Markdown file, or if you're willing to trade some verbosity for safety.",type:"string"}},W={print:{description:"Print the expanded Markdown to stdout instead of saving to a file. Ignores `--output` and `--name` options.",type:"boolean"}},Y={rules:{alias:"r",description:"Path(s) to files containing `mdat` comment expansion rules.",string:!0,type:"array"}},E={verbose:{describe:"Enable verbose logging. All verbose logs and prefixed with their log level and are printed to stderr for ease of redirection.",type:"boolean"}},Oe=["files",{array:!0,demandOption:!0,describe:"Markdown file(s) with `mdat` placeholder comments to collapse.",type:"string"}];var ut={package:{defaultDescription:"The closest package.json file is used by default.",description:"Path to the package.json file to use to populate the readme.",string:!0}},ft={assets:{defaultDescription:"./assets",description:"Path to find and save readme-related assets.",string:!0}},Rn={interactive:{alias:"i",default:!0,description:"Run the guided interactive `init` process. Set explicitly to `false` to use default values and skip the prompt.",type:"boolean"}},Sn={overwrite:{default:!1,defaultDescription:"`false`, if an existing readme is found, don't touch it.",description:"Replace an existing readme file if one is found.",type:"boolean"}},kn={expand:{alias:"e",default:!0,description:"Automatically run `mdat readme` immediately after creating the readme template.",type:"boolean"}},xn={template:{alias:"t",choices:Object.keys($),default:Object.keys($)[0],description:"Specify a template to use for the new readme.",type:"string"}},En={compound:{alias:"c",default:!0,description:"Use compound comment version of the template to replace several individual comment placeholders where possible. This combines things like `<!-- title -->`, `<!-- badges -->`, etc. in a single `<!-- header -->` comment. It's less clutter when you're editing, but it's also less explicit. The final readme.md output is identical.",type:"boolean"}},Re=["files",{array:!0,demandOption:!1,describe:"Readme file(s) with `mdat` placeholder comments to collapse. If not provided, the closest readme.md file is used.",type:"string"}];import gt from"chalk";import _ from"pretty-ms";import{getMdatReports as zo,log as u,reporterMdat as U}from"remark-mdat";import{write as Se}from"to-vfile";import Go from"yargs";import{hideBin as Ko}from"yargs/helpers";var I=performance.now(),Ln=Go(Ko(process.argv));try{await Ln.scriptName("mdat").usage("$0 [command]","Work with `mdat` placeholder comments in any Markdown file.").command(["$0 <files..> [options]","expand <files..> [options]"],"Expand `mdat` placeholder comments.",t=>t.positional(...Oe).option(N).option(Y).option(F).option(K).option(G).option(A).option(W).option(E),async({config:t,files:e,meta:n,name:o,output:i,prefix:r,print:a,rules:s,verbose:d})=>{u.verbose=d??!1,ke({name:o,output:i,print:a});let m=V(t,{addMetaComment:n,keywordPrefix:r}),c=await Et(e,o,i,m,s);for(let p of c)a?process.stdout.write(p.toString()):await Se(p);U(c),u.info(`Expanded comments in ${_(performance.now()-I)}.`),process.exitCode=B(c)}).command("check <files..> [options]","Validate a markdown file with `mdat` placeholder comments.",t=>t.positional(...Oe).option(N).option(Y).option(G).option(A).option(E),async({config:t,files:e,meta:n,prefix:o,rules:i,verbose:r})=>{u.verbose=r??!1;let a=V(t,{addMetaComment:n,keywordPrefix:o}),s=await Lt(e,void 0,void 0,a,i);U(s),u.info(`Checked comments in ${_(performance.now()-I)}.`),process.exitCode=B(s)}).command("collapse <files..> [options]","Collapse `mdat` placeholder comments.",t=>t.positional(...Oe).option(N).option(F).option(K).option(A).option(W).option(E),async({config:t,files:e,name:n,output:o,prefix:i,print:r,verbose:a})=>{u.verbose=a??!1,ke({name:n,output:o,print:r});let s=V(t,{keywordPrefix:i}),d=await vt(e,void 0,void 0,s);for(let m of d)r?process.stdout.write(m.toString()):await Se(m);U(d),u.info(`Cleaned comments in ${_(performance.now()-I)}.`),process.exitCode=B(d)}).command("readme [command]","Work with `mdat` comments in your readme.md.",t=>t.command(["$0 [files..] [options]","expand [files..] [options]"],"Expand `mdat` comment placeholders in your readme.md using a collection of helpful built-in expansion rules.",e=>e.positional(...Re).option(N).option(Y).option(F).option(K).option(ut).option(ft).option(A).option(G).option(W).option(E),async({assets:e,config:n,files:o,meta:i,name:r,output:a,package:s,prefix:d,print:m,rules:c,verbose:p})=>{u.verbose=p??!1,ke({name:r,output:a,print:m});let g=V(n,{addMetaComment:i,assetsPath:e,keywordPrefix:d,packageFile:s}),y=await Ce(o,r,a,g,c);for(let M of y)m?process.stdout.write(M.toString()):await Se(M);U(y);let{packageFile:w}=await P();u.info(`Pulled package metadata from: ${gt.bold.blue(w)}`),u.info(`Expanded readme(s) in ${_(performance.now()-I)}.`),process.exitCode=B(y)}).command("check [files..] [options]","Validate `mdat` placeholder comments in your readme.md.",e=>e.positional(...Re).option(N).option(Y).option(ut).option(ft).option(A).option(G).option(E),async({assets:e,config:n,files:o,meta:i,package:r,prefix:a,rules:s,verbose:d})=>{u.verbose=d??!1;let m=V(n,{addMetaComment:i,assetsPath:e,keywordPrefix:a,packageFile:r}),c=await pn(o,void 0,void 0,m,s);U(c);let{packageFile:p}=await P();u.info(`Pulled package metadata from: ${gt.bold.blue(p)}`),u.info(`Checked readme(s) in ${_(performance.now()-I)}.`),process.exitCode=B(c)}).command("collapse [files..] [options]","Collapse `mdat` placeholder comments in your readme.md.",e=>e.positional(...Re).option(F).option(K).option(W).option(N).option(A).option(E),async({config:e,files:n,name:o,output:i,prefix:r,print:a,verbose:s})=>{u.verbose=s??!1,ke({name:o,output:i,print:a});let d=V(e,{keywordPrefix:r}),m=await ln(n,void 0,void 0,d);for(let c of m)a?process.stdout.write(c.toString()):await Se(c);U(m),u.info(`Cleaned readme(s) in ${_(performance.now()-I)}.`),process.exitCode=B(m)}).command("init [options]","Interactively create a new readme.md file with sensible default `mdat` comment placeholders.",e=>e.option(Rn).option(Sn).option(F).option(kn).option(xn).option(En).option(E),async({compound:e,expand:n,interactive:o,output:i,overwrite:r,template:a,verbose:s})=>{if(u.verbose=s??!1,o)await On();else{let d=await lt({compound:e,expand:n,output:i,overwrite:r,template:a});u.info(`Created readme at "${gt.blue(d)}" in ${_(performance.now()-I)}.`)}process.exitCode=0}),()=>{u.error("Root mdat readme command should be unreachable.")}).help().alias("h","help").version().alias("v","version").wrap(process.stdout.isTTY?Math.min(120,Ln.terminalWidth()):0).fail(!1).parse()}catch(t){t instanceof Error&&u.error(t.message),process.exitCode=1}function ke(t){t.print&&t.output&&u.warn("Ignoring --output option because --print is set"),t.print&&t.name&&u.warn("Ignoring --name option because --print is set")}function V(t,e){return[...Q(t),e]}function B(t){return zo(t).reduce((o,i)=>o+i.errors.length,0)>0?1:0}
303
+ `;var $={"Mdat Readme":{content:{compound:un,explicit:fn},description:"The house style. An expansive starting point. Prune to your context and taste.",exampleLink:"https://github.com/kitschpatrol/mdat/blob/main/readme.md"},"Standard Readme Basic":{content:{compound:gn,explicit:hn},description:'Includes only the "required" sections from the Standard Readme specification.',exampleLink:"https://github.com/RichardLitt/standard-readme/blob/main/example-readmes/minimal-readme.md"},"Standard Readme Full":{content:{compound:yn,explicit:wn},description:"Includes all sections from the Standard Readme specification.",exampleLink:"https://github.com/RichardLitt/standard-readme/blob/main/example-readmes/maximal-readme.md"}};import{confirm as bn,group as jo,intro as Fo,note as Cn,outro as Uo,select as pt}from"@clack/prompts";import x from"chalk";import Vo from"node:fs/promises";import Pe from"node:path";import{deepMergeDefined as Bo}from"remark-mdat";import{write as Jo}from"to-vfile";async function Pn(){let t=await ct(),e=await X();return{packageDirectory:e===void 0?void 0:Pe.dirname(Pe.resolve(e)),readmePath:t}}async function On(){let{packageDirectory:t,readmePath:e}=await Pn(),n=Pe.resolve(process.cwd());Fo(`Running ${x.bold("mdat readme init")} interactively`);let o=await jo({overwrite:async()=>e===void 0||await bn({message:`Found an existing readme at "${x.blue(e)}". Do you want to overwrite it?`,active:"Overwrite",inactive:"Exit"})?!0:(()=>{throw new Error("`mdat readme init` was cancelled to avoid an overwrite - no changes were made")})(),output:async()=>t!==void 0&&t!==n?pt({initialValue:t,message:"There's a root package directory nearby, do you want to create the readme there instead of the current directory?",options:[{label:`Create in the current package root: "${x.blue(t)}"`,value:t},{label:`Create in current working directory: "${x.blue(n)}"`,value:n}]}):n,template:async()=>pt({message:"Which template would you like to use?",options:zo()}),compound:async()=>pt({message:'Do you want to use "compound comments" where possible, which combine several expansions into a single comment block?',options:[{label:`Yes: Combine things like ${x.green("<!-- title -->")} and ${x.green("<!-- badges -->")} in a single ${x.green("<!-- header -->")} comment.`,value:!0},{label:"No: Use individual `mdat` expansion comments for each section.",value:!1}]}),expand:async()=>t===void 0?!1:bn({initialValue:!0,message:"Do you want to run `mdat readme` now to expand the template with content from your package.json?"})},{onCancel(){throw new Error("`mdat readme init` was cancelled - no changes were made")}}),i=await lt(o);return t===void 0&&Cn("No package.json was found. Once you've created one, you can run `mdat readme` to expand the template with content from your package.json."),Cn(`Readme created: "${x.bold.blue(i)}"`),Uo("Done!"),i}async function lt(t){let{packageDirectory:e}=await Pn(),n=Bo({compound:!0,output:e??process.cwd(),overwrite:!0,expand:e!==void 0,template:Object.keys($)[0]},t??{}),o=Ho(n.template,n.compound),i=Pe.join(n.output,"readme.md");await Vo.writeFile(i,o,"utf8");let[r]=await Ce(i);return await Jo(r),i}function Ho(t,e){let o=$[t].content[e?"compound":"explicit"];if(o===void 0||o==="")throw new Error(`No template found for "${t}"`);return o}function zo(){return Object.entries($).map(([t,e])=>({label:t,hint:e.description,value:t}))}var N={config:{defaultDescription:"Configuration is loaded if found from the usual places, or defaults are used.",description:"Path(s) to files containing mdat configs.",string:!0,type:"array"}},G={meta:{alias:"m",description:"Embed an extra comment at the top of the generated Markdown warning editors that certain sections of the document have been generated dynamically.",type:"boolean"}},K={name:{alias:"n",defaultDescription:"Same name as input file. Overwrites the input file.",description:"Output file name.",type:"string"}},F={output:{alias:"o",defaultDescription:"Same directory as input file.",description:"Output file directory.",type:"string"}},A={prefix:{description:"Require a string prefix before all comments to be considered for expansion. Useful if you have a bunch of non-`mdat` comments in your Markdown file, or if you're willing to trade some verbosity for safety.",type:"string"}},W={print:{description:"Print the expanded Markdown to stdout instead of saving to a file. Ignores `--output` and `--name` options.",type:"boolean"}},Y={rules:{alias:"r",description:"Path(s) to files containing `mdat` comment expansion rules.",string:!0,type:"array"}},E={verbose:{describe:"Enable verbose logging. All verbose logs and prefixed with their log level and are printed to stderr for ease of redirection.",type:"boolean"}},Oe=["files",{array:!0,demandOption:!0,describe:"Markdown file(s) with `mdat` placeholder comments to collapse.",type:"string"}];var ut={package:{defaultDescription:"The closest package.json file is used by default.",description:"Path to the package.json file to use to populate the readme.",string:!0}},ft={assets:{defaultDescription:"./assets",description:"Path to find and save readme-related assets.",string:!0}},Rn={interactive:{alias:"i",default:!0,description:"Run the guided interactive `init` process. Set explicitly to `false` to use default values and skip the prompt.",type:"boolean"}},Sn={overwrite:{default:!1,defaultDescription:"`false`, if an existing readme is found, don't touch it.",description:"Replace an existing readme file if one is found.",type:"boolean"}},kn={expand:{alias:"e",default:!0,description:"Automatically run `mdat readme` immediately after creating the readme template.",type:"boolean"}},xn={template:{alias:"t",choices:Object.keys($),default:Object.keys($)[0],description:"Specify a template to use for the new readme.",type:"string"}},En={compound:{alias:"c",default:!0,description:"Use compound comment version of the template to replace several individual comment placeholders where possible. This combines things like `<!-- title -->`, `<!-- badges -->`, etc. in a single `<!-- header -->` comment. It's less clutter when you're editing, but it's also less explicit. The final readme.md output is identical.",type:"boolean"}},Re=["files",{array:!0,demandOption:!1,describe:"Readme file(s) with `mdat` placeholder comments to collapse. If not provided, the closest readme.md file is used.",type:"string"}];import gt from"chalk";import _ from"pretty-ms";import{getMdatReports as qo,log as u,reporterMdat as U}from"remark-mdat";import{write as Se}from"to-vfile";import Go from"yargs";import{hideBin as Ko}from"yargs/helpers";var I=performance.now(),Ln=Go(Ko(process.argv));try{await Ln.scriptName("mdat").usage("$0 [command]","Work with `mdat` placeholder comments in any Markdown file.").command(["$0 <files..> [options]","expand <files..> [options]"],"Expand `mdat` placeholder comments.",t=>t.positional(...Oe).option(N).option(Y).option(F).option(K).option(G).option(A).option(W).option(E),async({config:t,files:e,meta:n,name:o,output:i,prefix:r,print:a,rules:s,verbose:d})=>{u.verbose=d??!1,ke({name:o,output:i,print:a});let m=V(t,{addMetaComment:n,keywordPrefix:r}),c=await Et(e,o,i,m,s);for(let p of c)a?process.stdout.write(p.toString()):await Se(p);U(c),u.info(`Expanded comments in ${_(performance.now()-I)}.`),process.exitCode=B(c)}).command("check <files..> [options]","Validate a markdown file with `mdat` placeholder comments.",t=>t.positional(...Oe).option(N).option(Y).option(G).option(A).option(E),async({config:t,files:e,meta:n,prefix:o,rules:i,verbose:r})=>{u.verbose=r??!1;let a=V(t,{addMetaComment:n,keywordPrefix:o}),s=await Lt(e,void 0,void 0,a,i);U(s),u.info(`Checked comments in ${_(performance.now()-I)}.`),process.exitCode=B(s)}).command("collapse <files..> [options]","Collapse `mdat` placeholder comments.",t=>t.positional(...Oe).option(N).option(F).option(K).option(A).option(W).option(E),async({config:t,files:e,name:n,output:o,prefix:i,print:r,verbose:a})=>{u.verbose=a??!1,ke({name:n,output:o,print:r});let s=V(t,{keywordPrefix:i}),d=await vt(e,void 0,void 0,s);for(let m of d)r?process.stdout.write(m.toString()):await Se(m);U(d),u.info(`Cleaned comments in ${_(performance.now()-I)}.`),process.exitCode=B(d)}).command("readme [command]","Work with `mdat` comments in your readme.md.",t=>t.command(["$0 [files..] [options]","expand [files..] [options]"],"Expand `mdat` comment placeholders in your readme.md using a collection of helpful built-in expansion rules.",e=>e.positional(...Re).option(N).option(Y).option(F).option(K).option(ut).option(ft).option(A).option(G).option(W).option(E),async({assets:e,config:n,files:o,meta:i,name:r,output:a,package:s,prefix:d,print:m,rules:c,verbose:p})=>{u.verbose=p??!1,ke({name:r,output:a,print:m});let g=V(n,{addMetaComment:i,assetsPath:e,keywordPrefix:d,packageFile:s}),y=await Ce(o,r,a,g,c);for(let M of y)m?process.stdout.write(M.toString()):await Se(M);U(y);let{packageFile:w}=await P();u.info(`Pulled package metadata from: ${gt.bold.blue(w)}`),u.info(`Expanded readme(s) in ${_(performance.now()-I)}.`),process.exitCode=B(y)}).command("check [files..] [options]","Validate `mdat` placeholder comments in your readme.md.",e=>e.positional(...Re).option(N).option(Y).option(ut).option(ft).option(A).option(G).option(E),async({assets:e,config:n,files:o,meta:i,package:r,prefix:a,rules:s,verbose:d})=>{u.verbose=d??!1;let m=V(n,{addMetaComment:i,assetsPath:e,keywordPrefix:a,packageFile:r}),c=await pn(o,void 0,void 0,m,s);U(c);let{packageFile:p}=await P();u.info(`Pulled package metadata from: ${gt.bold.blue(p)}`),u.info(`Checked readme(s) in ${_(performance.now()-I)}.`),process.exitCode=B(c)}).command("collapse [files..] [options]","Collapse `mdat` placeholder comments in your readme.md.",e=>e.positional(...Re).option(F).option(K).option(W).option(N).option(A).option(E),async({config:e,files:n,name:o,output:i,prefix:r,print:a,verbose:s})=>{u.verbose=s??!1,ke({name:o,output:i,print:a});let d=V(e,{keywordPrefix:r}),m=await ln(n,void 0,void 0,d);for(let c of m)a?process.stdout.write(c.toString()):await Se(c);U(m),u.info(`Cleaned readme(s) in ${_(performance.now()-I)}.`),process.exitCode=B(m)}).command("init [options]","Interactively create a new readme.md file with sensible default `mdat` comment placeholders.",e=>e.option(Rn).option(Sn).option(F).option(kn).option(xn).option(En).option(E),async({compound:e,expand:n,interactive:o,output:i,overwrite:r,template:a,verbose:s})=>{if(u.verbose=s??!1,o)await On();else{let d=await lt({compound:e,expand:n,output:i,overwrite:r,template:a});u.info(`Created readme at "${gt.blue(d)}" in ${_(performance.now()-I)}.`)}process.exitCode=0}),()=>{u.error("Root mdat readme command should be unreachable.")}).help().alias("h","help").version().alias("v","version").wrap(process.stdout.isTTY?Math.min(120,Ln.terminalWidth()):0).fail(!1).parse()}catch(t){t instanceof Error&&u.error(t.message),process.exitCode=1}function ke(t){t.print&&t.output&&u.warn("Ignoring --output option because --print is set"),t.print&&t.name&&u.warn("Ignoring --name option because --print is set")}function V(t,e){return[...Q(t),e]}function B(t){return qo(t).reduce((o,i)=>o+i.errors.length,0)>0?1:0}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import{defaultLoaders as Ft}from"cosmiconfig";function re(t,e){let n=Ft[".json"],o=n(t,e);return Ve(o)}function Ve(t,e="",n={}){for(let[o,r]of Object.entries(t)){let i=e?`${e}.${o}`:o;typeof r=="object"&&r!==null&&!Array.isArray(r)?Ve(r,i,n):r===null?n[i]="null":n[i]=r.toString()}return n}import jt from"node:fs";import P from"node:path";import{packageUp as Dt}from"package-up";import{isFileSync as Je}from"path-type";import Ut from"untildify";function vt(t,e){let n=e===0?1:Math.floor(Math.log10(Math.abs(e))+1);return t.toString().padStart(n,"0")}function He(t,e,n,o){let r=[];for(let[i,s]of t.entries()){let a=n&&t.length>1?`-${vt(i+1,t.length+1)}`:"",d=It(s,e,n,o,a);r.push(d)}return r}function It(t,e,n,o,r=""){let i=Be(t),s=e?Be(e):void 0;if(!Je(i))throw new Error(`Input file not found: "${i}"`);if(s){if(Je(s))throw new Error(`Output path must be a directory, received a file path: "${s}"`);jt.mkdirSync(s,{recursive:!0})}let a=n?P.basename(n,P.extname(n)):P.basename(i,P.extname(i)),d=`.${o??(n&&P.extname(n)!==""?P.extname(n):P.extname(t)===""?"":P.extname(t))}`,m=`${a}${r}${d}`,p=s??P.dirname(i);return{input:i,name:m,output:p}}function Be(t){return Ut(t)}async function ze(){return Dt()}function qe(t){return t==null?[]:Array.isArray(t)?t:[t]}import Ke from"chalk";import{cosmiconfig as Ge}from"cosmiconfig";import _t from"node:fs/promises";import Ze from"node:path";import Vt from"plur";import{readPackage as Jt}from"read-pkg";import{deepMergeDefined as _,log as h,optionsSchema as Bt,rulesSchema as Ht}from"remark-mdat";import{z as ie}from"zod";var Ye=Bt.merge(ie.object({assetsPath:ie.string().optional(),packageFile:ie.string().optional()})).describe("Config Extension");async function y(t){let{additionalConfig:e,additionalRules:n,searchFrom:o}=t??{},r={addMetaComment:!1,assetsPath:"./assets",closingPrefix:"/",keywordPrefix:"",metaCommentIdentifier:"+",packageFile:await ze(),rules:{mdat:"Powered by the Markdown Autophagic Template system: [mdat](https://github.com/kitschpatrol/mdat)."}},i=Ge("mdat"),s=await i.search(o);if(s){let{config:a,filepath:d}=s;h.info(`Using config from "${d}"`);let m=We(a,Ye);m&&(r=_(r,m))}if(e!==void 0){let a=Array.isArray(e)?e:[e];for(let d of a){let m;if(typeof d=="string"){let f=await i.load(d);if(f==null)continue;let{config:g,filepath:L}=f;h.info(`Loaded additional config from "${L}"`),m=g}else m=d;if(m===void 0)continue;h.info("Merging configuration object");let p=We(m,Ye);p!==void 0&&(r=_(r,p))}}if(n!==void 0){let a=Array.isArray(n)?n:[n],d=Ge("mdat",{loaders:{".json":re}});for(let m of a){let p;if(typeof m=="string"){let g;if(Ze.basename(m).endsWith("package.json")){let oe=await _t.readFile(m,"utf8");g={config:re(m,oe),filepath:m}}else g=await d.load(m);if(g==null)continue;let{config:L,filepath:w}=g;h.info(`Loaded additional config from "${w}"`),p=L}else p=m;if(p===void 0)continue;h.info("Merging rules into configuration object");let f=zt(p,Ht);f!==void 0&&(r=_(r,f))}}if(r.rules){let a=Object.keys(r.rules).sort().map(d=>`"${Ke.bold.green(d)}"`);h.info(`Loaded ${Ke.bold(a.length)} mdat comment expansion ${Vt("rule",a.length)}:`);for(let d of a)h.info(` ${d}`)}else h.error("No rules loaded from additional configurations or rules, using default.");return V=r,r}function zt(t,e){if(e.safeParse(t).success)return{rules:t};h.error(`Rules object has the wrong shape. Ignoring and using default configuration:
1
+ import{defaultLoaders as Ft}from"cosmiconfig";function re(t,e){let n=Ft[".json"],o=n(t,e);return Ve(o)}function Ve(t,e="",n={}){for(let[o,r]of Object.entries(t)){let i=e?`${e}.${o}`:o;typeof r=="object"&&r!==null&&!Array.isArray(r)?Ve(r,i,n):r===null?n[i]="null":n[i]=r.toString()}return n}import jt from"node:fs";import P from"node:path";import{packageUp as Dt}from"package-up";import{isFileSync as Je}from"path-type";import Ut from"untildify";function vt(t,e){let n=e===0?1:Math.floor(Math.log10(Math.abs(e))+1);return t.toString().padStart(n,"0")}function He(t,e,n,o){let r=[];for(let[i,s]of t.entries()){let a=n&&t.length>1?`-${vt(i+1,t.length+1)}`:"",d=It(s,e,n,o,a);r.push(d)}return r}function It(t,e,n,o,r=""){let i=Be(t),s=e?Be(e):void 0;if(!Je(i))throw new Error(`Input file not found: "${i}"`);if(s){if(Je(s))throw new Error(`Output path must be a directory, received a file path: "${s}"`);jt.mkdirSync(s,{recursive:!0})}let a=n?P.basename(n,P.extname(n)):P.basename(i,P.extname(i)),d=`.${o??(n&&P.extname(n)!==""?P.extname(n):P.extname(t)===""?"":P.extname(t))}`,m=`${a}${r}${d}`,p=s??P.dirname(i);return{input:i,name:m,output:p}}function Be(t){return Ut(t)}async function ze(){return Dt()}function Ke(t){return t==null?[]:Array.isArray(t)?t:[t]}import Ge from"chalk";import{cosmiconfig as qe}from"cosmiconfig";import _t from"node:fs/promises";import Ze from"node:path";import Vt from"plur";import{readPackage as Jt}from"read-pkg";import{deepMergeDefined as _,log as h,optionsSchema as Bt,rulesSchema as Ht}from"remark-mdat";import{z as ie}from"zod";var Ye=Bt.merge(ie.object({assetsPath:ie.string().optional(),packageFile:ie.string().optional()})).describe("Config Extension");async function y(t){let{additionalConfig:e,additionalRules:n,searchFrom:o}=t??{},r={addMetaComment:!1,assetsPath:"./assets",closingPrefix:"/",keywordPrefix:"",metaCommentIdentifier:"+",packageFile:await ze(),rules:{mdat:"Powered by the Markdown Autophagic Template system: [mdat](https://github.com/kitschpatrol/mdat)."}},i=qe("mdat"),s=await i.search(o);if(s){let{config:a,filepath:d}=s;h.info(`Using config from "${d}"`);let m=We(a,Ye);m&&(r=_(r,m))}if(e!==void 0){let a=Array.isArray(e)?e:[e];for(let d of a){let m;if(typeof d=="string"){let f=await i.load(d);if(f==null)continue;let{config:g,filepath:L}=f;h.info(`Loaded additional config from "${L}"`),m=g}else m=d;if(m===void 0)continue;h.info("Merging configuration object");let p=We(m,Ye);p!==void 0&&(r=_(r,p))}}if(n!==void 0){let a=Array.isArray(n)?n:[n],d=qe("mdat",{loaders:{".json":re}});for(let m of a){let p;if(typeof m=="string"){let g;if(Ze.basename(m).endsWith("package.json")){let oe=await _t.readFile(m,"utf8");g={config:re(m,oe),filepath:m}}else g=await d.load(m);if(g==null)continue;let{config:L,filepath:w}=g;h.info(`Loaded additional config from "${w}"`),p=L}else p=m;if(p===void 0)continue;h.info("Merging rules into configuration object");let f=zt(p,Ht);f!==void 0&&(r=_(r,f))}}if(r.rules){let a=Object.keys(r.rules).sort().map(d=>`"${Ge.bold.green(d)}"`);h.info(`Loaded ${Ge.bold(a.length)} mdat comment expansion ${Vt("rule",a.length)}:`);for(let d of a)h.info(` ${d}`)}else h.error("No rules loaded from additional configurations or rules, using default.");return V=r,r}function zt(t,e){if(e.safeParse(t).success)return{rules:t};h.error(`Rules object has the wrong shape. Ignoring and using default configuration:
2
2
  ${JSON.stringify(t,void 0,2)}`)}function We(t,e){if(e.safeParse(t).success)return t;h.error(`Config object has the wrong shape. Ignoring and using default configuration:
3
- ${JSON.stringify(t,void 0,2)}`)}var V;async function b(){return V===void 0&&(h.warn("getConfig(): config was undefined"),V??=await y()),V}var se;async function l(){let{packageFile:t}=await b();if(t===void 0)throw new Error("No packageFile found or set in config");if(se??=await Jt({cwd:Ze.dirname(t)}),se===void 0)throw new Error("No package.json found");return se}function qt(t,e){return _(t,e)}import{remark as ae}from"remark";import me from"remark-gfm";import{mdatCheck as Kt,mdatClean as Xe,mdatExpand as Gt,mdatSplit as Qe}from"remark-mdat";import{read as Yt}from"to-vfile";import{VFile as Wt}from"vfile";async function E(t,e,n,o,r,i,s){let a=await e({additionalConfig:i,additionalRules:s});i=a;let d=qe(t),m=He(d,r,o,"md"),p=[],f=n(a);for(let{input:g,name:L,output:w}of m){let oe=await Yt(g),I=await f.process(oe);I.dirname=w,I.basename=L,p.push(I)}return p}async function O(t,e,n,o,r){let i=await e({additionalConfig:o,additionalRules:r});return o=i,n(i).process(new Wt(t))}function $(t){return ae().use({settings:{bullet:"-",emphasis:"_"}}).use(me).use(()=>async function(n,o){Qe(n,o),Xe(n,o,t),await Gt(n,o,t)})}function F(t){return ae().use({settings:{bullet:"-",emphasis:"_"}}).use(me).use(()=>function(n,o){Qe(n,o),Xe(n,o,t)})}function x(t){return ae().use({settings:{bullet:"-",emphasis:"_"}}).use(me).use(()=>async function(n,o){await Kt(n,o,{...t,paranoid:!1})})}async function Zt(t,e,n,o,r){return E(t,y,$,e,n,o,r)}async function Xt(t,e,n){return O(t,y,$,e,n)}async function Qt(t,e,n,o,r){return E(t,y,x,e,n,o,r)}async function en(t,e,n){return O(t,y,x,e,n)}async function tn(t,e,n,o,r){return E(t,y,F,e,n,o,r)}async function nn(t,e,n){return O(t,y,F,e,n)}import{z as k}from"zod";var J={badges:{async content(t){var s;let e=k.object({custom:k.record(k.object({image:k.string(),link:k.string()})).optional(),npm:k.array(k.string()).optional()}).optional().parse(t),n=await l(),{name:o}=n,r=[];if(!n.private&&((s=n.publishConfig)==null?void 0:s.access)==="public"&&r.push(`[![NPM Package ${o}](https://img.shields.io/npm/v/${o}.svg)](https://npmjs.com/package/${o})`),(e==null?void 0:e.npm)!==void 0)for(let a of e.npm)r.push(`[![NPM Package ${a}](https://img.shields.io/npm/v/${a}.svg)](https://npmjs.com/package/${a})`);let{license:i}=n;if(i!==void 0&&r.push(`[![License: ${i}](https://img.shields.io/badge/License-${i}-yellow.svg)](https://opensource.org/licenses/${i})`),(e==null?void 0:e.custom)!==void 0)for(let[a,{image:d,link:m}]of Object.entries(e.custom))r.push(`[![${a}](${d})](${m})`);return r.join(`
4
- `)},order:3,required:!1}};import{globby as on}from"globby";import B from"node:path";import{isFile as rn}from"path-type";import{readPackage as sn}from"read-pkg";import{z as de}from"zod";var H={banner:{async content(t){let e=de.object({alt:de.string().optional(),src:de.string().optional()}).optional().parse(t),{assetsPath:n,packageFile:o}=await b();if(o===void 0)throw new Error("No package.json found");let r=(e==null?void 0:e.src)??await an(n);if(r===void 0)throw new Error("Banner image not found at any typical location, consider adding something at ./assets/banner.webp");if(!et(r)&&!await rn(r))throw new Error(`Banner image not found at "${r}"`);let i=(e==null?void 0:e.alt)??`${(await sn({cwd:B.dirname(o)})).name} banner`;if(i===void 0||i==="undefined banner")throw new Error("Banner image alt text not available");return`![${i}](${r})`},order:2}};async function an(t){let{packageFile:e}=await b();if(e===void 0)throw new Error("No package.json found");let n=B.dirname(e),o=t===void 0?[".","assets","media","readme-assets","readme-media","readme","images"]:[t],r=["banner","header","logo","readme","cover","screenshot","screenshots","demo","overview","image","hero"],i=["png","gif","jpg","jpeg","svg","webp"],s=await on(o.map(a=>B.join(n,a)),{expandDirectories:{extensions:i,files:r}});if(s.length>0)return B.relative(process.cwd(),s[0])}function et(t,e=!0){if(typeof t!="string")throw new TypeError("Expected a string");if(t=t.trim(),t.includes(" "))return!1;try{return new URL(t),!0}catch{return e?et(`https://${t}`,!1):!1}}function tt(t,e=Number.MAX_SAFE_INTEGER){var r;let n=[],o=mn(t,e);return n.push(dn(o)),n.push(cn(t,o)),o.hasMultipleSubcommands&&o.canRecurse&&n.push(pn(o.fullCommandName)),((r=o.defaultCommand)==null?void 0:r.commandName)!==void 0&&n.push(fn(o)),n.push(un(t,o)),t.positionals&&!o.commandsOnly&&n.push(ce(["Positional Argument","Description","Type","Default"],t.positionals.map(i=>[i.arguments?[i.arguments.map(s=>`\`${s}\``)].join(" "):"",`${i.description??""}${i.required?" _(Required.)_":" _(Optional.)_"}`,i.type?`\`${i.type}\``:"",i.defaultValue?i.defaultValue.includes(" ")?i.defaultValue:`\`${i.defaultValue}\``:""]))),t.commands&&n.push(ce(["Command","Argument","Description"],t.commands.map(i=>{var s;return[`\`${i.commandName??(i.default?"[default]":"")}\``,i.arguments?(s=i.arguments)==null?void 0:s.map(a=>`\`${a}\``).join(" "):"",`${i.description??""}${i.default?" _(Default command.)_":""}`]}))),t.options&&!o.commandsOnly&&n.push(ce(["Option","Alias","Argument","Description","Type","Default"],t.options.map(i=>[i.flags?i.flags.map(s=>`\`${s}\``).join(" "):"",i.aliases?i.aliases.map(s=>`\`${s}\``).join(" "):"",i.arguments?i.arguments.map(s=>`\`${s}\``).join(" "):"",i.description??"",i.type?`\`${i.type}\``:"",i.defaultValue?i.defaultValue.includes(" ")?i.defaultValue:`\`${i.defaultValue}\``:""]))),o.canRecurse&&o.hasMultipleSubcommands&&n.push("_See the sections below for more information on each subcommand._"),n.join(`
3
+ ${JSON.stringify(t,void 0,2)}`)}var V;async function b(){return V===void 0&&(h.warn("getConfig(): config was undefined"),V??=await y()),V}var se;async function l(){let{packageFile:t}=await b();if(t===void 0)throw new Error("No packageFile found or set in config");if(se??=await Jt({cwd:Ze.dirname(t)}),se===void 0)throw new Error("No package.json found");return se}function Kt(t,e){return _(t,e)}import{remark as ae}from"remark";import me from"remark-gfm";import{mdatCheck as Gt,mdatClean as Xe,mdatExpand as qt,mdatSplit as Qe}from"remark-mdat";import{read as Yt}from"to-vfile";import{VFile as Wt}from"vfile";async function E(t,e,n,o,r,i,s){let a=await e({additionalConfig:i,additionalRules:s});i=a;let d=Ke(t),m=He(d,r,o,"md"),p=[],f=n(a);for(let{input:g,name:L,output:w}of m){let oe=await Yt(g),I=await f.process(oe);I.dirname=w,I.basename=L,p.push(I)}return p}async function O(t,e,n,o,r){let i=await e({additionalConfig:o,additionalRules:r});return o=i,n(i).process(new Wt(t))}function $(t){return ae().use({settings:{bullet:"-",emphasis:"_"}}).use(me).use(()=>async function(n,o){Qe(n,o),Xe(n,o,t),await qt(n,o,t)})}function F(t){return ae().use({settings:{bullet:"-",emphasis:"_"}}).use(me).use(()=>function(n,o){Qe(n,o),Xe(n,o,t)})}function x(t){return ae().use({settings:{bullet:"-",emphasis:"_"}}).use(me).use(()=>async function(n,o){await Gt(n,o,{...t,paranoid:!1})})}async function Zt(t,e,n,o,r){return E(t,y,$,e,n,o,r)}async function Xt(t,e,n){return O(t,y,$,e,n)}async function Qt(t,e,n,o,r){return E(t,y,x,e,n,o,r)}async function en(t,e,n){return O(t,y,x,e,n)}async function tn(t,e,n,o,r){return E(t,y,F,e,n,o,r)}async function nn(t,e,n){return O(t,y,F,e,n)}import{z as k}from"zod";var J={badges:{async content(t){var s;let e=k.object({custom:k.record(k.object({image:k.string(),link:k.string()})).optional(),npm:k.array(k.string()).optional()}).optional().parse(t),n=await l(),{name:o}=n,r=[];if(!n.private&&((s=n.publishConfig)==null?void 0:s.access)==="public"&&r.push(`[![NPM Package ${o}](https://img.shields.io/npm/v/${o}.svg)](https://npmjs.com/package/${o})`),(e==null?void 0:e.npm)!==void 0)for(let a of e.npm)r.push(`[![NPM Package ${a}](https://img.shields.io/npm/v/${a}.svg)](https://npmjs.com/package/${a})`);let{license:i}=n;if(i!==void 0&&r.push(`[![License: ${i}](https://img.shields.io/badge/License-${i}-yellow.svg)](https://opensource.org/licenses/${i})`),(e==null?void 0:e.custom)!==void 0)for(let[a,{image:d,link:m}]of Object.entries(e.custom))r.push(`[![${a}](${d})](${m})`);return r.join(`
4
+ `)},order:3}};import{globby as on}from"globby";import B from"node:path";import{isFile as rn}from"path-type";import{readPackage as sn}from"read-pkg";import{z as de}from"zod";var H={banner:{async content(t){let e=de.object({alt:de.string().optional(),src:de.string().optional()}).optional().parse(t),{assetsPath:n,packageFile:o}=await b();if(o===void 0)throw new Error("No package.json found");let r=(e==null?void 0:e.src)??await an(n);if(r===void 0)throw new Error("Banner image not found at any typical location, consider adding something at ./assets/banner.webp");if(!et(r)&&!await rn(r))throw new Error(`Banner image not found at "${r}"`);let i=(e==null?void 0:e.alt)??`${(await sn({cwd:B.dirname(o)})).name} banner`;if(i===void 0||i==="undefined banner")throw new Error("Banner image alt text not available");return`![${i}](${r})`},order:2}};async function an(t){let{packageFile:e}=await b();if(e===void 0)throw new Error("No package.json found");let n=B.dirname(e),o=t===void 0?[".","assets","media","readme-assets","readme-media","readme","images"]:[t],r=["banner","header","logo","readme","cover","screenshot","screenshots","demo","overview","image","hero"],i=["png","gif","jpg","jpeg","svg","webp"],s=await on(o.map(a=>B.join(n,a)),{expandDirectories:{extensions:i,files:r}});if(s.length>0)return B.relative(process.cwd(),s[0])}function et(t,e=!0){if(typeof t!="string")throw new TypeError("Expected a string");if(t=t.trim(),t.includes(" "))return!1;try{return new URL(t),!0}catch{return e?et(`https://${t}`,!1):!1}}function tt(t,e=Number.MAX_SAFE_INTEGER){var r;let n=[],o=mn(t,e);return n.push(dn(o)),n.push(cn(t,o)),o.hasMultipleSubcommands&&o.canRecurse&&n.push(pn(o.fullCommandName)),((r=o.defaultCommand)==null?void 0:r.commandName)!==void 0&&n.push(fn(o)),n.push(un(t,o)),t.positionals&&!o.commandsOnly&&n.push(ce(["Positional Argument","Description","Type","Default"],t.positionals.map(i=>[i.arguments?[i.arguments.map(s=>`\`${s}\``)].join(" "):"",`${i.description??""}${i.required?" _(Required.)_":" _(Optional.)_"}`,i.type?`\`${i.type}\``:"",i.defaultValue?i.defaultValue.includes(" ")?i.defaultValue:`\`${i.defaultValue}\``:""]))),t.commands&&n.push(ce(["Command","Argument","Description"],t.commands.map(i=>{var s;return[`\`${i.commandName??(i.default?"[default]":"")}\``,i.arguments?(s=i.arguments)==null?void 0:s.map(a=>`\`${a}\``).join(" "):"",`${i.description??""}${i.default?" _(Default command.)_":""}`]}))),t.options&&!o.commandsOnly&&n.push(ce(["Option","Alias","Argument","Description","Type","Default"],t.options.map(i=>[i.flags?i.flags.map(s=>`\`${s}\``).join(" "):"",i.aliases?i.aliases.map(s=>`\`${s}\``).join(" "):"",i.arguments?i.arguments.map(s=>`\`${s}\``).join(" "):"",i.description??"",i.type?`\`${i.type}\``:"",i.defaultValue?i.defaultValue.includes(" ")?i.defaultValue:`\`${i.defaultValue}\``:""]))),o.canRecurse&&o.hasMultipleSubcommands&&n.push("_See the sections below for more information on each subcommand._"),n.join(`
5
5
 
6
6
  `)}function mn(t,e){var m,p;let n=t.subcommandName===void 0,o=t.commands?t.commands.length>1:!1,r=e>1,i=(m=t.commands)==null?void 0:m.find(f=>f.default),s=(p=t.commands)==null?void 0:p.find(f=>f.commandName===void 0),a=`${t.commandName}${t.subcommandName?` ${t.subcommandName}`:""}`,d=r&&o&&(i==null?void 0:i.commandName)!==void 0;return{canRecurse:r,commandsOnly:d,defaultCommand:i,fullCommandName:a,hasMultipleSubcommands:o,isTopLevel:n,topLevelCommand:s}}function dn(t){return`#### ${t.isTopLevel?"Command":"Subcommand"}: \`${t.fullCommandName}\``}function cn(t,e){var n,o;return e.isTopLevel&&((n=e.topLevelCommand)!=null&&n.description)?(t.commands=(o=t.commands)==null?void 0:o.filter(r=>r!==e.topLevelCommand),e.topLevelCommand.description):t.description??""}function pn(t){return`This section lists top-level commands for \`${t}\`.`}function fn(t){var e,n;return`If no command is provided, \`${(e=t.defaultCommand)==null?void 0:e.parentCommandName} ${(n=t.defaultCommand)==null?void 0:n.commandName}\` is run by default.`}function un(t,e){var o;let n=(o=e.topLevelCommand)!=null&&o.arguments?` ${e.topLevelCommand.arguments.join(" ")}`:`${t.arguments?` ${t.arguments.join(" ")}`:""}`;return`Usage:
7
7
 
@@ -10,18 +10,18 @@ ${e.fullCommandName}${n}
10
10
  \`\`\``}function ce(t,e){let n=ln(e);t=t.filter((r,i)=>!n.includes(i)),e=e.map(r=>r.filter((i,s)=>!n.includes(s)));let o="";o+=`| ${t.join(" | ")} |
11
11
  `,o+=`| ${t.map(()=>"---").join(" | ")} |
12
12
  `;for(let r of e)o+=`| ${r.join(" | ")} |
13
- `;return o}function ln(t){var o;let e=[],n=((o=t[0])==null?void 0:o.length)||0;for(let r=0;r<n;r++){let i=!0;for(let s of t)if(s[r]!==""){i=!1;break}i&&e.push(r)}return e}import{CstParser as gn,Lexer as S,createToken as u}from"chevrotain";var q=u({name:"flag",pattern:/--[\w-_]+/}),ue=u({longer_alt:q,name:"alias",pattern:/-[A-Za-z]/}),nt=u({group:S.SKIPPED,name:"comma",pattern:/,/}),ot=u({group:S.SKIPPED,name:"dollar",pattern:/\$/}),z=u({group:S.SKIPPED,name:"whiteSpace",pattern:/ /}),rt=u({group:S.SKIPPED,name:"newLine",pattern:/\n/}),le=u({name:"word",pattern:/\S+/}),D=u({name:"argument",pattern:/(<\S+>|\[.+])/}),ge=u({name:"programDescription",pattern:/\w.+(?=\n\n {2}Usage)/}),it=u({group:S.SKIPPED,name:"startUsage",pattern:/ {2}Usage\n/,push_mode:"USAGE_MODE"}),st=u({group:S.SKIPPED,name:"endUsage",pattern:/\n/,pop_mode:!0}),he=u({name:"startOptions",pattern:/ {2}Options\n/,push_mode:"OPTIONS_MODE"}),ye=u({name:"startRow",pattern:/ {4}/,push_mode:"ROW_MODE"}),Ce=u({name:"rowDescription",pattern:/\w.+/}),at=u({group:S.SKIPPED,name:"endRow",pattern:/\n/,pop_mode:!0}),mt=u({group:S.SKIPPED,name:"endOptions",pattern:/\n/,pop_mode:!0}),hn=new S({defaultMode:"DEFAULT_MODE",modes:{DEFAULT_MODE:[it,he,ge,rt,z],OPTIONS_MODE:[mt,ye],ROW_MODE:[at,ue,q,nt,D,Ce,z],USAGE_MODE:[st,ot,D,le,z]}}),yn=[q,ue,nt,ot,z,rt,le,D,ge,it,st,he,ye,Ce,at,mt],pe=class extends gn{programHelp=this.RULE("programHelp",()=>{this.CONSUME(ge,{LABEL:"description"}),this.AT_LEAST_ONE(()=>{this.CONSUME(le,{LABEL:"commandName"})}),this.MANY(()=>{this.CONSUME(D)}),this.OPTION(()=>{this.SUBRULE(this.optionsSection)})});optionsSection=this.RULE("optionsSection",()=>{this.CONSUME(he),this.MANY(()=>{this.SUBRULE(this.sectionRow)})});sectionRow=this.RULE("sectionRow",()=>{this.CONSUME(ye),this.MANY(()=>{this.OR([{ALT:()=>this.CONSUME(D)},{ALT:()=>this.CONSUME(ue)},{ALT:()=>this.CONSUME(q)},{ALT:()=>this.CONSUME(Ce,{LABEL:"description"})}])})});constructor(){super(yn),this.performSelfAnalysis()}},j=new pe,fe=class extends j.getBaseCstVisitorConstructor(){constructor(){super(),this.validateVisitor()}programHelp(e){let{command:n,subcommand:o}=K(this.getString(e.commandName));return{arguments:this.getArray(e.argument),commandName:n,description:this.getString(e.description),options:e.optionsSection?this.visit(e.optionsSection):void 0,subcommandName:o}}optionsSection(e){return e.sectionRow.map(n=>this.visit(n))}sectionRow(e){return{aliases:this.getArray(e.alias),arguments:this.getArray(e.argument),description:this.getString(e.description,!0),flags:this.getArray(e.flag)}}getString(e,n=!1){if(e!==void 0)return e.map(o=>n?this.clean(o.image):o.image).join(" ")}getArray(e){if(e!==void 0)return e.map(n=>n.image)}clean(e){return e.replaceAll(/^[\s[]*(default:)?\s*|[\s\]]*$/g,"")}},Cn=new fe;function dt(t){let e=hn.tokenize(t);if(e.errors.length>0)throw new Error(`Errors lexing CLI command: ${JSON.stringify(e.errors,void 0,2)}`);j.input=e.tokens;let n=j.programHelp();if(j.errors.length>0)throw new Error(`Errors parsing CLI command help text: ${JSON.stringify(j.errors,void 0,2)}`);let o;try{o=Cn.visit(n)}catch(r){if(r instanceof Error)throw new TypeError(`Errors visiting CLI command help text: ${String(r)}`)}if(o===void 0)throw new Error("Could not parse help string");return o}import{CstParser as wn,Lexer as N,createToken as c}from"chevrotain";var Ee=c({name:"flag",pattern:/--[\w-_]+/}),Re=c({name:"alias",pattern:/-[A-Za-z]/}),ct=c({group:N.SKIPPED,name:"comma",pattern:/,/}),A=c({name:"word",pattern:/\S+/}),v=c({name:"argument",pattern:/<\S+>|\[\S+]/}),Le=c({name:"type",pattern:/\[(boolean|string|array)]/}),be=c({name:"defaultInfo",pattern:/\[default]/}),Oe=c({name:"required",pattern:/\[required]/}),ke=c({name:"defaultInfoDescription",pattern:/\[default:\s.+?]/}),Ne=c({name:"choices",pattern:/\[choices:\s.+?]/}),we=c({group:N.SKIPPED,name:"whiteSpace",pattern:/\s/}),pt=c({group:N.SKIPPED,name:"startProgramDescription",pattern:/\n\n/,push_mode:"PROGRAM_DESCRIPTION_MODE"}),Te=c({name:"programDescription",pattern:/.+/}),ft=c({group:N.SKIPPED,name:"endProgramDescription",pattern:/\n\n/,pop_mode:!0}),$e=c({name:"startOptionsSection",pattern:/Options:?\n/,push_mode:"SECTION_MODE"}),xe=c({name:"startPositionalsSection",pattern:/Positionals:\n/,push_mode:"SECTION_MODE"}),Ae=c({name:"startCommandsSection",pattern:/Commands:\n/,push_mode:"SECTION_MODE"}),Me=c({name:"startRow",pattern:/ {2,}/,push_mode:"ROW_MODE"}),Fe=c({name:"rowDescription",pattern:/ {2}\w.+ {2}/}),je=c({name:"rowDescriptionTerminal",pattern:/ {2}\w.+/}),ut=c({group:N.SKIPPED,name:"endRow",pattern:/\n/,pop_mode:!0}),lt=c({group:N.SKIPPED,name:"endSection",pattern:/\n+/,pop_mode:!0}),Pn=new N({defaultMode:"DEFAULT_MODE",modes:{DEFAULT_MODE:[$e,xe,Ae,pt,v,A,we],PROGRAM_DESCRIPTION_MODE:[ft,Te],ROW_MODE:[ut,ct,Le,Fe,je,ke,be,Oe,Ne,Ee,Re,v,A,we],SECTION_MODE:[Me,lt]}}),Sn=[Ee,Re,ct,A,v,Le,be,Oe,ke,Ne,we,pt,Te,ft,$e,xe,Ae,Me,Fe,je,ut,lt],Pe=class extends wn{programHelp=this.RULE("programHelp",()=>{this.AT_LEAST_ONE(()=>{this.CONSUME(A,{LABEL:"commandName"})}),this.MANY1(()=>{this.CONSUME(v)}),this.OPTION(()=>{this.CONSUME(Te,{LABEL:"description"})}),this.OPTION1(()=>{this.SUBRULE(this.commandsSection)}),this.OPTION2(()=>{this.SUBRULE(this.positionalsSection)}),this.OPTION3(()=>{this.SUBRULE(this.optionsSection)})});positionalsSection=this.RULE("positionalsSection",()=>{this.CONSUME(xe),this.MANY(()=>{this.SUBRULE(this.sectionRow)})});commandsSection=this.RULE("commandsSection",()=>{this.CONSUME(Ae),this.MANY1(()=>{this.SUBRULE1(this.sectionRow)})});optionsSection=this.RULE("optionsSection",()=>{this.CONSUME($e),this.MANY2(()=>{this.SUBRULE2(this.sectionRow)})});sectionRow=this.RULE("sectionRow",()=>{this.CONSUME(Me),this.OPTION(()=>{this.CONSUME(A,{LABEL:"parentCommandName"})}),this.MANY(()=>{this.CONSUME1(A,{LABEL:"commandName"})}),this.MANY1(()=>{this.OR([{ALT:()=>this.CONSUME(v)},{ALT:()=>this.CONSUME(Re)},{ALT:()=>this.CONSUME(Ee)},{ALT:()=>this.CONSUME(Fe,{LABEL:"description"})},{ALT:()=>this.CONSUME(je,{LABEL:"description"})},{ALT:()=>this.CONSUME(Le)},{ALT:()=>this.CONSUME(Oe)},{ALT:()=>this.CONSUME(ke)},{ALT:()=>this.CONSUME(be)},{ALT:()=>this.CONSUME(Ne)}])})});constructor(){super(Sn),this.performSelfAnalysis()}},U=new Pe,Se=class extends U.getBaseCstVisitorConstructor(){constructor(){super(),this.validateVisitor()}programHelp(e){let{command:n,subcommand:o}=K(this.getString(e.commandName));return{arguments:this.getArray(e.argument),commandName:n,commands:e.commandsSection?this.visit(e.commandsSection):void 0,description:this.getString(e.description),options:e.optionsSection?this.visit(e.optionsSection):void 0,positionals:e.positionalsSection?this.visit(e.positionalsSection):void 0,subcommandName:o}}positionalsSection(e){return e.sectionRow.map(n=>this.positionalParentCommandToArguments(this.visit(n)))}commandsSection(e){return e.sectionRow.map(n=>this.visit(n))}optionsSection(e){return e.sectionRow.map(n=>this.visit(n))}sectionRow(e){return{aliases:this.getArray(e.alias),arguments:this.getArray(e.argument),choices:this.splitChoices(this.getString(e.choices)),commandName:this.getString(e.commandName),default:e.defaultInfo?!0:void 0,defaultValue:this.getString(e.defaultInfoDescription,!0),description:this.getString(e.description,!0),flags:this.getArray(e.flag),parentCommandName:this.getString(e.parentCommandName),required:e.required?!0:void 0,type:this.getString(e.type,!0)}}positionalParentCommandToArguments(e){let{arguments:n,parentCommandName:o,...r}=e;return o===void 0?e:{arguments:[o,...n??[]],...r}}getString(e,n=!1){if(e!==void 0)return e.map(o=>n?this.clean(o.image):o.image).join(" ")}getArray(e){if(e!==void 0)return e.map(n=>n.image)}clean(e){return e.replaceAll(/^[\s[]*(default:)?\s*|[\s\]]*$/g,"")}splitChoices(e){if(e!==void 0)return this.clean(e.replaceAll(/^\[choices:\s/g,"")).split(", ")}},En=new Se;function gt(t){let e=Pn.tokenize(t);if(e.errors.length>0)throw new Error(`Errors lexing CLI command: ${JSON.stringify(e.errors,void 0,2)}`);U.input=e.tokens;let n=U.programHelp();if(U.errors.length>0)throw new Error(`Errors parsing CLI command help text: ${JSON.stringify(U.errors,void 0,2)}`);let o;try{o=En.visit(n)}catch(r){if(r instanceof Error)throw new TypeError(`Errors visiting CLI command help text: ${String(r)}`)}if(o===void 0)throw new Error("Could not parse help string");return o}var ht={meow:dt,yargs:gt};function K(t){if(t===void 0)throw new Error('Could not find "commandName" entry in help');let e=t.split(" ");if(e.length===0&&t===void 0)throw new Error('Could not find "commandName" entry in help');if(e.length===1)return{command:e[0],subcommand:void 0};let n=e.at(-1);return{command:e.slice(0,-1).join(" "),subcommand:n}}import{log as De}from"remark-mdat";function yt(t){for(let[e,n]of Object.entries(ht)){De.info(`Trying to parse help string with ${e} parser...`);try{return n(t)}catch(o){o instanceof Error&&De.info(`Error in "${e}" parser: ${String(o)}`);continue}}De.error("Could not parse help string with any parser")}import{execaCommand as Rn}from"execa";import{log as Ct}from"remark-mdat";async function Ue(t,e="--help",n){let o=`${t} ${e}`,r=await On(o),i=yt(r);return i===void 0?(Ct.warn("Falling back to basic cli help text output."),bn(r)):Ln(t,e,n??Number.MAX_SAFE_INTEGER,i)}async function Ln(t,e,n,o){if(n<=0)return Ct.info("Max CLI command help depth reached, stopping recursion"),"";let r=tt(o,n),i=t.split(" ")[0];if(o.commands)for(let s of o.commands){if(!s.parentCommandName||!s.commandName)continue;let a=await Ue(`${i} ${s.commandName}`,e,n-1);if(a==="")return r;r+=`
13
+ `;return o}function ln(t){var o;let e=[],n=((o=t[0])==null?void 0:o.length)||0;for(let r=0;r<n;r++){let i=!0;for(let s of t)if(s[r]!==""){i=!1;break}i&&e.push(r)}return e}import{CstParser as gn,Lexer as S,createToken as u}from"chevrotain";var K=u({name:"flag",pattern:/--[\w-_]+/}),ue=u({longer_alt:K,name:"alias",pattern:/-[A-Za-z]/}),nt=u({group:S.SKIPPED,name:"comma",pattern:/,/}),ot=u({group:S.SKIPPED,name:"dollar",pattern:/\$/}),z=u({group:S.SKIPPED,name:"whiteSpace",pattern:/ /}),rt=u({group:S.SKIPPED,name:"newLine",pattern:/\n/}),le=u({name:"word",pattern:/\S+/}),D=u({name:"argument",pattern:/(<\S+>|\[.+])/}),ge=u({name:"programDescription",pattern:/\w.+(?=\n\n {2}Usage)/}),it=u({group:S.SKIPPED,name:"startUsage",pattern:/ {2}Usage\n/,push_mode:"USAGE_MODE"}),st=u({group:S.SKIPPED,name:"endUsage",pattern:/\n/,pop_mode:!0}),he=u({name:"startOptions",pattern:/ {2}Options\n/,push_mode:"OPTIONS_MODE"}),ye=u({name:"startRow",pattern:/ {4}/,push_mode:"ROW_MODE"}),Ce=u({name:"rowDescription",pattern:/\w.+/}),at=u({group:S.SKIPPED,name:"endRow",pattern:/\n/,pop_mode:!0}),mt=u({group:S.SKIPPED,name:"endOptions",pattern:/\n/,pop_mode:!0}),hn=new S({defaultMode:"DEFAULT_MODE",modes:{DEFAULT_MODE:[it,he,ge,rt,z],OPTIONS_MODE:[mt,ye],ROW_MODE:[at,ue,K,nt,D,Ce,z],USAGE_MODE:[st,ot,D,le,z]}}),yn=[K,ue,nt,ot,z,rt,le,D,ge,it,st,he,ye,Ce,at,mt],pe=class extends gn{programHelp=this.RULE("programHelp",()=>{this.CONSUME(ge,{LABEL:"description"}),this.AT_LEAST_ONE(()=>{this.CONSUME(le,{LABEL:"commandName"})}),this.MANY(()=>{this.CONSUME(D)}),this.OPTION(()=>{this.SUBRULE(this.optionsSection)})});optionsSection=this.RULE("optionsSection",()=>{this.CONSUME(he),this.MANY(()=>{this.SUBRULE(this.sectionRow)})});sectionRow=this.RULE("sectionRow",()=>{this.CONSUME(ye),this.MANY(()=>{this.OR([{ALT:()=>this.CONSUME(D)},{ALT:()=>this.CONSUME(ue)},{ALT:()=>this.CONSUME(K)},{ALT:()=>this.CONSUME(Ce,{LABEL:"description"})}])})});constructor(){super(yn),this.performSelfAnalysis()}},j=new pe,fe=class extends j.getBaseCstVisitorConstructor(){constructor(){super(),this.validateVisitor()}programHelp(e){let{command:n,subcommand:o}=G(this.getString(e.commandName));return{arguments:this.getArray(e.argument),commandName:n,description:this.getString(e.description),options:e.optionsSection?this.visit(e.optionsSection):void 0,subcommandName:o}}optionsSection(e){return e.sectionRow.map(n=>this.visit(n))}sectionRow(e){return{aliases:this.getArray(e.alias),arguments:this.getArray(e.argument),description:this.getString(e.description,!0),flags:this.getArray(e.flag)}}getString(e,n=!1){if(e!==void 0)return e.map(o=>n?this.clean(o.image):o.image).join(" ")}getArray(e){if(e!==void 0)return e.map(n=>n.image)}clean(e){return e.replaceAll(/^[\s[]*(default:)?\s*|[\s\]]*$/g,"")}},Cn=new fe;function dt(t){let e=hn.tokenize(t);if(e.errors.length>0)throw new Error(`Errors lexing CLI command: ${JSON.stringify(e.errors,void 0,2)}`);j.input=e.tokens;let n=j.programHelp();if(j.errors.length>0)throw new Error(`Errors parsing CLI command help text: ${JSON.stringify(j.errors,void 0,2)}`);let o;try{o=Cn.visit(n)}catch(r){if(r instanceof Error)throw new TypeError(`Errors visiting CLI command help text: ${String(r)}`)}if(o===void 0)throw new Error("Could not parse help string");return o}import{CstParser as wn,Lexer as N,createToken as c}from"chevrotain";var Ee=c({name:"flag",pattern:/--[\w-_]+/}),Re=c({name:"alias",pattern:/-[A-Za-z]/}),ct=c({group:N.SKIPPED,name:"comma",pattern:/,/}),A=c({name:"word",pattern:/\S+/}),v=c({name:"argument",pattern:/<\S+>|\[\S+]/}),Le=c({name:"type",pattern:/\[(boolean|string|array)]/}),be=c({name:"defaultInfo",pattern:/\[default]/}),Oe=c({name:"required",pattern:/\[required]/}),ke=c({name:"defaultInfoDescription",pattern:/\[default:\s.+?]/}),Ne=c({name:"choices",pattern:/\[choices:\s.+?]/}),we=c({group:N.SKIPPED,name:"whiteSpace",pattern:/\s/}),pt=c({group:N.SKIPPED,name:"startProgramDescription",pattern:/\n\n/,push_mode:"PROGRAM_DESCRIPTION_MODE"}),Te=c({name:"programDescription",pattern:/.+/}),ft=c({group:N.SKIPPED,name:"endProgramDescription",pattern:/\n\n/,pop_mode:!0}),$e=c({name:"startOptionsSection",pattern:/Options:?\n/,push_mode:"SECTION_MODE"}),xe=c({name:"startPositionalsSection",pattern:/Positionals:\n/,push_mode:"SECTION_MODE"}),Ae=c({name:"startCommandsSection",pattern:/Commands:\n/,push_mode:"SECTION_MODE"}),Me=c({name:"startRow",pattern:/ {2,}/,push_mode:"ROW_MODE"}),Fe=c({name:"rowDescription",pattern:/ {2}\w.+ {2}/}),je=c({name:"rowDescriptionTerminal",pattern:/ {2}\w.+/}),ut=c({group:N.SKIPPED,name:"endRow",pattern:/\n/,pop_mode:!0}),lt=c({group:N.SKIPPED,name:"endSection",pattern:/\n+/,pop_mode:!0}),Pn=new N({defaultMode:"DEFAULT_MODE",modes:{DEFAULT_MODE:[$e,xe,Ae,pt,v,A,we],PROGRAM_DESCRIPTION_MODE:[ft,Te],ROW_MODE:[ut,ct,Le,Fe,je,ke,be,Oe,Ne,Ee,Re,v,A,we],SECTION_MODE:[Me,lt]}}),Sn=[Ee,Re,ct,A,v,Le,be,Oe,ke,Ne,we,pt,Te,ft,$e,xe,Ae,Me,Fe,je,ut,lt],Pe=class extends wn{programHelp=this.RULE("programHelp",()=>{this.AT_LEAST_ONE(()=>{this.CONSUME(A,{LABEL:"commandName"})}),this.MANY1(()=>{this.CONSUME(v)}),this.OPTION(()=>{this.CONSUME(Te,{LABEL:"description"})}),this.OPTION1(()=>{this.SUBRULE(this.commandsSection)}),this.OPTION2(()=>{this.SUBRULE(this.positionalsSection)}),this.OPTION3(()=>{this.SUBRULE(this.optionsSection)})});positionalsSection=this.RULE("positionalsSection",()=>{this.CONSUME(xe),this.MANY(()=>{this.SUBRULE(this.sectionRow)})});commandsSection=this.RULE("commandsSection",()=>{this.CONSUME(Ae),this.MANY1(()=>{this.SUBRULE1(this.sectionRow)})});optionsSection=this.RULE("optionsSection",()=>{this.CONSUME($e),this.MANY2(()=>{this.SUBRULE2(this.sectionRow)})});sectionRow=this.RULE("sectionRow",()=>{this.CONSUME(Me),this.OPTION(()=>{this.CONSUME(A,{LABEL:"parentCommandName"})}),this.MANY(()=>{this.CONSUME1(A,{LABEL:"commandName"})}),this.MANY1(()=>{this.OR([{ALT:()=>this.CONSUME(v)},{ALT:()=>this.CONSUME(Re)},{ALT:()=>this.CONSUME(Ee)},{ALT:()=>this.CONSUME(Fe,{LABEL:"description"})},{ALT:()=>this.CONSUME(je,{LABEL:"description"})},{ALT:()=>this.CONSUME(Le)},{ALT:()=>this.CONSUME(Oe)},{ALT:()=>this.CONSUME(ke)},{ALT:()=>this.CONSUME(be)},{ALT:()=>this.CONSUME(Ne)}])})});constructor(){super(Sn),this.performSelfAnalysis()}},U=new Pe,Se=class extends U.getBaseCstVisitorConstructor(){constructor(){super(),this.validateVisitor()}programHelp(e){let{command:n,subcommand:o}=G(this.getString(e.commandName));return{arguments:this.getArray(e.argument),commandName:n,commands:e.commandsSection?this.visit(e.commandsSection):void 0,description:this.getString(e.description),options:e.optionsSection?this.visit(e.optionsSection):void 0,positionals:e.positionalsSection?this.visit(e.positionalsSection):void 0,subcommandName:o}}positionalsSection(e){return e.sectionRow.map(n=>this.positionalParentCommandToArguments(this.visit(n)))}commandsSection(e){return e.sectionRow.map(n=>this.visit(n))}optionsSection(e){return e.sectionRow.map(n=>this.visit(n))}sectionRow(e){return{aliases:this.getArray(e.alias),arguments:this.getArray(e.argument),choices:this.splitChoices(this.getString(e.choices)),commandName:this.getString(e.commandName),default:e.defaultInfo?!0:void 0,defaultValue:this.getString(e.defaultInfoDescription,!0),description:this.getString(e.description,!0),flags:this.getArray(e.flag),parentCommandName:this.getString(e.parentCommandName),required:e.required?!0:void 0,type:this.getString(e.type,!0)}}positionalParentCommandToArguments(e){let{arguments:n,parentCommandName:o,...r}=e;return o===void 0?e:{arguments:[o,...n??[]],...r}}getString(e,n=!1){if(e!==void 0)return e.map(o=>n?this.clean(o.image):o.image).join(" ")}getArray(e){if(e!==void 0)return e.map(n=>n.image)}clean(e){return e.replaceAll(/^[\s[]*(default:)?\s*|[\s\]]*$/g,"")}splitChoices(e){if(e!==void 0)return this.clean(e.replaceAll(/^\[choices:\s/g,"")).split(", ")}},En=new Se;function gt(t){let e=Pn.tokenize(t);if(e.errors.length>0)throw new Error(`Errors lexing CLI command: ${JSON.stringify(e.errors,void 0,2)}`);U.input=e.tokens;let n=U.programHelp();if(U.errors.length>0)throw new Error(`Errors parsing CLI command help text: ${JSON.stringify(U.errors,void 0,2)}`);let o;try{o=En.visit(n)}catch(r){if(r instanceof Error)throw new TypeError(`Errors visiting CLI command help text: ${String(r)}`)}if(o===void 0)throw new Error("Could not parse help string");return o}var ht={meow:dt,yargs:gt};function G(t){if(t===void 0)throw new Error('Could not find "commandName" entry in help');let e=t.split(" ");if(e.length===0&&t===void 0)throw new Error('Could not find "commandName" entry in help');if(e.length===1)return{command:e[0],subcommand:void 0};let n=e.at(-1);return{command:e.slice(0,-1).join(" "),subcommand:n}}import{log as De}from"remark-mdat";function yt(t){for(let[e,n]of Object.entries(ht)){De.info(`Trying to parse help string with ${e} parser...`);try{return n(t)}catch(o){o instanceof Error&&De.info(`Error in "${e}" parser: ${String(o)}`);continue}}De.error("Could not parse help string with any parser")}import{execaCommand as Rn}from"execa";import{log as Ct}from"remark-mdat";async function Ue(t,e="--help",n){let o=`${t} ${e}`,r=await On(o),i=yt(r);return i===void 0?(Ct.warn("Falling back to basic cli help text output."),bn(r)):Ln(t,e,n??Number.MAX_SAFE_INTEGER,i)}async function Ln(t,e,n,o){if(n<=0)return Ct.info("Max CLI command help depth reached, stopping recursion"),"";let r=tt(o,n),i=t.split(" ")[0];if(o.commands)for(let s of o.commands){if(!s.parentCommandName||!s.commandName)continue;let a=await Ue(`${i} ${s.commandName}`,e,n-1);if(a==="")return r;r+=`
14
14
 
15
15
  ${a}`}return r}function bn(t){return`\`\`\`txt
16
16
  ${t}
17
17
  \`\`\``}async function On(t){let e;try{let{stderr:n,stdout:o}=await Rn(t);e=o,(e===void 0||e==="")&&(e=n)}catch(n){if(n instanceof Error)throw new TypeError(`Error running CLI help command: "${t}"
18
18
  ${n.message}
19
19
  `)}if(e===void 0||e==="")throw new Error(`No result from running CLI help command: "${t}"
20
- `);return e}import{isExecutable as kn}from"is-executable";import Nn from"node:path";import{log as Tn}from"remark-mdat";import $n from"which";async function wt(t){return t??=await xn(),Mn(t)}async function xn(){let t=await l();if(t!=null&&t.bin){let e=typeof t.bin=="string"?t.bin:String(Object.values(t.bin).at(0));if(An(e))return Tn.info(`Inferred <!-- cli-help --> command to run from package.json: ${e}`),e}throw new Error(`Could not infer which command to run for the <!-- cli-help --> rule. Please pass a "cliCommand" option to the expansion comment, e.g. <!-- cli-help {cliCommend: './dist/bin.js'} -->`)}function An(t){let e=Nn.parse(t);return e.root!==""||e.dir!==""}async function Mn(t){let e=await $n(t,{nothrow:!0});if(e===null&&(e=await Fn(t)??void 0),e!==void 0&&await kn(e))return e;throw new Error(`The cli-help rule noticed that "${e}" is not executable.`)}async function Fn(t){var n;let e=await l();return((n=e==null?void 0:e.bin)==null?void 0:n[t])??void 0}import{z as G}from"zod";var Pt={"cli-help":{async content(t){let e=G.object({cliCommand:G.string().optional(),depth:G.number().optional(),helpFlag:G.string().optional()}).optional().parse(t),n=await wt(e==null?void 0:e.cliCommand);return Ue(n,e==null?void 0:e.helpFlag,e==null?void 0:e.depth)}}};import jn from"node:fs/promises";import St from"node:path";import{z as ve}from"zod";var Et={code:{async content(t){let e=ve.object({file:ve.string(),language:ve.string().optional()}).parse(t),n=St.extname(e.file)??"",o=await jn.readFile(St.join(process.cwd(),e.file),"utf8");return`\`\`\`${n}
20
+ `);return e}import{isExecutable as kn}from"is-executable";import Nn from"node:path";import{log as Tn}from"remark-mdat";import $n from"which";async function wt(t){return t??=await xn(),Mn(t)}async function xn(){let t=await l();if(t!=null&&t.bin){let e=typeof t.bin=="string"?t.bin:String(Object.values(t.bin).at(0));if(An(e))return Tn.info(`Inferred <!-- cli-help --> command to run from package.json: ${e}`),e}throw new Error(`Could not infer which command to run for the <!-- cli-help --> rule. Please pass a "cliCommand" option to the expansion comment, e.g. <!-- cli-help {cliCommend: './dist/bin.js'} -->`)}function An(t){let e=Nn.parse(t);return e.root!==""||e.dir!==""}async function Mn(t){let e=await $n(t,{nothrow:!0});if(e===null&&(e=await Fn(t)??void 0),e!==void 0&&await kn(e))return e;throw new Error(`The cli-help rule noticed that "${e}" is not executable.`)}async function Fn(t){var n;let e=await l();return((n=e==null?void 0:e.bin)==null?void 0:n[t])??void 0}import{z as q}from"zod";var Pt={"cli-help":{async content(t){let e=q.object({cliCommand:q.string().optional(),depth:q.number().optional(),helpFlag:q.string().optional()}).optional().parse(t),n=await wt(e==null?void 0:e.cliCommand);return Ue(n,e==null?void 0:e.helpFlag,e==null?void 0:e.depth)}}};import jn from"node:fs/promises";import St from"node:path";import{z as ve}from"zod";var Et={code:{async content(t){let e=ve.object({file:ve.string(),language:ve.string().optional()}).parse(t),n=St.extname(e.file)??"",o=await jn.readFile(St.join(process.cwd(),e.file),"utf8");return`\`\`\`${n}
21
21
  ${o}
22
22
  \`\`\``}}};var Y={contributing:{async content(){var n;let t=await l(),e=(n=t==null?void 0:t.bugs)==null?void 0:n.url;if(e===void 0)throw new Error('Could not find "bugs.url" entry in package.json');return`## Contributing
23
- [Issues](${e}) and pull requests are welcome.`},order:15,required:!0}};var W={license:{async content(){let t=await l(),{author:e,license:n}=t;if((e==null?void 0:e.name)===void 0)throw new Error('Could not find "author.name" entry in package.json');if(n===void 0)throw new Error('Could not find "license" entry in package.json');return`## License
24
- [${n}](license.txt) \xA9 ${e.name}`},order:16,required:!0}};import{getSoleRule as Rt}from"remark-mdat";var Lt={footer:{content:[Rt(Y),Rt(W)],order:17}};var Z={"short-description":{async content(){let t=await l();if(t.description===void 0)throw new Error('Could not find "description" entry in package.json');return`**${t.description}**`},order:4,required:!0}};import{z as X}from"zod";var Q={title:{applicationOrder:2,async content(t){let{postfix:e,prefix:n,titleCase:o}=X.object({postfix:X.string().optional().default(""),prefix:X.string().optional().default(""),titleCase:X.boolean().optional().default(!1)}).parse(t??{}),{name:r}=await l();return`# ${n}${o?Dn(r):r}${e}`},order:1,required:!0}};function Dn(t){return t.split(/[ _-]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}import{getSoleRule as ee}from"remark-mdat";var bt={header:{applicationOrder:2,content:[ee(Q),ee(H),ee(J),ee(Z)],order:1}};import{toc as Un}from"mdast-util-toc";import{remark as vn}from"remark";import In from"remark-gfm";import{z as R}from"zod";var te={"table-of-contents":{applicationOrder:1,async content(t,e){let n=R.object({depth:R.union([R.literal(1),R.literal(2),R.literal(3),R.literal(4),R.literal(5),R.literal(6)]).optional()}).optional().parse(t),o=Un(e,{heading:null,maxDepth:(n==null?void 0:n.depth)??3,tight:!0}),r="## Table of contents";if(o.map===void 0)throw new Error("Could not generate table of contents");let i={children:o.map.children,type:"root"},s=vn().use(In).stringify(i).replaceAll(`
23
+ [Issues](${e}) and pull requests are welcome.`},order:15}};var W={license:{async content(){let t=await l(),{author:e,license:n}=t;if((e==null?void 0:e.name)===void 0)throw new Error('Could not find "author.name" entry in package.json');if(n===void 0)throw new Error('Could not find "license" entry in package.json');return`## License
24
+ [${n}](license.txt) \xA9 ${e.name}`},order:16}};import{getSoleRule as Rt}from"remark-mdat";var Lt={footer:{content:[Rt(Y),Rt(W)],order:17}};var Z={"short-description":{async content(){let t=await l();if(t.description===void 0)throw new Error('Could not find "description" entry in package.json');return`**${t.description}**`},order:4}};import{z as X}from"zod";var Q={title:{applicationOrder:2,async content(t){let{postfix:e,prefix:n,titleCase:o}=X.object({postfix:X.string().optional().default(""),prefix:X.string().optional().default(""),titleCase:X.boolean().optional().default(!1)}).parse(t??{}),{name:r}=await l();return`# ${n}${o?Dn(r):r}${e}`},order:1}};function Dn(t){return t.split(/[ _-]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}import{getSoleRule as ee}from"remark-mdat";var bt={header:{applicationOrder:2,content:[ee(Q),ee(H),ee(J),ee(Z)],order:1}};import{toc as Un}from"mdast-util-toc";import{remark as vn}from"remark";import In from"remark-gfm";import{z as R}from"zod";var te={"table-of-contents":{applicationOrder:1,async content(t,e){let n=R.object({depth:R.union([R.literal(1),R.literal(2),R.literal(3),R.literal(4),R.literal(5),R.literal(6)]).optional()}).optional().parse(t),o=Un(e,{heading:null,maxDepth:(n==null?void 0:n.depth)??3,tight:!0}),r="## Table of contents";if(o.map===void 0)throw new Error("Could not generate table of contents");let i={children:o.map.children,type:"root"},s=vn().use(In).stringify(i).replaceAll(`
25
25
 
26
26
  `,`
27
27
  `);return[r,s].join(`
@@ -29,4 +29,4 @@ ${o}
29
29
  <source media="(prefers-color-scheme: dark)" srcset="${C.relative(r,e)}">
30
30
  <source media="(prefers-color-scheme: light)" srcset="${i}">
31
31
  <img alt="${n}" src="${i}">
32
- </picture>`}async function Nt(t){let e=await M.readFile(t),n=_n.createHash("sha1");return n.update(e),n.digest("hex").slice(0,8)}function Tt(t){return t.replace(/\.[^./]+$/,"")}import{getSoleRule as Vn}from"remark-mdat";var xt={toc:{applicationOrder:1,content:[Vn(te)]}};var At={...J,...H,...Pt,...Et,...Y,...Lt,...bt,...W,...Z,...te,...$t,...xt,...Q};async function T(t){let e={addMetaComment:!0,rules:At},{additionalConfig:n=[],...o}=t??{},r=Array.isArray(n)?n:[n],i=await y({additionalConfig:[e,...r],...o});if(i.packageFile===void 0)throw new Error("Package file path is required in `mdat readme` config");return i}import{findUp as Jn}from"find-up";import{packageDirectory as Bn}from"pkg-dir";import{log as Mt}from"remark-mdat";async function Hn(){Mt.info("Searching for package directory...");let t=await Bn()??process.cwd(),e=await Jn("readme.md",{stopAt:t,type:"file"});if(e!==void 0)return Mt.info(`Found closest readme at "${e}"`),e}async function ne(){let t=await Hn();if(t===void 0)throw new Error("No readme found");return t}async function zn(t,e,n,o,r){return t??=await ne(),E(t,T,$,e,n,o,r)}async function qn(t,e,n){return O(t,T,$,e,n)}async function Kn(t,e,n,o,r){return t??=await ne(),E(t,T,x,e,n,o,r)}async function Gn(t,e,n){return O(t,T,x,e,n)}async function Yn(t,e,n,o,r){return t??=await ne(),E(t,T,F,e,n,o,r)}export{Qt as checkFiles,Kn as checkReadmeFiles,Gn as checkReadmeString,en as checkString,tn as collapseFiles,Yn as collapseReadmeFiles,nn as collapseString,Zt as expandFiles,zn as expandReadmeFiles,qn as expandReadmeString,Xt as expandString,y as loadConfig,T as loadConfigReadme,qt as mergeConfigs};
32
+ </picture>`}async function Nt(t){let e=await M.readFile(t),n=_n.createHash("sha1");return n.update(e),n.digest("hex").slice(0,8)}function Tt(t){return t.replace(/\.[^./]+$/,"")}import{getSoleRule as Vn}from"remark-mdat";var xt={toc:{applicationOrder:1,content:[Vn(te)]}};var At={...J,...H,...Pt,...Et,...Y,...Lt,...bt,...W,...Z,...te,...$t,...xt,...Q};async function T(t){let e={addMetaComment:!0,rules:At},{additionalConfig:n=[],...o}=t??{},r=Array.isArray(n)?n:[n],i=await y({additionalConfig:[e,...r],...o});if(i.packageFile===void 0)throw new Error("Package file path is required in `mdat readme` config");return i}import{findUp as Jn}from"find-up";import{packageDirectory as Bn}from"pkg-dir";import{log as Mt}from"remark-mdat";async function Hn(){Mt.info("Searching for package directory...");let t=await Bn()??process.cwd(),e=await Jn("readme.md",{stopAt:t,type:"file"});if(e!==void 0)return Mt.info(`Found closest readme at "${e}"`),e}async function ne(){let t=await Hn();if(t===void 0)throw new Error("No readme found");return t}async function zn(t,e,n,o,r){return t??=await ne(),E(t,T,$,e,n,o,r)}async function Kn(t,e,n){return O(t,T,$,e,n)}async function Gn(t,e,n,o,r){return t??=await ne(),E(t,T,x,e,n,o,r)}async function qn(t,e,n){return O(t,T,x,e,n)}async function Yn(t,e,n,o,r){return t??=await ne(),E(t,T,F,e,n,o,r)}export{Qt as checkFiles,Gn as checkReadmeFiles,qn as checkReadmeString,en as checkString,tn as collapseFiles,Yn as collapseReadmeFiles,nn as collapseString,Zt as expandFiles,zn as expandReadmeFiles,Kn as expandReadmeString,Xt as expandString,y as loadConfig,T as loadConfigReadme,Kt as mergeConfigs};
@@ -2,7 +2,6 @@ declare const _default: {
2
2
  badges: {
3
3
  content(options?: import("type-fest").JsonValue | undefined): Promise<string>;
4
4
  order: number;
5
- required: false;
6
5
  };
7
6
  };
8
7
  export default _default;
@@ -2,7 +2,6 @@ declare const _default: {
2
2
  contributing: {
3
3
  content(): Promise<string>;
4
4
  order: number;
5
- required: true;
6
5
  };
7
6
  };
8
7
  export default _default;
@@ -3,7 +3,6 @@ declare const _default: {
3
3
  content: {
4
4
  content(): Promise<string>;
5
5
  order: number;
6
- required: true;
7
6
  }[];
8
7
  order: number;
9
8
  };
@@ -3,7 +3,6 @@ declare const _default: {
3
3
  applicationOrder: number;
4
4
  content(options?: import("type-fest").JsonValue | undefined): Promise<string>;
5
5
  order: number;
6
- required: true;
7
6
  };
8
7
  toc: {
9
8
  applicationOrder: number;
@@ -24,12 +23,10 @@ declare const _default: {
24
23
  'short-description': {
25
24
  content(): Promise<string>;
26
25
  order: number;
27
- required: true;
28
26
  };
29
27
  license: {
30
28
  content(): Promise<string>;
31
29
  order: number;
32
- required: true;
33
30
  };
34
31
  header: {
35
32
  applicationOrder: number;
@@ -43,14 +40,12 @@ declare const _default: {
43
40
  content: {
44
41
  content(): Promise<string>;
45
42
  order: number;
46
- required: true;
47
43
  }[];
48
44
  order: number;
49
45
  };
50
46
  contributing: {
51
47
  content(): Promise<string>;
52
48
  order: number;
53
- required: true;
54
49
  };
55
50
  code: {
56
51
  content(options: import("type-fest").JsonValue): Promise<string>;
@@ -65,7 +60,6 @@ declare const _default: {
65
60
  badges: {
66
61
  content(options?: import("type-fest").JsonValue | undefined): Promise<string>;
67
62
  order: number;
68
- required: false;
69
63
  };
70
64
  };
71
65
  export default _default;
@@ -2,7 +2,6 @@ declare const _default: {
2
2
  license: {
3
3
  content(): Promise<string>;
4
4
  order: number;
5
- required: true;
6
5
  };
7
6
  };
8
7
  export default _default;
@@ -2,7 +2,6 @@ declare const _default: {
2
2
  'short-description': {
3
3
  content(): Promise<string>;
4
4
  order: number;
5
- required: true;
6
5
  };
7
6
  };
8
7
  export default _default;
@@ -3,7 +3,6 @@ declare const _default: {
3
3
  applicationOrder: number;
4
4
  content(options?: import("type-fest").JsonValue | undefined): Promise<string>;
5
5
  order: number;
6
- required: true;
7
6
  };
8
7
  };
9
8
  export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mdat",
3
- "version": "0.6.4",
3
+ "version": "0.6.5",
4
4
  "type": "module",
5
5
  "description": "CLI tool and library for using comments as content templates in Markdown files, with helpful presets for readmes.",
6
6
  "repository": {
@@ -70,7 +70,7 @@
70
70
  "which": "^4.0.0",
71
71
  "yargs": "^17.7.2",
72
72
  "zod": "^3.22.4",
73
- "remark-mdat": "0.6.4"
73
+ "remark-mdat": "0.6.5"
74
74
  },
75
75
  "devDependencies": {
76
76
  "@types/node": "^20.11.20",