@jeromefitz/release-notes-generator 2.0.0 → 2.0.1
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/index.js +17 -17
- package/package.json +4 -3
package/index.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`,o="",c=f=>{if(!f)return"";if(
|
|
3
|
-
`,l.map(d=>{let{
|
|
4
|
-
`}),o};import{Octokit as _t}from"@octokit/rest";import V from"lodash/findIndex.js";import $t from"lodash/sample.js";import kt from"lodash/uniqBy.js";var Pt=new _t({auth:process.env.GH_TOKEN}),W={login:["dependabot","dependabot[bot]","kodiakhq","kodiakhq[bot]","renovate","renovate[bot]","semantic-release-bot"]
|
|
5
|
-
`;let o=t.map(c=>`@${c.login}`).join(", ");
|
|
6
|
-
`,
|
|
7
|
-
`}return
|
|
8
|
-
`,
|
|
9
|
-
`,
|
|
10
|
-
`}),
|
|
1
|
+
import{URL as Ut,format as jt}from"url";import St from"conventional-commits-filter";import{sync as Bt}from"conventional-commits-parser";import S from"lodash/merge.js";import{readPackageUp as Dt}from"read-package-up";import lt from"conventional-commits-filter";import ut from"lodash/clone.js";import gt from"lodash/forEach.js";import dt from"lodash/map.js";import ht from"lodash/merge.js";import z from"semver";import at from"lodash/forEach.js";import mt from"lodash/groupBy.js";import M from"lodash/orderBy.js";function ct(i,a,e,t){let r=[],n=mt(a,function(m){return m[i]||""});return at(n,function(m,s){s===""&&(s=!1);let o=m;t&&(o=M(o,t));let c=o[0].typeSpec.semver,p=99;["fix","patch"].includes(c)&&(p=20),["feature","minor"].includes(c)&&(p=10),["breaking","major"].includes(c)&&(p=0),r.push({commits:o,order:p,title:s})}),e&&(r=M(r,e)),r}var q=ct;import A from"lodash/forEach.js";function pt(i,a,e){let t=[];return A(i,function(r){let n=r.title,m=!1;A(t,function(s){if(s.title===n)return m=!0,s.notes.push(r),!1}),m||t.push({notes:[r],title:n})}),t}var N=pt;function ft(i,a,e){let t={};return t.commitGroups=q(e.groupBy,i,e.commitGroupsSort,e.commitsSort),t.noteGroups=N(a,e.noteGroupsSort,e.notesSort),t}var H=ft;function yt(i,a,e,t){let r=[],n;return i.ignoreReverted?n=lt(a):n=ut(a),gt(n,function(m){dt(m.notes,function(s){return s.commit=m,s}),r=r.concat(m.notes)}),e=ht({},e,t,H(n,r,i)),t&&t.committerDate&&(e.date=t.committerDate),e.version&&z.valid(e.version)&&(e.isPatch=e.isPatch||z.patch(e.version)!==0),e={commits:a,context:e,filteredCommits:n,keyCommit:t,options:i},e}var J=yt;import{dirname as wt}from"node:path";import{fileURLToPath as bt}from"node:url";import{promisify as xt}from"util";import G from"import-from-esm";import Ct from"lodash/isPlainObject.js";var K=wt(bt(import.meta.url)),Q=async(i,a)=>{let{config:e,parserOpts:t,preset:r,presetConfig:n,writerOpts:m}=i,{cwd:s}=a,o;if(r){let p=`conventional-changelog-${r.toLowerCase()}`;o=await(await G.silent(K,p)||await G(s,p))(n)}else e?o=await(await G.silent(K,e)||await G(s,e))():o={};return o=await(typeof o=="function"?Ct(n)?o(n):xt(o)():o),{parserOpts:{...o.parserOpts,...t},writerOpts:{...o.writerOpts,...m}}};import vt from"lodash/size.js";var T=(i,a,e)=>{let{commit:t,commitGroups:r,linkReferences:n}=i,{repositoryUrl:m}=e,s=`- {scope}{subject}{hash}{references}
|
|
2
|
+
`,o="",c=f=>{if(!f)return"";if(n){let l=` ${m}/${t}/${f}`;return` [ \`${f}\` ](${l})`}return` ${f}`},p=f=>{if(!f||vt(f)===0)return"";let l=", closes ",g=[];return f.map(d=>{d.issue&&g.push(`[ #${d.issue} ]`)}),l+=g.join(" "),l};return r.map(f=>{let{commits:l}=f,g=l[0]?.type;o+=`#### ${g}
|
|
3
|
+
`,l.map(d=>{let{hash:x,header:$,references:k,scope:w,subject:h}=d,C=s.replace(/\{scope\}/g,w?`**${w}**: `:"").replace(/\{subject\}/g,h||$).replace(/\{hash\}/g,c(x)).replace(/\{references\}/g,p(k));o+=C}),o+=`
|
|
4
|
+
`}),o};import{Octokit as _t}from"@octokit/rest";import V from"lodash/findIndex.js";import $t from"lodash/sample.js";import kt from"lodash/uniqBy.js";var Pt=new _t({auth:process.env.GH_TOKEN}),W={email:["noreply@github.com","users.noreply.github.com","semantic-release-bot@martynus.net"],login:["dependabot","dependabot[bot]","kodiakhq","kodiakhq[bot]","renovate","renovate[bot]","semantic-release-bot"]},Gt=["Props to","Kudos to","Thanks to","Brought to you by"],E=async(i,a,e)=>{let t=kt(a.map(o=>({email:o.author.email,name:o.author.name})),"name"),{options:{contributorsProhibitList:r}}=i;await Promise.all(t.map((o,c)=>Pt.request("GET /search/users",{q:o.email}).then(({data:p})=>{let f=p.items[0]?.login;return f?(t[c].login=f,f):""}))),[...W.login,...r.login].map(o=>{let c=V(t,["login",o]);c!==-1&&t.splice(c)}),[...W.email,...r.email].map(o=>{let c=V(t,p=>p.email.includes(o));c!==-1&&t.splice(c)});let s="";if(t.length>0){s+=`#### \u{1F973}\uFE0F Contributors
|
|
5
|
+
`;let o=t.map(c=>`@${c.login}`).join(", ");s+=`- ${$t(Gt)} ${o}
|
|
6
|
+
`,s+=`
|
|
7
|
+
`}return s};var L=(i,a,e)=>{let{noteGroups:t}=i,r=`- {scope}{text}
|
|
8
|
+
`,n="";return t.map(m=>{let{notes:s}=m,o=s[0].title;n+=`#### ${o}
|
|
9
|
+
`,s.map(c=>{let{scope:p,text:f}=c,l=r.replace(/\{scope\}/g,p?`**${p}**: `:"").replace(/\{text\}/g,f||"");n+=l}),n+=`
|
|
10
|
+
`}),n};import{format as Ot}from"date-fns";var U=(i,a,e)=>{let{currentTag:t,date:r,linkCompare:n,previousTag:m,title:s}=i,{repositoryUrl:o}=e,c=`
|
|
11
11
|
| \u{1F516}\uFE0F | Release Information |
|
|
12
12
|
| ----------- | --------------- |
|
|
13
13
|
| Current | **\`${t}\`** |
|
|
14
|
-
`;if(
|
|
15
|
-
`}return
|
|
14
|
+
`;if(n){let p=o+"/compare/"+m+"..."+t;c+=`| Previous | **[\`${m}\`](${p})** |
|
|
15
|
+
`}return s&&(c+=`| Title | **\`${s}\`** |
|
|
16
16
|
`),r&&(c+=`| Date | **\`${Ot(r,"yyyy-MM-dd")}\`** |
|
|
17
17
|
`),c+=`
|
|
18
|
-
`,c};var X=async(i,a)=>{let{commitGroups:e,currentTag:t,date:r,host:
|
|
19
|
-
`,u+=T(b,a,
|
|
20
|
-
`,u+=await E(b,a,
|
|
21
|
-
`,u+=L(b,a,
|
|
22
|
-
`,u};import Rt from"lodash/cloneDeep.js";import Tt from"lodash/forEach.js";import Et from"lodash/get.js";import Y from"lodash/isFunction.js";import Lt from"lodash/set.js";function j(i,a,e){let t;try{i=JSON.parse(i)}catch{}return t=Rt(i),Y(a)?(t=a(t,e),t&&(t.raw=i),t):(Tt(a,function(r,
|
|
18
|
+
`,c};var X=async(i,a)=>{let{commitGroups:e,currentTag:t,date:r,host:n,issue:m,lastRelease:s,linkCompare:o,linkReferences:c,mentions:p,nextRelease:f,noteGroups:l,notes:g,options:d,owner:x,previousTag:$,references:k,repoUrl:w,repository:h,revert:C,version:O}=i,b={commitGroups:e,currentTag:t,date:r,host:n,issue:m,lastRelease:s,linkCompare:o,linkReferences:c,mentions:p,nextRelease:f,noteGroups:l,notes:g,options:d,owner:x,previousTag:$,references:k,repoUrl:w,repository:h,revert:C,version:O},v={repositoryUrl:h?n+"/"+x+"/"+h:w},u="";return u+=U(b,a,v),u+=`
|
|
19
|
+
`,u+=T(b,a,v),u+=`
|
|
20
|
+
`,u+=await E(b,a,v),u+=`
|
|
21
|
+
`,u+=L(b,a,v),u+=`
|
|
22
|
+
`,u};import Rt from"lodash/cloneDeep.js";import Tt from"lodash/forEach.js";import Et from"lodash/get.js";import Y from"lodash/isFunction.js";import Lt from"lodash/set.js";function j(i,a,e){let t;try{i=JSON.parse(i)}catch{}return t=Rt(i),Y(a)?(t=a(t,e),t&&(t.raw=i),t):(Tt(a,function(r,n){let m=Et(t,n);Y(r)?m=r(m,n):m=r,Lt(t,n,m)}),t.raw=i,t)}var Ft={commit:"commit",hostname:"github.com",issue:"issues",issuePrefixes:["#","gh-"],referenceActions:["close","closes","closed","fix","fixes","fixed","resolve","resolves","resolved"]};async function qo(i,a){let{parserOpts:e,writerOpts:t}=await Q(i,a),{commits:r,cwd:n,lastRelease:m,nextRelease:s,options:o}=a,{commit:c,issue:p,issuePrefixes:f,referenceActions:l}=Ft,g=m.gitTag||m.gitHead,d=s.gitTag||s.gitHead,{commit:x,host:$,issue:k,linkCompare:w,linkReferences:h}=i,C=o.repositoryUrl.replace(/\.git$/i,""),[O,b,B,v]=/^(?!.+:\/\/)(?:(?<auth>.*)@)?(?<host>.*?):(?<path>.*)$/.exec(C)||[],{hostname:u,pathname:Z,port:R,protocol:P}=new Ut(O?`ssh://${b?`${b}@`:""}${B}/${v}`:C);R=P.includes("ssh")?"":R,P=P&&/http[^s]/.test(P)?"http":"https";let[,tt,ot]=/^\/(?<owner>[^/]+)?\/?(?<repository>.+)?$/.exec(Z)??[],D=S({commit:c,currentTag:d,host:jt({hostname:u,port:R,protocol:P}),issue:p,linkCompare:d&&g,owner:tt,packageData:(await Dt({cwd:n,normalize:!1})||{}).packageJson,previousTag:g,repository:ot,version:s.version},{commit:x,host:$,issue:k,linkCompare:w,linkReferences:h}),et=St(r.filter(({message:y})=>!!y.trim()).map(y=>({...y,...Bt(y.message,{issuePrefixes:f,referenceActions:l,...e})}))),_=[];await et.map(async y=>{let I=await j(y,t.transform,a);_.push(I)}),_=await _.filter(y=>y!==void 0);let rt=S({},D,o,t),F=_[0],nt=j(F,t.transform,a)||F,{context:st}=await J(rt,_,a,nt),it=S({},D,st);return X(it,_)}export{qo as generateNotes};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jeromefitz/release-notes-generator",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Custom Release Note Generator for Semantic Release.",
|
|
6
6
|
"repository": "jeromefitz/packages.git",
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
"format:prettier": "prettier \"./src/**/*.{cjs,js,jsx,mjs,ts,tsx,json,md,mdx,css,html,yml,yaml,scss}\" --ignore-unknown --log-level warn",
|
|
29
29
|
"lint": "pnpm run format:prettier --check && pnpm run lint:eslint",
|
|
30
30
|
"lint:eslint": "eslint ./src --ext cjs,js,jsx,mjs,ts,tsx --max-warnings=0",
|
|
31
|
-
"semantic-release": "semantic-release"
|
|
31
|
+
"semantic-release": "semantic-release",
|
|
32
|
+
"semantic-release:dry": "semantic-release --dry-run"
|
|
32
33
|
},
|
|
33
34
|
"peerDependencies": {
|
|
34
35
|
"lodash": "^4.17.21"
|
|
@@ -37,7 +38,7 @@
|
|
|
37
38
|
"@octokit/rest": "20.0.2",
|
|
38
39
|
"conventional-commits-filter": "4.0.0",
|
|
39
40
|
"conventional-commits-parser": "5.0.0",
|
|
40
|
-
"date-fns": "3.3.
|
|
41
|
+
"date-fns": "3.3.1",
|
|
41
42
|
"import-from-esm": "1.3.3",
|
|
42
43
|
"read-package-up": "11.0.0",
|
|
43
44
|
"semver": "7.5.4"
|