@soybeanjs/changelog 0.3.7 → 0.3.9-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +10 -10
- package/package.json +7 -7
package/dist/index.cjs
CHANGED
|
@@ -25,4 +25,4 @@ ${o}
|
|
|
25
25
|
|
|
26
26
|
`,await promises.writeFile(t,s)}async function getChangelogMarkdown(o,t=!0){const e=await createOptions(o),s=await getGitCommits(e.from,e.to),{commits:n,contributors:i}=await getGitCommitsAndResolvedAuthors(s,e.github);return{markdown:generateMarkdown({commits:n,options:e,showTitle:t,contributors:i}),commits:n,options:e}}async function getTotalChangelogMarkdown(o,t=!0){const e=await createOptions(o);let s=null;t&&(s=new cliProgress.SingleBar({format:"generate total changelog: [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}"},cliProgress.Presets.shades_classic));const n=getFromToTags(e.tags);if(n.length===0){const{markdown:c}=await getChangelogMarkdown(e);return c}s?.start(n.length,0);let i="";const a=new Map;for await(const[c,l]of n.entries()){const{from:u,to:p}=l,m=await getGitCommits(u,p),{commits:f,contributors:g}=await getGitCommitsAndResolvedAuthors(m,e.github,a);i=`${generateMarkdown({commits:f,options:{...e,from:u,to:p},showTitle:!0,contributors:g})}
|
|
27
27
|
|
|
28
|
-
${i}`,s?.update(c+1)}return s?.stop(),i}async function generateChangelog(o){const t=await createOptions(o),e=await isVersionInMarkdown(t.to,t.newVersion,t.output);if(!t.regenerate&&e)return;const{markdown:s}=await getChangelogMarkdown(t);await writeMarkdown(s,t.output,t.regenerate)}async function generateTotalChangelog(o,t=!0){const e=await createOptions(o),s=await getTotalChangelogMarkdown(e,t);await writeMarkdown(s,e.output,!0)}
|
|
28
|
+
${i}`,s?.update(c+1)}return s?.stop(),i}async function generateChangelog(o){const t=await createOptions(o),e=await isVersionInMarkdown(t.to,t.newVersion,t.output);if(!t.regenerate&&e)return;const{markdown:s}=await getChangelogMarkdown(t);await writeMarkdown(s,t.output,t.regenerate)}async function generateTotalChangelog(o,t=!0){const e=await createOptions(o),s=await getTotalChangelogMarkdown(e,t);await writeMarkdown(s,e.output,!0)}exports.generateChangelog=generateChangelog,exports.generateTotalChangelog=generateTotalChangelog,exports.getChangelogMarkdown=getChangelogMarkdown,exports.getTotalChangelogMarkdown=getTotalChangelogMarkdown;
|
package/dist/index.mjs
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import{SingleBar as
|
|
1
|
+
import{SingleBar as J,Presets as K}from"cli-progress";import k from"node:process";import{readFile as _,writeFile as E}from"node:fs/promises";import{ofetch as b}from"ofetch";import D from"dayjs";import{existsSync as Q}from"node:fs";import{convert as X}from"convert-gitmoji";const g={silent:Number.NEGATIVE_INFINITY,fatal:0,error:0,warn:1,log:2,info:3,success:3,fail:3,ready:3,start:3,box:3,debug:4,trace:5,verbose:Number.POSITIVE_INFINITY},T={silent:{level:-1},fatal:{level:g.fatal},error:{level:g.error},warn:{level:g.warn},log:{level:g.log},info:{level:g.info},success:{level:g.success},fail:{level:g.fail},ready:{level:g.info},start:{level:g.info},box:{level:g.info},debug:{level:g.debug},trace:{level:g.trace},verbose:{level:g.verbose}};function v(o){return o!==null&&typeof o=="object"}function $(o,t,e=".",s){if(!v(t))return $(o,{},e,s);const r=Object.assign({},t);for(const n in o){if(n==="__proto__"||n==="constructor")continue;const i=o[n];i!=null&&(s&&s(r,n,i,e)||(Array.isArray(i)&&Array.isArray(r[n])?r[n]=[...i,...r[n]]:v(i)&&v(r[n])?r[n]=$(i,r[n],(e?`${e}.`:"")+n.toString(),s):r[n]=i))}return r}function Z(o){return(...t)=>t.reduce((e,s)=>$(e,s,"",o),{})}const tt=Z();function et(o){return Object.prototype.toString.call(o)==="[object Object]"}function ot(o){return!(!et(o)||!o.message&&!o.args||o.stack)}let F=!1;const M=[];class f{constructor(t={}){const e=t.types||T;this.options=tt({...t,defaults:{...t.defaults},level:C(t.level,e),reporters:[...t.reporters||[]]},{types:T,throttle:1e3,throttleMin:5,formatOptions:{date:!0,colors:!1,compact:!0}});for(const s in e){const r={type:s,...this.options.defaults,...e[s]};this[s]=this._wrapLogFn(r),this[s].raw=this._wrapLogFn(r,!0)}this.options.mockFn&&this.mockTypes(),this._lastLog={}}get level(){return this.options.level}set level(t){this.options.level=C(t,this.options.types,this.options.level)}prompt(t,e){if(!this.options.prompt)throw new Error("prompt is not supported!");return this.options.prompt(t,e)}create(t){const e=new f({...this.options,...t});return this._mockFn&&e.mockTypes(this._mockFn),e}withDefaults(t){return this.create({...this.options,defaults:{...this.options.defaults,...t}})}withTag(t){return this.withDefaults({tag:this.options.defaults.tag?this.options.defaults.tag+":"+t:t})}addReporter(t){return this.options.reporters.push(t),this}removeReporter(t){if(t){const e=this.options.reporters.indexOf(t);if(e>=0)return this.options.reporters.splice(e,1)}else this.options.reporters.splice(0);return this}setReporters(t){return this.options.reporters=Array.isArray(t)?t:[t],this}wrapAll(){this.wrapConsole(),this.wrapStd()}restoreAll(){this.restoreConsole(),this.restoreStd()}wrapConsole(){for(const t in this.options.types)console["__"+t]||(console["__"+t]=console[t]),console[t]=this[t].raw}restoreConsole(){for(const t in this.options.types)console["__"+t]&&(console[t]=console["__"+t],delete console["__"+t])}wrapStd(){this._wrapStream(this.options.stdout,"log"),this._wrapStream(this.options.stderr,"log")}_wrapStream(t,e){t&&(t.__write||(t.__write=t.write),t.write=s=>{this[e].raw(String(s).trim())})}restoreStd(){this._restoreStream(this.options.stdout),this._restoreStream(this.options.stderr)}_restoreStream(t){t&&t.__write&&(t.write=t.__write,delete t.__write)}pauseLogs(){F=!0}resumeLogs(){F=!1;const t=M.splice(0);for(const e of t)e[0]._logFn(e[1],e[2])}mockTypes(t){const e=t||this.options.mockFn;if(this._mockFn=e,typeof e=="function")for(const s in this.options.types)this[s]=e(s,this.options.types[s])||this[s],this[s].raw=this[s]}_wrapLogFn(t,e){return(...s)=>{if(F){M.push([this,t,s,e]);return}return this._logFn(t,s,e)}}_logFn(t,e,s){if((t.level||0)>this.level)return!1;const r={date:new Date,args:[],...t,level:C(t.level,this.options.types)};!s&&e.length===1&&ot(e[0])?Object.assign(r,e[0]):r.args=[...e],r.message&&(r.args.unshift(r.message),delete r.message),r.additional&&(Array.isArray(r.additional)||(r.additional=r.additional.split(`
|
|
2
2
|
`)),r.args.push(`
|
|
3
3
|
`+r.additional.join(`
|
|
4
|
-
`)),delete r.additional),r.type=typeof r.type=="string"?r.type.toLowerCase():"log",r.tag=typeof r.tag=="string"?r.tag:"";const n=(a=!1)=>{const c=(this._lastLog.count||0)-this.options.throttleMin;if(this._lastLog.object&&c>0){const l=[...this._lastLog.object.args];c>1&&l.push(`(repeated ${c} times)`),this._log({...this._lastLog.object,args:l}),this._lastLog.count=1}a&&(this._lastLog.object=r,this._log(r))};clearTimeout(this._lastLog.timeout);const i=this._lastLog.time&&r.date?r.date.getTime()-this._lastLog.time.getTime():0;if(this._lastLog.time=r.date,i<this.options.throttle)try{const a=JSON.stringify([r.type,r.tag,r.args]),c=this._lastLog.serialized===a;if(this._lastLog.serialized=a,c&&(this._lastLog.count=(this._lastLog.count||0)+1,this._lastLog.count>this.options.throttleMin)){this._lastLog.timeout=setTimeout(n,this.options.throttle);return}}catch{}n(!0)}_log(t){for(const e of this.options.reporters)e.log(t,{options:this.options})}}function C(o,t={},e=3){return o===void 0?e:typeof o=="number"?o:t[o]&&t[o].level!==void 0?t[o].level:e}f.prototype.add=f.prototype.addReporter,f.prototype.remove=f.prototype.removeReporter,f.prototype.clear=f.prototype.removeReporter,f.prototype.withScope=f.prototype.withTag,f.prototype.mock=f.prototype.mockTypes,f.prototype.pause=f.prototype.pauseLogs,f.prototype.resume=f.prototype.resumeLogs;function
|
|
4
|
+
`)),delete r.additional),r.type=typeof r.type=="string"?r.type.toLowerCase():"log",r.tag=typeof r.tag=="string"?r.tag:"";const n=(a=!1)=>{const c=(this._lastLog.count||0)-this.options.throttleMin;if(this._lastLog.object&&c>0){const l=[...this._lastLog.object.args];c>1&&l.push(`(repeated ${c} times)`),this._log({...this._lastLog.object,args:l}),this._lastLog.count=1}a&&(this._lastLog.object=r,this._log(r))};clearTimeout(this._lastLog.timeout);const i=this._lastLog.time&&r.date?r.date.getTime()-this._lastLog.time.getTime():0;if(this._lastLog.time=r.date,i<this.options.throttle)try{const a=JSON.stringify([r.type,r.tag,r.args]),c=this._lastLog.serialized===a;if(this._lastLog.serialized=a,c&&(this._lastLog.count=(this._lastLog.count||0)+1,this._lastLog.count>this.options.throttleMin)){this._lastLog.timeout=setTimeout(n,this.options.throttle);return}}catch{}n(!0)}_log(t){for(const e of this.options.reporters)e.log(t,{options:this.options})}}function C(o,t={},e=3){return o===void 0?e:typeof o=="number"?o:t[o]&&t[o].level!==void 0?t[o].level:e}f.prototype.add=f.prototype.addReporter,f.prototype.remove=f.prototype.removeReporter,f.prototype.clear=f.prototype.removeReporter,f.prototype.withScope=f.prototype.withTag,f.prototype.mock=f.prototype.mockTypes,f.prototype.pause=f.prototype.pauseLogs,f.prototype.resume=f.prototype.resumeLogs;function st(o={}){return new f(o)}class rt{constructor(t){this.options={...t},this.defaultColor="#7f8c8d",this.levelColorMap={0:"#c0392b",1:"#f39c12",3:"#00BCD4"},this.typeColorMap={success:"#2ecc71"}}_getLogFn(t){return t<1?console.__error||console.error:t===1?console.__warn||console.warn:console.__log||console.log}log(t){const e=this._getLogFn(t.level),s=t.type==="log"?"":t.type,r=t.tag||"",i=`
|
|
5
5
|
background: ${this.typeColorMap[t.type]||this.levelColorMap[t.level]||this.defaultColor};
|
|
6
6
|
border-radius: 0.5em;
|
|
7
7
|
color: white;
|
|
8
8
|
font-weight: bold;
|
|
9
9
|
padding: 2px 0.5em;
|
|
10
|
-
`,a=`%c${[r,s].filter(Boolean).join(":")}`;typeof t.args[0]=="string"?e(`${a}%c ${t.args[0]}`,i,"",...t.args.slice(1)):e(a,i,...t.args)}}function
|
|
11
|
-
`)}async function
|
|
12
|
-
`).filter(s=>s.includes(t)).forEach(s=>{const[r,n]=s.split(t),i=D(r).format("YYYY-MM-DD"),a=n.match(N)?.[0];a&&i&&e.set(a.trim(),i)}),e}function
|
|
10
|
+
`,a=`%c${[r,s].filter(Boolean).join(":")}`;typeof t.args[0]=="string"?e(`${a}%c ${t.args[0]}`,i,"",...t.args.slice(1)):e(a,i,...t.args)}}function nt(o={}){return st({reporters:o.reporters||[new rt({})],prompt(e,s={}){return s.type==="confirm"?Promise.resolve(confirm(e)):Promise.resolve(prompt(e))},...o})}const L=nt();async function w(o,t,e){const{execa:s}=await import("execa");return(await s(o,t,e))?.stdout?.trim()||""}function it(o){return o!=null}function at(o,...t){const e=Array.from({length:t.length+1}).fill(null).map(()=>[]);return o.forEach((s,r,n)=>{let i=0;for(const a of t){if(a(s,r,n)){e[i].push(s);return}i+=1}e[i].push(s)}),e}function S(o,t,e={}){for(const s of o){const r=s[t];e[r]||(e[r]=[]),e[r].push(s)}return e}function ct(o){return o.charAt(0).toUpperCase()+o.slice(1)}function j(o,t=", ",e=" and "){return!o||o.length===0?"":o.length===1?o[0]:o.length===2?o.join(e):`${o.slice(0,-1).join(t)}${e}${o.slice(-1)}`}const N=/v\d+\.\d+\.\d+(-(beta|alpha)\.\d+)?/,lt=/## \[v\d+\.\d+\.\d+(-(beta|alpha)\.\d+)?]/g,ut=/release\sv\d+\.\d+\.\d+(-(beta|alpha)\.\d+)?/;async function x(){return(await w("git",["--no-pager","tag","-l","--sort=creatordate"])).split(`
|
|
11
|
+
`)}async function pt(){const o=await w("git",["--no-pager","log","--tags","--simplify-by-decoration","--pretty=format:%ci %d"]),t="tag: ",e=new Map;return o.split(`
|
|
12
|
+
`).filter(s=>s.includes(t)).forEach(s=>{const[r,n]=s.split(t),i=D(r).format("YYYY-MM-DD"),a=n.match(N)?.[0];a&&i&&e.set(a.trim(),i)}),e}function ht(o){const t=[];return o.forEach((e,s)=>{s<o.length-1&&t.push({from:e,to:o[s+1]})}),t}async function I(o=0){const t=await x();return t[t.length+o-1]}async function ft(){return await w("git",["rev-parse","--abbrev-ref","HEAD"])}async function gt(){const o=await w("git",["tag","--points-at","HEAD"]),t=ft();return o||t}async function mt(){const o=await w("git",["config","--get","remote.origin.url"]),t=o.match(/github\.com[/:]([\w\d._-]+?)\/([\w\d._-]+?)(\.git)?$/i);if(!t)throw new Error(`Can not parse GitHub repo from url ${o}`);return`${t[1]}/${t[2]}`}function dt(o){return!/^[^.]*[\d.]+$/.test(o)}function wt(){return w("git",["rev-list","--max-parents=0","HEAD"])}async function yt(o,t="HEAD"){return(await w("git",["--no-pager","log",`${o?`${o}...`:""}${t}`,'--pretty="----%n%s|%h|%an|%ae%n%b"',"--name-status"])).split(`----
|
|
13
13
|
`).splice(1).map(e=>{const[s,...r]=e.split(`
|
|
14
14
|
`),[n,i,a,c]=s.split("|");return{message:n,shortHash:i,author:{name:a,email:c},body:r.join(`
|
|
15
|
-
`)}})}function
|
|
16
|
-
${e}`}function z(o){const{options:t,showTitle:e,contributors:s}=o,r=o.commits.filter(p=>p.description.match(
|
|
17
|
-
`).trim(),!0)}async function
|
|
15
|
+
`)}})}function _t(o){const t=/(?<type>[a-z]+)(\((?<scope>.+)\))?(?<breaking>!)?: (?<description>.+)/i,e=/co-authored-by:\s*(?<name>.+)(<(?<email>.+)>)/gim,s=/\([a-z]*(#\d+)\s*\)/gm,r=/(#\d+)/gm,n=o.message.match(t);if(!n?.groups)return null;const i=n.groups.type,a=n.groups.scope||"",c=!!n.groups.breaking;let l=n.groups.description;const u=[];for(const h of l.matchAll(s))u.push({type:"pull-request",value:h[1]});for(const h of l.matchAll(r))u.some(d=>d.value===h[1])||u.push({type:"issue",value:h[1]});u.push({value:o.shortHash,type:"hash"}),l=l.replace(s,"").trim();const m=[o.author],p=o.body.matchAll(e);for(const h of p){const{name:d="",email:U=""}=h.groups||{},W={name:d.trim(),email:U.trim()};m.push(W)}return{...o,authors:m,resolvedAuthors:[],description:l,type:i,scope:a,references:u,isBreaking:c}}async function R(o,t="HEAD"){return(await yt(o,t)).map(e=>_t(e)).filter(it)}function G(o){return{accept:"application/vnd.github.v3+json",authorization:`token ${o}`}}async function bt(o,t,e){let s="";try{s=(await b(`https://ungh.cc/users/find/${e}`))?.user?.username||""}catch(i){L.log("e: ",i)}if(s)return s;const{repo:r,token:n}=o;if(!n)return s;if(t.length)try{s=(await b(`https://api.github.com/repos/${r}/commits/${t[0]}`,{headers:G(n)}))?.author?.login||""}catch(i){L.log("e: ",i)}if(s)return s;try{s=(await b(`https://api.github.com/search/users?q=${encodeURIComponent(e)}`,{headers:G(n)})).items[0].login}catch(i){L.log("e: ",i)}return s}async function V(o,t,e){const s=[],r=new Map;for await(const n of o){const i=[];for await(const[c,l]of n.authors.entries()){const{email:u,name:m}=l;if(u&&m){const p=[];c===0&&p.push(n.shortHash);const h={name:m,email:u,commits:p,login:""};if(e?.has(u)){const d=e?.get(u)||"";h.login=d}else{const d=await bt(t,p,u);h.login=d,e?.set(u,d)}i.push(h),r.has(u)||r.set(u,h)}}const a={...n,resolvedAuthors:i};s.push(a)}return{commits:s,contributors:Array.from(r.values())}}function vt(){return{cwd:k.cwd(),types:{feat:"\u{1F680} Features",fix:"\u{1F41E} Bug Fixes",perf:"\u{1F525} Performance",refactor:"\u{1F485} Refactors",docs:"\u{1F4D6} Documentation",build:"\u{1F4E6} Build",types:"\u{1F30A} Types",chore:"\u{1F3E1} Chore",examples:"\u{1F3C0} Examples",test:"\u2705 Tests",style:"\u{1F3A8} Styles",ci:"\u{1F916} CI"},github:{repo:"",token:k.env.GITHUB_TOKEN||""},from:"",to:"",tags:[],tagDateMap:new Map,capitalize:!1,emoji:!0,titles:{breakingChanges:"\u{1F6A8} Breaking Changes"},output:"CHANGELOG.md",regenerate:!1,newVersion:""}}async function $t(o){let t="";try{const e=await _(`${o}/package.json`,"utf-8");t=JSON.parse(e)?.version||""}catch{}return{newVersion:t}}async function y(o){var t;const e=vt();Object.assign(e,o);const{newVersion:s}=await $t(e.cwd);if((t=e.github).repo||(t.repo=await mt()),e.newVersion||(e.newVersion=`v${s}`),e.from||(e.from=await I()),e.to||(e.to=await gt()),e.to===e.from){const r=await I(-1),n=await wt();e.from=r||n}return e.tags=await x(),e.tagDateMap=await pt(),e.prerelease||(e.prerelease=dt(e.to)),e}function H(o,t,e){const s=o.filter(n=>e==="issues"?n.type==="issue"||n.type==="pull-request":n.type==="hash").map(n=>t?n.type==="pull-request"||n.type==="issue"?`https://github.com/${t}/issues/${n.value.slice(1)}`:`[<samp>(${n.value.slice(0,5)})</samp>](https://github.com/${t}/commit/${n.value})`:n.value),r=j(s).trim();return e==="issues"?r&&`in ${r}`:r}function Ft(o,t){const e=H(o.references,t.github.repo,"issues"),s=H(o.references,t.github.repo,"hash");let r=j([...new Set(o.resolvedAuthors.map(i=>i.login?`@${i.login}`:`**${i.name}**`))]).trim();r&&(r=`by ${r}`);let n=[r,e,s].filter(i=>i?.trim()).join(" ");return n&&(n=` - ${n}`),[t.capitalize?ct(o.description):o.description,n].filter(i=>i?.trim()).join(" ")}function Ct(o,t){const e=/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g;let s=o.trim();return t.emoji||(s=o.replace(e,"").trim()),`### ${s}`}function O(o,t,e){if(!o.length)return[];const s=["",Ct(t,e),""],r=S(o,"scope");let n=!0;return Object.entries(r).some(([i,a])=>i&&a.length>1)||(n=!1),Object.keys(r).sort().forEach(i=>{let a="",c="";const l=`**${i}**`;i&&n?(s.push(`- ${l}:`),a=" "):i&&(c=`${l}: `),s.push(...r[i].reverse().map(u=>`${a}- ${c}${Ft(u,e)}`))}),s}function B(o){return`https://github.com/${o}`}function Lt(o){return`${B(o)}.png?size=48`}function At(o){let t="",e="";const s=new Map;return o.forEach(r=>{s.set(r.email,r)}),Array.from(s.values()).forEach((r,n)=>{const{name:i,email:a,login:c}=r;if(c){const l=B(c),u=Lt(c);t+=`[](${l}) `}else{let l=`[${i}](mailto:${a})`;n<o.length-1&&(l+=", "),e+=l}}),`${t}
|
|
16
|
+
${e}`}function z(o){const{options:t,showTitle:e,contributors:s}=o,r=o.commits.filter(p=>p.description.match(ut)===null),n=[],{version:i,isNewVersion:a}=Y(t.to,t.newVersion),c=`https://github.com/${t.github.repo}/compare/${t.from}...${i}`;if(e){const p=a?D().format("YY-MM-DD"):t.tagDateMap.get(t.to);let h=`## [${i}](${c})`;p&&(h+=` (${p})`),n.push(h)}const[l,u]=at(r,p=>p.isBreaking),m=S(u,"type");n.push(...O(l,t.titles.breakingChanges,t));for(const p of Object.keys(t.types)){const h=m[p]||[];n.push(...O(h,t.types[p],t))}if(n.length||n.push("*No significant changes*"),e||n.push("",`##### [View changes on GitHub](${c})`),e){n.push("","### \u2764\uFE0F Contributors","");const p=At(s);n.push(p)}return X(n.join(`
|
|
17
|
+
`).trim(),!0)}async function kt(o,t,e){let s=!1,r="";try{r=await _(e,"utf8")}catch{}if(r){const n=r.match(lt);if(n?.length){const{version:i}=Y(o,t),a=`## [${i}]`;s=n.includes(a)}}return s}function Y(o,t){const e=!N.test(o);return{version:e?t:o,isNewVersion:e}}async function P(o,t,e=!1){let s="";const r="# Changelog";Q(t)||await E(t,`${r}
|
|
18
18
|
|
|
19
19
|
`,"utf8"),e||(s=await _(t,"utf8")),s.startsWith(r)||(s=`${r}
|
|
20
20
|
|
|
@@ -23,6 +23,6 @@ ${s}`);const n=s.match(/^###?\s+.*$/m);n?s=`${s.slice(0,n.index)+o}
|
|
|
23
23
|
${s.slice(n.index)}`:s+=`
|
|
24
24
|
${o}
|
|
25
25
|
|
|
26
|
-
`,await E(t,s)}async function A(o,t=!0){const e=await y(o),s=await R(e.from,e.to),{commits:r,contributors:n}=await V(s,e.github);return{markdown:z({commits:r,options:e,showTitle:t,contributors:n}),commits:r,options:e}}async function q(o,t=!0){const e=await y(o);let s=null;t&&(s=new
|
|
26
|
+
`,await E(t,s)}async function A(o,t=!0){const e=await y(o),s=await R(e.from,e.to),{commits:r,contributors:n}=await V(s,e.github);return{markdown:z({commits:r,options:e,showTitle:t,contributors:n}),commits:r,options:e}}async function q(o,t=!0){const e=await y(o);let s=null;t&&(s=new J({format:"generate total changelog: [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}"},K.shades_classic));const r=ht(e.tags);if(r.length===0){const{markdown:a}=await A(e);return a}s?.start(r.length,0);let n="";const i=new Map;for await(const[a,c]of r.entries()){const{from:l,to:u}=c,m=await R(l,u),{commits:p,contributors:h}=await V(m,e.github,i);n=`${z({commits:p,options:{...e,from:l,to:u},showTitle:!0,contributors:h})}
|
|
27
27
|
|
|
28
|
-
${n}`,s?.update(a+1)}return s?.stop(),n}async function
|
|
28
|
+
${n}`,s?.update(a+1)}return s?.stop(),n}async function Et(o){const t=await y(o),e=await kt(t.to,t.newVersion,t.output);if(!t.regenerate&&e)return;const{markdown:s}=await A(t);await P(s,t.output,t.regenerate)}async function Dt(o,t=!0){const e=await y(o),s=await q(e,t);await P(s,e.output,!0)}export{Et as generateChangelog,Dt as generateTotalChangelog,A as getChangelogMarkdown,q as getTotalChangelogMarkdown};
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soybeanjs/changelog",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.3.
|
|
5
|
-
"packageManager": "pnpm@8.
|
|
4
|
+
"version": "0.3.9-beta.0",
|
|
5
|
+
"packageManager": "pnpm@8.14.1",
|
|
6
6
|
"description": "generate changelog form git tags and commits for github",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Soybean",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"dist"
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@soybeanjs/eslint-config": "^1.
|
|
38
|
+
"@soybeanjs/eslint-config": "^1.1.4",
|
|
39
39
|
"cli-progress": "3.12.0",
|
|
40
40
|
"convert-gitmoji": "0.1.3",
|
|
41
41
|
"dayjs": "1.11.10",
|
|
@@ -43,13 +43,13 @@
|
|
|
43
43
|
"ofetch": "1.3.3"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@soybeanjs/cli": "0.
|
|
46
|
+
"@soybeanjs/cli": "1.0.1",
|
|
47
47
|
"@types/cli-progress": "3.11.5",
|
|
48
|
-
"@types/node": "20.
|
|
49
|
-
"eslint": "8.
|
|
48
|
+
"@types/node": "20.11.0",
|
|
49
|
+
"eslint": "8.56.0",
|
|
50
50
|
"lint-staged": "15.2.0",
|
|
51
51
|
"simple-git-hooks": "2.9.0",
|
|
52
|
-
"tsx": "4.
|
|
52
|
+
"tsx": "4.7.0",
|
|
53
53
|
"typescript": "5.3.3",
|
|
54
54
|
"unbuild": "2.0.0"
|
|
55
55
|
},
|