@qlover/fe-release 2.1.4 → 2.1.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/dist/cli.cjs CHANGED
@@ -1,2 +1,2 @@
1
1
  #! /usr/bin/env node
2
- "use strict";var e=require("commander"),r=require("semver"),o=require("./index.cjs");require("@qlover/scripts-context"),require("@qlover/env-loader"),require("@qlover/fe-corekit"),require("@octokit/rest"),require("node:path"),require("fs"),require("path"),require("node:module"),require("node:url"),require("p-limit");const t=["patch","minor","major"],i=e=>e.split(",").filter((e=>null!=e&&""!=e));(async function(){const{shared:n,...a}=function(){const n=new e.Command;return n.version("2.1.4","-v, --version","Show version").description("A tool for releasing front-end projects, supporting multiple release modes and configurations, simplifying the release process and improving efficiency.").option("-d, --dry-run","Do not touch or write anything, but show the commands").option("-V, --verbose","Show more information").option("-p, --publish-path <publishPath>","The path of the package to release, map to feConfig.release.publishPath").option("-b, --branch-name <branchName>","The branch name of the release, map to feConfig.release.branchName, default(release-${pkgName}-${tagName})").option("-s, --source-branch <sourceBranch>","The source branch of the release").option("-i, --changelog.increment <increment>","The increment of the release",(e=>{if(!t.includes(e)&&!r.valid(e))throw new Error(`Invalid increment(-i) Must be one of [${t.join(", ")}] or valid version string(semver)`);return e}),"patch").option("--changelog.skip","Whether to skip the changelog").option("--changelog.skip-changeset","Whether to skip the changeset").option("--githubPR.skip","Whether to skip the githubPR").option("--packages-directories <packagesDirectories>","The packages that have been changed, multiple values use `,` to split, map to feConfig.release.packagesDirectories",i).option("--githubPR.dry-run-create-PR","Whether to dry run the creation of the pull request").option("--githubPR.push-change-labels","Whether to push the changed labels to the release PR").option("-P, --githubPR.release-PR","Create a release PR").option("-l, --workspaces.change-labels <changeLabels>","The change labels of the release, multiple values use `,` to split",i),n.parse(),o.reduceOptions(n.opts(),"shared")}(),{dryRun:s,verbose:h,...c}=n,l=Object.assign(a,{});await new o.ReleaseTask({dryRun:s,verbose:h,options:l,shared:c}).exec()})().catch((e=>{console.error(e.message),process.exit(1)}));
2
+ "use strict";var e=require("commander"),r=require("semver"),o=require("./index.cjs");require("@qlover/scripts-context"),require("@qlover/env-loader"),require("@qlover/fe-corekit"),require("@octokit/rest"),require("node:path"),require("fs"),require("path"),require("node:module"),require("node:url"),require("p-limit");const t=["patch","minor","major"],n=e=>e.split(",").filter((e=>null!=e&&""!=e));(async function(){const{shared:a,...i}=function(){const a=new e.Command;return a.version("2.1.5","-v, --version","Show version").description("A tool for releasing front-end projects, supporting multiple release modes and configurations, simplifying the release process and improving efficiency.").option("-d, --dry-run","Do not touch or write anything, but show the commands").option("-V, --verbose","Show more information").option("-p, --publish-path <publishPath>","The path of the package to release, map to feConfig.release.publishPath").option("-b, --branch-name <branchName>","The branch name of the release, map to feConfig.release.branchName, default(release-${pkgName}-${tagName})").option("-s, --source-branch <sourceBranch>","The source branch of the release").option("-i, --changelog.increment <increment>","The increment of the release",(e=>{if(!t.includes(e)&&!r.valid(e))throw new Error(`Invalid increment(-i) Must be one of [${t.join(", ")}] or valid version string(semver)`);return e}),"patch").option("--changelog.skip","Whether to skip the changelog").option("--changelog.ignore-non-updated-packages","Whether to ignore non updated packages").option("--changelog.skip-changeset","Whether to skip the changeset").option("--githubPR.skip","Whether to skip the githubPR").option("--packages-directories <packagesDirectories>","The packages that have been changed, multiple values use `,` to split, map to feConfig.release.packagesDirectories",n).option("--githubPR.dry-run-create-PR","Whether to dry run the creation of the pull request").option("--githubPR.push-change-labels","Whether to push the changed labels to the release PR").option("-P, --githubPR.release-PR","Create a release PR").option("-l, --workspaces.change-labels <changeLabels>","The change labels of the release, multiple values use `,` to split",n),a.parse(),o.reduceOptions(a.opts(),"shared")}(),{dryRun:s,verbose:h,...c}=a,p=Object.assign(i,{});await new o.ReleaseTask({dryRun:s,verbose:h,options:p,shared:c}).exec()})().catch((e=>{console.error(e.message),process.exit(1)}));
package/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #! /usr/bin/env node
2
- import{Command as e}from"commander";import o from"semver";import{ReleaseTask as t,reduceOptions as r}from"./index.js";import"@qlover/scripts-context";import"@qlover/env-loader";import"@qlover/fe-corekit";import"@octokit/rest";import"node:path";import"fs";import"path";import"node:module";import"node:url";import"p-limit";const i=["patch","minor","major"],n=e=>e.split(",").filter((e=>null!=e&&""!=e));(async function(){const{shared:a,...s}=function(){const t=new e;return t.version("2.1.4","-v, --version","Show version").description("A tool for releasing front-end projects, supporting multiple release modes and configurations, simplifying the release process and improving efficiency.").option("-d, --dry-run","Do not touch or write anything, but show the commands").option("-V, --verbose","Show more information").option("-p, --publish-path <publishPath>","The path of the package to release, map to feConfig.release.publishPath").option("-b, --branch-name <branchName>","The branch name of the release, map to feConfig.release.branchName, default(release-${pkgName}-${tagName})").option("-s, --source-branch <sourceBranch>","The source branch of the release").option("-i, --changelog.increment <increment>","The increment of the release",(e=>{if(!i.includes(e)&&!o.valid(e))throw new Error(`Invalid increment(-i) Must be one of [${i.join(", ")}] or valid version string(semver)`);return e}),"patch").option("--changelog.skip","Whether to skip the changelog").option("--changelog.skip-changeset","Whether to skip the changeset").option("--githubPR.skip","Whether to skip the githubPR").option("--packages-directories <packagesDirectories>","The packages that have been changed, multiple values use `,` to split, map to feConfig.release.packagesDirectories",n).option("--githubPR.dry-run-create-PR","Whether to dry run the creation of the pull request").option("--githubPR.push-change-labels","Whether to push the changed labels to the release PR").option("-P, --githubPR.release-PR","Create a release PR").option("-l, --workspaces.change-labels <changeLabels>","The change labels of the release, multiple values use `,` to split",n),t.parse(),r(t.opts(),"shared")}(),{dryRun:h,verbose:p,...c}=a,l=Object.assign(s,{});await new t({dryRun:h,verbose:p,options:l,shared:c}).exec()})().catch((e=>{console.error(e.message),process.exit(1)}));
2
+ import{Command as e}from"commander";import o from"semver";import{ReleaseTask as t,reduceOptions as r}from"./index.js";import"@qlover/scripts-context";import"@qlover/env-loader";import"@qlover/fe-corekit";import"@octokit/rest";import"node:path";import"fs";import"path";import"node:module";import"node:url";import"p-limit";const n=["patch","minor","major"],i=e=>e.split(",").filter((e=>null!=e&&""!=e));(async function(){const{shared:a,...s}=function(){const t=new e;return t.version("2.1.5","-v, --version","Show version").description("A tool for releasing front-end projects, supporting multiple release modes and configurations, simplifying the release process and improving efficiency.").option("-d, --dry-run","Do not touch or write anything, but show the commands").option("-V, --verbose","Show more information").option("-p, --publish-path <publishPath>","The path of the package to release, map to feConfig.release.publishPath").option("-b, --branch-name <branchName>","The branch name of the release, map to feConfig.release.branchName, default(release-${pkgName}-${tagName})").option("-s, --source-branch <sourceBranch>","The source branch of the release").option("-i, --changelog.increment <increment>","The increment of the release",(e=>{if(!n.includes(e)&&!o.valid(e))throw new Error(`Invalid increment(-i) Must be one of [${n.join(", ")}] or valid version string(semver)`);return e}),"patch").option("--changelog.skip","Whether to skip the changelog").option("--changelog.ignore-non-updated-packages","Whether to ignore non updated packages").option("--changelog.skip-changeset","Whether to skip the changeset").option("--githubPR.skip","Whether to skip the githubPR").option("--packages-directories <packagesDirectories>","The packages that have been changed, multiple values use `,` to split, map to feConfig.release.packagesDirectories",i).option("--githubPR.dry-run-create-PR","Whether to dry run the creation of the pull request").option("--githubPR.push-change-labels","Whether to push the changed labels to the release PR").option("-P, --githubPR.release-PR","Create a release PR").option("-l, --workspaces.change-labels <changeLabels>","The change labels of the release, multiple values use `,` to split",i),t.parse(),r(t.opts(),"shared")}(),{dryRun:h,verbose:p,...c}=a,l=Object.assign(s,{});await new t({dryRun:h,verbose:p,options:l,shared:c}).exec()})().catch((e=>{console.error(e.message),process.exit(1)}));
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var t,e,r,n,o,i,s,a,c,u,h,l,f,g,p,m,d,y,b,v,w,R,x,_,k,P,C,$,N,j,E,T,B,O,S,A,L,F,U,W,M,G,H,D,q,z,I,V,J,Y,K,Q,X,Z,tt,et,rt,nt,ot,it,st,at,ct,ut,ht,lt,ft,gt,pt,mt,dt,yt,bt,vt,wt,Rt,xt,_t,kt,Pt,Ct,$t,Nt,jt,Et,Tt,Bt,Ot,St,At,Lt,Ft,Ut,Wt,Mt,Gt,Ht,Dt,qt=require("@qlover/scripts-context"),zt=require("@qlover/env-loader"),It=require("@qlover/fe-corekit"),Vt=require("@octokit/rest"),Jt=require("node:path"),Yt=require("fs"),Kt=require("path"),Qt=require("node:module"),Xt=require("node:url"),Zt=require("p-limit"),te="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function ee(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function re(){if(e)return t;return e=1,t=function(){this.__data__=[],this.size=0}}function ne(){if(n)return r;return n=1,r=function(t,e){return t===e||t!=t&&e!=e}}function oe(){if(i)return o;i=1;var t=ne();return o=function(e,r){for(var n=e.length;n--;)if(t(e[n][0],r))return n;return-1}}function ie(){if(a)return s;a=1;var t=oe(),e=Array.prototype.splice;return s=function(r){var n=this.__data__,o=t(n,r);return!(o<0)&&(o==n.length-1?n.pop():e.call(n,o,1),--this.size,!0)}}function se(){if(u)return c;u=1;var t=oe();return c=function(e){var r=this.__data__,n=t(r,e);return n<0?void 0:r[n][1]}}function ae(){if(l)return h;l=1;var t=oe();return h=function(e){return t(this.__data__,e)>-1}}function ce(){if(g)return f;g=1;var t=oe();return f=function(e,r){var n=this.__data__,o=t(n,e);return o<0?(++this.size,n.push([e,r])):n[o][1]=r,this}}function ue(){if(m)return p;m=1;var t=re(),e=ie(),r=se(),n=ae(),o=ce();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,p=i}function he(){if(y)return d;y=1;var t=ue();return d=function(){this.__data__=new t,this.size=0}}function le(){if(v)return b;return v=1,b=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}}function fe(){if(R)return w;return R=1,w=function(t){return this.__data__.get(t)}}function ge(){if(_)return x;return _=1,x=function(t){return this.__data__.has(t)}}function pe(){if(P)return k;P=1;var t="object"==typeof te&&te&&te.Object===Object&&te;return k=t}function me(){if($)return C;$=1;var t=pe(),e="object"==typeof self&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return C=r}function de(){if(j)return N;j=1;var t=me().Symbol;return N=t}function ye(){if(T)return E;T=1;var t=de(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,o=t?t.toStringTag:void 0;return E=function(t){var e=r.call(t,o),i=t[o];try{t[o]=void 0;var s=!0}catch(t){}var a=n.call(t);return s&&(e?t[o]=i:delete t[o]),a}}function be(){if(O)return B;O=1;var t=Object.prototype.toString;return B=function(e){return t.call(e)}}function ve(){if(A)return S;A=1;var t=de(),e=ye(),r=be(),n=t?t.toStringTag:void 0;return S=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":n&&n in Object(t)?e(t):r(t)}}function we(){if(F)return L;return F=1,L=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}}function Re(){if(W)return U;W=1;var t=ve(),e=we();return U=function(r){if(!e(r))return!1;var n=t(r);return"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n}}function xe(){if(G)return M;G=1;var t=me()["__core-js_shared__"];return M=t}function _e(){if(D)return H;D=1;var t,e=xe(),r=(t=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||""))?"Symbol(src)_1."+t:"";return H=function(t){return!!r&&r in t}}function ke(){if(z)return q;z=1;var t=Function.prototype.toString;return q=function(e){if(null!=e){try{return t.call(e)}catch(t){}try{return e+""}catch(t){}}return""}}function Pe(){if(V)return I;V=1;var t=Re(),e=_e(),r=we(),n=ke(),o=/^\[object .+?Constructor\]$/,i=Function.prototype,s=Object.prototype,a=i.toString,c=s.hasOwnProperty,u=RegExp("^"+a.call(c).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return I=function(i){return!(!r(i)||e(i))&&(t(i)?u:o).test(n(i))}}function Ce(){if(Y)return J;return Y=1,J=function(t,e){return null==t?void 0:t[e]}}function $e(){if(Q)return K;Q=1;var t=Pe(),e=Ce();return K=function(r,n){var o=e(r,n);return t(o)?o:void 0}}function Ne(){if(Z)return X;Z=1;var t=$e()(me(),"Map");return X=t}function je(){if(et)return tt;et=1;var t=$e()(Object,"create");return tt=t}function Ee(){if(nt)return rt;nt=1;var t=je();return rt=function(){this.__data__=t?t(null):{},this.size=0}}function Te(){if(it)return ot;return it=1,ot=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}}function Be(){if(at)return st;at=1;var t=je(),e=Object.prototype.hasOwnProperty;return st=function(r){var n=this.__data__;if(t){var o=n[r];return"__lodash_hash_undefined__"===o?void 0:o}return e.call(n,r)?n[r]:void 0}}function Oe(){if(ut)return ct;ut=1;var t=je(),e=Object.prototype.hasOwnProperty;return ct=function(r){var n=this.__data__;return t?void 0!==n[r]:e.call(n,r)}}function Se(){if(lt)return ht;lt=1;var t=je();return ht=function(e,r){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=t&&void 0===r?"__lodash_hash_undefined__":r,this}}function Ae(){if(gt)return ft;gt=1;var t=Ee(),e=Te(),r=Be(),n=Oe(),o=Se();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,ft=i}function Le(){if(mt)return pt;mt=1;var t=Ae(),e=ue(),r=Ne();return pt=function(){this.size=0,this.__data__={hash:new t,map:new(r||e),string:new t}}}function Fe(){if(yt)return dt;return yt=1,dt=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}}function Ue(){if(vt)return bt;vt=1;var t=Fe();return bt=function(e,r){var n=e.__data__;return t(r)?n["string"==typeof r?"string":"hash"]:n.map}}function We(){if(Rt)return wt;Rt=1;var t=Ue();return wt=function(e){var r=t(this,e).delete(e);return this.size-=r?1:0,r}}function Me(){if(_t)return xt;_t=1;var t=Ue();return xt=function(e){return t(this,e).get(e)}}function Ge(){if(Pt)return kt;Pt=1;var t=Ue();return kt=function(e){return t(this,e).has(e)}}function He(){if($t)return Ct;$t=1;var t=Ue();return Ct=function(e,r){var n=t(this,e),o=n.size;return n.set(e,r),this.size+=n.size==o?0:1,this}}function De(){if(jt)return Nt;jt=1;var t=Le(),e=We(),r=Me(),n=Ge(),o=He();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,Nt=i}function qe(){if(Tt)return Et;Tt=1;var t=ue(),e=Ne(),r=De();return Et=function(n,o){var i=this.__data__;if(i instanceof t){var s=i.__data__;if(!e||s.length<199)return s.push([n,o]),this.size=++i.size,this;i=this.__data__=new r(s)}return i.set(n,o),this.size=i.size,this}}function ze(){if(Ot)return Bt;Ot=1;var t=ue(),e=he(),r=le(),n=fe(),o=ge(),i=qe();function s(e){var r=this.__data__=new t(e);this.size=r.size}return s.prototype.clear=e,s.prototype.delete=r,s.prototype.get=n,s.prototype.has=o,s.prototype.set=i,Bt=s}function Ie(){if(At)return St;At=1;var t=$e(),e=function(){try{var e=t(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();return St=e}function Ve(){if(Ft)return Lt;Ft=1;var t=Ie();return Lt=function(e,r,n){"__proto__"==r&&t?t(e,r,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[r]=n}}function Je(){if(Wt)return Ut;Wt=1;var t=Ve(),e=ne();return Ut=function(r,n,o){(void 0!==o&&!e(r[n],o)||void 0===o&&!(n in r))&&t(r,n,o)}}function Ye(){if(Gt)return Mt;return Gt=1,Mt=function(t){return function(e,r,n){for(var o=-1,i=Object(e),s=n(e),a=s.length;a--;){var c=s[t?a:++o];if(!1===r(i[c],c,i))break}return e}}}function Ke(){if(Dt)return Ht;Dt=1;var t=Ye()();return Ht=t}var Qe,Xe,Ze,tr,er,rr,nr,or,ir,sr,ar,cr,ur,hr,lr,fr,gr,pr,mr,dr,yr,br,vr,wr,Rr,xr,_r,kr,Pr,Cr,$r,Nr,jr,Er={exports:{}};function Tr(){return Qe||(Qe=1,function(t,e){var r=me(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n?r.Buffer:void 0,s=i?i.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var r=t.length,n=s?s(r):new t.constructor(r);return t.copy(n),n}}(Er,Er.exports)),Er.exports}function Br(){if(Ze)return Xe;Ze=1;var t=me().Uint8Array;return Xe=t}function Or(){if(er)return tr;er=1;var t=Br();return tr=function(e){var r=new e.constructor(e.byteLength);return new t(r).set(new t(e)),r}}function Sr(){if(nr)return rr;nr=1;var t=Or();return rr=function(e,r){var n=r?t(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}}function Ar(){if(ir)return or;return ir=1,or=function(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r<n;)e[r]=t[r];return e}}function Lr(){if(ar)return sr;ar=1;var t=we(),e=Object.create,r=function(){function r(){}return function(n){if(!t(n))return{};if(e)return e(n);r.prototype=n;var o=new r;return r.prototype=void 0,o}}();return sr=r}function Fr(){if(ur)return cr;return ur=1,cr=function(t,e){return function(r){return t(e(r))}}}function Ur(){if(lr)return hr;lr=1;var t=Fr()(Object.getPrototypeOf,Object);return hr=t}function Wr(){if(gr)return fr;gr=1;var t=Object.prototype;return fr=function(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||t)}}function Mr(){if(mr)return pr;mr=1;var t=Lr(),e=Ur(),r=Wr();return pr=function(n){return"function"!=typeof n.constructor||r(n)?{}:t(e(n))}}function Gr(){if(yr)return dr;return yr=1,dr=function(t){return null!=t&&"object"==typeof t}}function Hr(){if(vr)return br;vr=1;var t=ve(),e=Gr();return br=function(r){return e(r)&&"[object Arguments]"==t(r)}}function Dr(){if(Rr)return wr;Rr=1;var t=Hr(),e=Gr(),r=Object.prototype,n=r.hasOwnProperty,o=r.propertyIsEnumerable,i=t(function(){return arguments}())?t:function(t){return e(t)&&n.call(t,"callee")&&!o.call(t,"callee")};return wr=i}function qr(){if(_r)return xr;_r=1;var t=Array.isArray;return xr=t}function zr(){if(Pr)return kr;Pr=1;return kr=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}}function Ir(){if($r)return Cr;$r=1;var t=Re(),e=zr();return Cr=function(r){return null!=r&&e(r.length)&&!t(r)}}function Vr(){if(jr)return Nr;jr=1;var t=Ir(),e=Gr();return Nr=function(r){return e(r)&&t(r)}}var Jr,Yr,Kr,Qr,Xr,Zr,tn,en,rn,nn={exports:{}};function on(){if(Yr)return Jr;return Yr=1,Jr=function(){return!1}}function sn(){return Kr||(Kr=1,function(t,e){var r=me(),n=on(),o=e&&!e.nodeType&&e,i=o&&t&&!t.nodeType&&t,s=i&&i.exports===o?r.Buffer:void 0,a=(s?s.isBuffer:void 0)||n;t.exports=a}(nn,nn.exports)),nn.exports}function an(){if(Xr)return Qr;Xr=1;var t=ve(),e=Ur(),r=Gr(),n=Function.prototype,o=Object.prototype,i=n.toString,s=o.hasOwnProperty,a=i.call(Object);return Qr=function(n){if(!r(n)||"[object Object]"!=t(n))return!1;var o=e(n);if(null===o)return!0;var c=s.call(o,"constructor")&&o.constructor;return"function"==typeof c&&c instanceof c&&i.call(c)==a}}function cn(){if(tn)return Zr;tn=1;var t=ve(),e=zr(),r=Gr(),n={};return n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1,Zr=function(o){return r(o)&&e(o.length)&&!!n[t(o)]}}function un(){if(rn)return en;return rn=1,en=function(t){return function(e){return t(e)}}}var hn,ln,fn,gn,pn,mn,dn,yn,bn,vn,wn,Rn,xn,_n,kn,Pn,Cn,$n,Nn,jn,En,Tn,Bn,On,Sn,An,Ln,Fn,Un,Wn,Mn,Gn,Hn,Dn,qn,zn,In,Vn,Jn,Yn,Kn,Qn,Xn,Zn,to,eo,ro,no,oo,io={exports:{}};function so(){return hn||(hn=1,function(t,e){var r=pe(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n&&r.process,s=function(){try{var t=o&&o.require&&o.require("util").types;return t||i&&i.binding&&i.binding("util")}catch(t){}}();t.exports=s}(io,io.exports)),io.exports}function ao(){if(fn)return ln;fn=1;var t=cn(),e=un(),r=so(),n=r&&r.isTypedArray,o=n?e(n):t;return ln=o}function co(){if(pn)return gn;return pn=1,gn=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}}function uo(){if(dn)return mn;dn=1;var t=Ve(),e=ne(),r=Object.prototype.hasOwnProperty;return mn=function(n,o,i){var s=n[o];r.call(n,o)&&e(s,i)&&(void 0!==i||o in n)||t(n,o,i)}}function ho(){if(bn)return yn;bn=1;var t=uo(),e=Ve();return yn=function(r,n,o,i){var s=!o;o||(o={});for(var a=-1,c=n.length;++a<c;){var u=n[a],h=i?i(o[u],r[u],u,o,r):void 0;void 0===h&&(h=r[u]),s?e(o,u,h):t(o,u,h)}return o}}function lo(){if(wn)return vn;return wn=1,vn=function(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n}}function fo(){if(xn)return Rn;xn=1;var t=/^(?:0|[1-9]\d*)$/;return Rn=function(e,r){var n=typeof e;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e<r}}function go(){if(kn)return _n;kn=1;var t=lo(),e=Dr(),r=qr(),n=sn(),o=fo(),i=ao(),s=Object.prototype.hasOwnProperty;return _n=function(a,c){var u=r(a),h=!u&&e(a),l=!u&&!h&&n(a),f=!u&&!h&&!l&&i(a),g=u||h||l||f,p=g?t(a.length,String):[],m=p.length;for(var d in a)!c&&!s.call(a,d)||g&&("length"==d||l&&("offset"==d||"parent"==d)||f&&("buffer"==d||"byteLength"==d||"byteOffset"==d)||o(d,m))||p.push(d);return p}}function po(){if(Cn)return Pn;return Cn=1,Pn=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}}function mo(){if(Nn)return $n;Nn=1;var t=we(),e=Wr(),r=po(),n=Object.prototype.hasOwnProperty;return $n=function(o){if(!t(o))return r(o);var i=e(o),s=[];for(var a in o)("constructor"!=a||!i&&n.call(o,a))&&s.push(a);return s}}function yo(){if(En)return jn;En=1;var t=go(),e=mo(),r=Ir();return jn=function(n){return r(n)?t(n,!0):e(n)}}function bo(){if(Bn)return Tn;Bn=1;var t=ho(),e=yo();return Tn=function(r){return t(r,e(r))}}function vo(){if(Sn)return On;Sn=1;var t=Je(),e=Tr(),r=Sr(),n=Ar(),o=Mr(),i=Dr(),s=qr(),a=Vr(),c=sn(),u=Re(),h=we(),l=an(),f=ao(),g=co(),p=bo();return On=function(m,d,y,b,v,w,R){var x=g(m,y),_=g(d,y),k=R.get(_);if(k)t(m,y,k);else{var P=w?w(x,_,y+"",m,d,R):void 0,C=void 0===P;if(C){var $=s(_),N=!$&&c(_),j=!$&&!N&&f(_);P=_,$||N||j?s(x)?P=x:a(x)?P=n(x):N?(C=!1,P=e(_,!0)):j?(C=!1,P=r(_,!0)):P=[]:l(_)||i(_)?(P=x,i(x)?P=p(x):h(x)&&!u(x)||(P=o(_))):C=!1}C&&(R.set(_,P),v(P,_,b,w,R),R.delete(_)),t(m,y,P)}}}function wo(){if(Ln)return An;Ln=1;var t=ze(),e=Je(),r=Ke(),n=vo(),o=we(),i=yo(),s=co();return An=function a(c,u,h,l,f){c!==u&&r(u,(function(r,i){if(f||(f=new t),o(r))n(c,u,i,h,a,l,f);else{var g=l?l(s(c,i),r,i+"",c,u,f):void 0;void 0===g&&(g=r),e(c,i,g)}}),i)},An}function Ro(){if(Un)return Fn;return Un=1,Fn=function(t){return t}}function xo(){if(Mn)return Wn;return Mn=1,Wn=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}}function _o(){if(Hn)return Gn;Hn=1;var t=xo(),e=Math.max;return Gn=function(r,n,o){return n=e(void 0===n?r.length-1:n,0),function(){for(var i=arguments,s=-1,a=e(i.length-n,0),c=Array(a);++s<a;)c[s]=i[n+s];s=-1;for(var u=Array(n+1);++s<n;)u[s]=i[s];return u[n]=o(c),t(r,this,u)}},Gn}function ko(){if(qn)return Dn;return qn=1,Dn=function(t){return function(){return t}}}function Po(){if(In)return zn;In=1;var t=ko(),e=Ie();return zn=e?function(r,n){return e(r,"toString",{configurable:!0,enumerable:!1,value:t(n),writable:!0})}:Ro()}function Co(){if(Jn)return Vn;Jn=1;var t=Date.now;return Vn=function(e){var r=0,n=0;return function(){var o=t(),i=16-(o-n);if(n=o,i>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}},Vn}function $o(){if(Kn)return Yn;Kn=1;var t=Po(),e=Co()(t);return Yn=e}function No(){if(Xn)return Qn;Xn=1;var t=Ro(),e=_o(),r=$o();return Qn=function(n,o){return r(e(n,o,t),n+"")}}function jo(){if(to)return Zn;to=1;var t=ne(),e=Ir(),r=fo(),n=we();return Zn=function(o,i,s){if(!n(s))return!1;var a=typeof i;return!!("number"==a?e(s)&&r(i,s.length):"string"==a&&i in s)&&t(s[i],o)}}function Eo(){if(ro)return eo;ro=1;var t=No(),e=jo();return eo=function(r){return t((function(t,n){var o=-1,i=n.length,s=i>1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(s=r.length>3&&"function"==typeof s?(i--,s):void 0,a&&e(n[0],n[1],a)&&(s=i<3?void 0:s,i=1),t=Object(t);++o<i;){var c=n[o];c&&r(t,c,o,s)}return t}))}}function To(){if(oo)return no;oo=1;var t=wo(),e=Eo()((function(e,r,n){t(e,r,n)}));return no=e}var Bo,Oo,So,Ao,Lo,Fo,Uo,Wo,Mo,Go,Ho,Do,qo,zo,Io,Vo,Jo,Yo,Ko,Qo,Xo,Zo,ti,ei,ri=ee(To());function ni(){if(Oo)return Bo;Oo=1;var t=ve(),e=Gr();return Bo=function(r){return"symbol"==typeof r||e(r)&&"[object Symbol]"==t(r)}}function oi(){if(Ao)return So;Ao=1;var t=qr(),e=ni(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;return So=function(o,i){if(t(o))return!1;var s=typeof o;return!("number"!=s&&"symbol"!=s&&"boolean"!=s&&null!=o&&!e(o))||(n.test(o)||!r.test(o)||null!=i&&o in Object(i))}}function ii(){if(Fo)return Lo;Fo=1;var t=De();function e(r,n){if("function"!=typeof r||null!=n&&"function"!=typeof n)throw new TypeError("Expected a function");var o=function(){var t=arguments,e=n?n.apply(this,t):t[0],i=o.cache;if(i.has(e))return i.get(e);var s=r.apply(this,t);return o.cache=i.set(e,s)||i,s};return o.cache=new(e.Cache||t),o}return e.Cache=t,Lo=e}function si(){if(Wo)return Uo;Wo=1;var t=ii();return Uo=function(e){var r=t(e,(function(t){return 500===n.size&&n.clear(),t})),n=r.cache;return r}}function ai(){if(Go)return Mo;Go=1;var t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,e=/\\(\\)?/g,r=si()((function(r){var n=[];return 46===r.charCodeAt(0)&&n.push(""),r.replace(t,(function(t,r,o,i){n.push(o?i.replace(e,"$1"):r||t)})),n}));return Mo=r}function ci(){if(Do)return Ho;return Do=1,Ho=function(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r<n;)o[r]=e(t[r],r,t);return o}}function ui(){if(zo)return qo;zo=1;var t=de(),e=ci(),r=qr(),n=ni(),o=t?t.prototype:void 0,i=o?o.toString:void 0;return qo=function t(o){if("string"==typeof o)return o;if(r(o))return e(o,t)+"";if(n(o))return i?i.call(o):"";var s=o+"";return"0"==s&&1/o==-1/0?"-0":s},qo}function hi(){if(Vo)return Io;Vo=1;var t=ui();return Io=function(e){return null==e?"":t(e)}}function li(){if(Yo)return Jo;Yo=1;var t=qr(),e=oi(),r=ai(),n=hi();return Jo=function(o,i){return t(o)?o:e(o,i)?[o]:r(n(o))}}function fi(){if(Qo)return Ko;Qo=1;var t=ni();return Ko=function(e){if("string"==typeof e||t(e))return e;var r=e+"";return"0"==r&&1/e==-1/0?"-0":r}}function gi(){if(Zo)return Xo;Zo=1;var t=li(),e=fi();return Xo=function(r,n){for(var o=0,i=(n=t(n,r)).length;null!=r&&o<i;)r=r[e(n[o++])];return o&&o==i?r:void 0},Xo}function pi(){if(ei)return ti;ei=1;var t=gi();return ti=function(e,r,n){var o=null==e?void 0:t(e,r);return void 0===o?n:o},ti}var mi=ee(pi());const di="package.json",yi=[".env.local",".env"];class bi extends qt.FeScriptContext{_env;shared;constructor(t){super(t),this._env=zt.Env.searchEnv({logger:this.logger,preloadList:this.feConfig.envOrder||yi}),this.shared=Object.assign({},this.feConfig.release,this.getDefaultShreadOptions(t.shared))}getDefaultShreadOptions(t){return{rootPath:process.cwd(),sourceBranch:this._env.get("FE_RELEASE_BRANCH")||this._env.get("FE_RELEASE_SOURCE_BRANCH")||"master",releaseEnv:this._env.get("FE_RELEASE_ENV")||this._env.get("NODE_ENV")||"development",...t}}get rootPath(){return this.shared.rootPath}get sourceBranch(){return this.shared.sourceBranch}get releaseEnv(){return this.shared.releaseEnv}get env(){return this._env}get workspaces(){return this.getConfig("workspaces.workspaces")}get workspace(){return this.getConfig("workspaces.workspace")}setWorkspaces(t){this.options.workspaces={...this.options.workspaces,workspaces:t}}setConfig(t){this.options=ri(this.options,t)}getConfig(t,e){return mi(this.options,t,e)}setShared(t){this.shared=ri(this.shared,t)}getPkg(t,e){const r=this.workspace?.packageJson;if(!r)throw new Error("package.json is not found");return t?mi(r,t,e):r}getTemplateContext(){return{...this.shared,...this.workspace,publishPath:this.workspace?.path||"",env:this.releaseEnv,branch:this.sourceBranch}}async runChangesetsCli(t,e){let r="pnpm";try{await this.shell.exec("pnpm -v",{dryRun:!1})}catch{r="npm"}return await this.shell.exec(["pnpm"===r?"pnpm dlx":"npx","@changesets/cli",t,...e??[]])}}function vi(t,...e){return[t,...e]}const wi={maxWorkspace:3,multiWorkspaceSeparator:"_",workspaceVersionSeparator:"@",batchBranchName:"batch-${releaseName}-${length}-packages-${timestamp}",batchTagName:"batch-${length}-packages-${timestamp}"};class Ri{shell;logger;config;constructor(t,e,r={}){this.shell=t,this.logger=e,this.config={...wi,...r}}getReleaseBranchName(t,e,r){const n=r.branchName||"release-${tagName}";if("string"!=typeof n)throw new Error("Branch name template is not a string");return this.logger.debug("Release Branch template is:",n),this.shell.format(n,{pkgName:t,releaseName:t,tagName:e,...r})}getBatchReleaseBranchName(t,e,r,n){const o=this.config.batchBranchName;if("string"!=typeof o)throw new Error("Branch name template is not a string");return this.logger.debug("Release Batch Branch template is:",o),this.shell.format(o,{pkgName:t,releaseName:t,tagName:e,...r,length:n,timestamp:Date.now()})}getReleaseName(t){if(1===t.length)return t[0].name;const{maxWorkspace:e,multiWorkspaceSeparator:r,workspaceVersionSeparator:n}=this.config;return t.slice(0,e).map((({name:t,version:e})=>`${t}${n}${e}`)).join(r)}getReleaseTagName(t){if(1===t.length)return t[0].version;const{batchTagName:e}=this.config;return this.shell.format(e,{length:t.length,timestamp:Date.now()})}getReleaseBranchParams(t,e){const r=this.getReleaseTagName(t),n=this.getReleaseName(t);return{tagName:r,releaseBranch:t.length>1?this.getBatchReleaseBranchName(n,r,e,t.length):this.getReleaseBranchName(n,r,e)}}getPRTitle(t,e){const r=this.config.PRTitle||"Release ${env} ${pkgName} ${tagName}";return this.shell.format(r,{...e,tagName:t.tagName,pkgName:t.releaseBranch})}getPRBody(t,e,r){const n=this.config.PRBody,o=t.length>1?t.map((t=>this.shell.format("\n## ${name} ${version}\n${changelog}\n",t))).join("\n"):t[0].changelog,{workspaceVersionSeparator:i}=this.config,s=1===t.length?e.tagName:t.map((t=>`${t.name}${i}${t.version}`)).join(" ");return this.shell.format(n,{...r,tagName:s,changelog:o})}}class xi{context;_octokit=null;constructor(t){this.context=t}getGitHubUserInfo(){const{authorName:t,repoName:e}=this.context.shared;if(!t||!e)throw new Error("Author name or repo name is not set");return{owner:t,repo:e}}getToken(){const{tokenRef:t="GITHUB_TOKEN"}=this.context.getConfig("githubPR"),e=this.context.env.get(t);if(!e)throw new Error(`Token is not set. Please set ${t} environment variable.`);return e}get octokit(){if(this._octokit)return this._octokit;const{timeout:t}=this.context.getConfig("githubPR"),e={auth:this.getToken(),request:{timeout:t}};return this._octokit=new Vt.Octokit(e),this._octokit}get logger(){return this.context.logger}get shell(){return this.context.shell}get autoMergeType(){return this.context.shared.autoMergeType||"squash"}get dryRunPRNumber(){return this.context.getConfig("githubPR.dryRunPRNumber","999999")}get autoMergeReleasePR(){return this.context.shared.autoMergeReleasePR||false}async mergePR(t,e){if(!t)return void this.logger.error("Failed to create Pull Request.",t);const r=this.autoMergeType;if(this.context.dryRun){const{repoName:n,authorName:o}=this.context.shared;this.logger.info(`[DRY RUN] Would merge PR #${t} with method '${r}' in repo ${o}/${n}, branch ${e}`)}else await this.octokit.rest.pulls.merge({...this.getGitHubUserInfo(),pull_number:Number(t),merge_method:r})}async checkedPR(t,e){try{await this.octokit.rest.pulls.get({...this.getGitHubUserInfo(),pull_number:Number(t)}),await this.octokit.rest.git.deleteRef({...this.getGitHubUserInfo(),ref:`heads/${e}`}),this.logger.info(`Branch ${e} has been deleted`)}catch(r){if(404===r.status)return void this.logger.warn(`PR #${t} or branch ${e} not found`);throw this.logger.error("Failed to check PR or delete branch",r),r}}async createReleasePRLabel(){const t=this.context.shared.label;if(!(t&&t.name&&t.description&&t.color))throw new Error("Label is not valid, skipping creation");if(this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR label with:",t),t;try{const e=await this.octokit.rest.issues.createLabel({...this.getGitHubUserInfo(),name:t.name,description:t.description,color:t.color.replace("#","")});return this.logger.debug("Create PR label Success",e),t}catch(e){if(422===e.status)return this.logger.warn(`Label ${t.name} already exists, skipping!`),t;throw this.logger.error("Create PR label Failed",e),e}}async createReleasePR(t){if(this.context.getConfig("githubPR.dryRunCreatePR")||this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR with:",{...t,labels:t.labels}),this.dryRunPRNumber;try{const e=await this.octokit.rest.pulls.create({...this.getGitHubUserInfo(),...t}),r=e.data.number;if(!r)throw new Error("CreateReleasePR Failed, prNumber is empty");if(this.logger.debug("Create PR Success",[e?.url]),t.labels&&t.labels.length){const e=await this.octokit.rest.issues.addLabels({...this.getGitHubUserInfo(),issue_number:r,labels:t.labels});this.logger.debug("Add PR label Success",[e.url])}return r.toString()}catch(t){if(422===t.status&&t.message.includes("already exists")){this.logger.warn("PR already exists");const e=t.message.match(/pull request #(\d+)/);return e?e[1]:""}throw this.logger.error("Failed to create PR",t),t}}truncateBody(t){return t&&t.length>=124e3?t.substring(0,124e3)+"...":t}getOctokitReleaseOptions(t){const{releaseName:e,draft:r=!1,preRelease:n=!1,autoGenerate:o=!1,makeLatest:i=!0,releaseNotes:s,discussionCategoryName:a}=this.context.getConfig("githubPR"),c=e,u=o?"":this.truncateBody(String(s));return{name:c,make_latest:i.toString(),body:u,draft:r,prerelease:n,generate_release_notes:o,discussion_category_name:a,tag_name:"",...t,...this.getGitHubUserInfo()}}async createRelease(t){const e=this.getOctokitReleaseOptions({tag_name:t.tagName,body:t.changelog});if(e.name=this.shell.format(e.name,t),this.logger.log(`[DRY RUN] octokit repos.createRelease "${e.name}" (${e.tag_name})`,{isDryRun:this.context.dryRun}),!e.tag_name)throw new Error("TagName is undefined");if(!this.context.dryRun)try{const t=await this.octokit.repos.createRelease(e);this.logger.debug(`[DONE] octokit repos.createRelease "${e.name}" (${e.tag_name}) (${t.headers.location})`)}catch(t){this.logger.error(`[FAILED] octokit repos.createRelease "${e.name}" (${e.tag_name})`,t)}}}var _i,ki;function Pi(){if(ki)return _i;ki=1;var t=ve(),e=qr(),r=Gr();return _i=function(n){return"string"==typeof n||!e(n)&&r(n)&&"[object String]"==t(n)}}var Ci=ee(Pi());class $i{context;pluginName;props;onlyOne=!0;constructor(t,e,r={}){this.context=t,this.pluginName=e,this.props=r,this.setConfig(this.getInitialProps(r))}getInitialProps(t){const e=this.context.options[this.pluginName],r=mi(this.context.shared,this.pluginName);return e||t?ri({},r,t,e):{}}get logger(){return this.context.logger}get shell(){return this.context.shell}get options(){return this.context.getConfig(this.pluginName,{})}getEnv(t,e){return this.context.env.get(t)??e}enabled(t,e){return!0}getConfig(t,e){return t?this.context.getConfig([this.pluginName,...Array.isArray(t)?t:[t]],e):this.context.getConfig(this.pluginName,e)}setConfig(t){this.context.setConfig({[this.pluginName]:t})}onBefore(t){}onExec(t){}onSuccess(t){}onError(t){}async step({label:t,task:e}){this.logger.log(),this.logger.info(t),this.logger.log();try{const r=await e();return this.logger.info(`${t} - success`),r}catch(t){throw this.logger.error(t),t}}}class Ni extends $i{async onBefore(){const t=await this.getUserInfo();if(!t)throw new Error("Failed to get repoInfo");let e=this.context.shared.currentBranch;e||(e=await this.getCurrentBranch()),e&&await this.context.shell.exec(`git checkout ${e}`,{dryRun:!1}),this.context.setShared({repoName:t.repoName,authorName:t.authorName,currentBranch:e})}async getCurrentBranch(){return await new Promise((t=>setTimeout(t,100))),this.context.shell.exec("git rev-parse --abbrev-ref HEAD",{dryRun:!1})}async getRemoteUrl(){return(await this.context.shell.exec("git config --get remote.origin.url",{dryRun:!1})).trim()}async getUserInfo(){let t;try{t=await this.getRemoteUrl()}catch{throw new Error("Failed to get git remote url. Please ensure this is a git repository with a valid remote.")}if(!t)throw new Error("Git remote URL is empty. Please set a valid GitHub remote URL.");this.context.logger.debug("repoUrl: ",t);const e=t.match(/github\.com[:/]([^/]+)\/([^/.]+)(?:\.git)?$/);if(!e)throw new Error("Invalid GitHub repository URL format. Please ensure the remote URL is from GitHub.");const[,r,n]=e;if(!this.isValidString(r)||!this.isValidString(n))throw new Error("Failed to extract owner or repository name from GitHub URL");return{repoName:n,authorName:r}}isValidString(t){return!!t&&Ci(t)}commit(t,e=[]){return this.context.shell.exec(["git","commit","--message",JSON.stringify(t),...e])}}class ji{options;constructor(t){this.options=t}compare(t,e){return"function"==typeof this.options.compare?this.options.compare(t,e):t.startsWith(e)}toChangeLabel(t,e=this.options.changePackagesLabel){return e.replace("${name}",t)}toChangeLabels(t,e=this.options.changePackagesLabel){return t.map((t=>this.toChangeLabel(t,e)))}pick(t,e=this.options.packagesDirectories){const r=[];for(const n of e)for(const e of t)if(this.compare(e,n)){r.push(n);break}return r}}class Ei{static readJson(t){const e=Yt.readFileSync(t,"utf-8");return JSON.parse(e)}static toWorkspace(t,e){let{root:r,packageJson:n}=t;const o=t.path;if(!o)throw new Error("path is not required!");return r=r||Kt.join(e,o),n=n||Ei.readJson(Kt.join(r,di)),{name:n.name,version:n.version,path:o,root:r,packageJson:n}}}class Ti extends $i{releaseTask=null;workspacesList=[];_skip=!1;releaseLabel;constructor(t){super(t,"workspaces"),this.releaseLabel=new ji({changePackagesLabel:this.context.shared.changePackagesLabel||"change:${name}",packagesDirectories:this.context.shared.packagesDirectories||[]})}enabled(){return!this._skip&&!this.getConfig("skip")}async onBefore(){const t=this.getConfig("workspace");if(t)return this.logger.debug("Use the specified workspace",t),void this.setCurrentWorkspace(t,[]);const e=await this.getWorkspaces();if(this.getConfig("skipCheckPackage")||0===e.length)throw new Error("No changes to publish packages");const{publishPath:r}=this.context.shared;if(r){const t=e.find((t=>Jt.resolve(t.root)===Jt.resolve(r)));if(this.nextSkip(),!t)throw new Error(`No workspace found for: ${r}`);return this.logger.debug(`Workspace of ${r} find!`,Jt.join(t.root,di)),void this.setCurrentWorkspace(t,[t])}const[n,...o]=e;this.workspacesList=o,this.setCurrentWorkspace(n,e)}nextSkip(){this._skip=!0,this.logger.debug("skip next workspace")}setReleaseTask(t){this.releaseTask=t}setCurrentWorkspace(t,e){this.context.setShared({publishPath:t.path}),this.setConfig({workspace:t,workspaces:e})}getPackages(){const t=this.context.shared.packagesDirectories;return Array.isArray(t)?t:[]}async getGitWorkspaces(){const t=this.context.sourceBranch,e=await this.shell.exec(`git diff --name-only origin/${t}...HEAD`,{dryRun:!1});return"string"==typeof e?e.split("\n"):[]}async getChangedPackages(t,e){if(this.logger.debug("changeLabels",e),Array.isArray(e)&&e.length>0){const r=t.filter((t=>{const r=this.releaseLabel.toChangeLabel(t);return e.includes(r)}));return this.logger.debug("changed by labels",r),r}const r=await this.getGitWorkspaces();return this.logger.debug("changed by git",r),this.releaseLabel.pick(r,t)}async getWorkspaces(){const t=this.getPackages();this.logger.debug("packages",t);const e=await this.getChangedPackages(t,this.getConfig("changeLabels"));this.logger.debug("changedPaths",e);const r=e.map((t=>Ei.toWorkspace({path:t},this.context.rootPath)));return r}}function Bi(t,...e){return"function"==typeof t&&t.prototype&&t.prototype.constructor===t?new t(...e):t(...e)}function Oi(t){return t.startsWith(".")?Jt.parse(t).name:t}async function Si(t){let e=null;try{e=(await import(t)).default}catch{try{e=(await import(Jt.join(process.cwd(),t))).default}catch{const r=Qt.createRequire(process.cwd());e=(await import(Xt.pathToFileURL(r.resolve(t,{paths:[process.cwd()]})).href)).default}}return[Oi(t),e]}async function Ai(t,e,r=5){const n=Zt(r),o=e.map((([e,...r])=>n((()=>(async(e,...r)=>{if("string"==typeof e){const[,n]=await Si(e);return Bi(n,t,...r)}return Bi(e,t,...r)})(e,...r)))));return Promise.all(o)}const Li="- ${message}${prRef}\n",Fi="%H%n%s%n%b%n----------------------";class Ui{formatFlatCommits(t,e,r){const{types:n=[],formatTemplate:o=Li}=e,i=new Map;for(const e of t){const t=e.type||"other";i.has(t)||i.set(t,[]),i.get(t).push(e)}const s=[];for(const{type:t,section:e,hidden:a}of n){if(a)continue;const n=i.get(t);if(n?.length){s.push(`${e||t}`);for(const t of n){const e=t.prNumber?` (#${t.prNumber})`:"";if(s.push(r.format(o,{...t,prRef:e})),t.body){const e=t.body.split("\n").map((t=>` ${t}`));s.push(e.join("\n"))}}}}return s}}class Wi{shell;options;constructor(t,e){this.shell=t,this.options=e}parseCommitBody(t){const e=t.split("\n").filter(Boolean),r=[];let n=null;for(let t=0;t<e.length;t++){const o=e[t].trim();if(o.startsWith("Co-authored-by:")||"---------"===o||0===o.length)continue;const i=o.match(/^\*?\s*(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);if(i&&o.startsWith("*")){n&&r.push({...n,body:n.bodyLines?.join("\n").trim()});const[t,e,s,a]=i;n={matchRaw:t,raw:o,type:e?.toLowerCase(),scope:s?.trim(),message:a.trim(),bodyLines:[]}}else n&&o.startsWith("-")&&n.bodyLines?.push(o)}return n&&r.push({...n,body:n.bodyLines?.join("\n").trim()}),r}async getPRCommits(t){const{from:e,to:r,directory:n,format:o}={...this.options,...t};return(await this.getLog({from:e,to:r,directory:n,format:o,noMerges:!1})).split("\n----------------------\n").filter(Boolean).map((t=>{const[e,r,...n]=t.trim().split("\n"),o=n.join("\n"),i=r.match(/\(#(\d+)\)/),s=r.replace(/\s*\(#\d+\)\s*$/,"").match(/^(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);return{hash:e,raw:{title:r,body:o},title:s?{type:s[1]?.toLowerCase(),scope:s[2]?.trim(),message:s[3].trim()}:{message:r.replace(/\s*\(#\d+\)\s*$/,"").trim()},commits:this.parseCommitBody(o),prNumber:i?.[1]}}))}async hasTag(t){return this.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((()=>!0)).catch((()=>!1))}async resolveTag(t,e){if(t)try{if(await this.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((t=>!!t.trim())))return t}catch{}return"root"===e?this.shell.exec("git rev-list --max-parents=0 HEAD",{dryRun:!1}).then((t=>t.trim())):"HEAD"}async getLog(t){const{directory:e,format:r=Fi,noMerges:n=!0}=t;if(t.logCommand)return this.shell.exec(t.logCommand,{dryRun:!1});const o=await this.resolveTag(t.from,"root"),i=await this.resolveTag(t.to,"HEAD"),s=`git log --pretty=format:"${r}" ${n?"--no-merges":""} ${o===i?i:`${o}..${i}`} ${e?`-- "${e}"`:""}`;return this.shell.exec(s.trim(),{dryRun:!1})}flatCommits(t){const e=[];for(const r of t){const t={title:r.title,raw:r.raw,hash:r.hash,prNumber:r.prNumber};if(Array.isArray(r.commits)&&r.commits.length>0){const n=r.commits.map((e=>({...e,prNumber:r.prNumber,hash:r.hash,parentHash:r.hash,parentCommit:t})));e.push(...n)}else e.push({raw:r.raw.title,type:r.title.type,scope:r.title.scope,message:r.title.message,body:r.raw.body,prNumber:r.prNumber,hash:r.hash,parentHash:r.hash,parentCommit:t})}return e}formatFlatCommits(t,e){const{types:r=[],formatter:n}={...this.options,...e};return(n||new Ui).formatFlatCommits(t,{types:r},this.shell)}}const Mi=[vi(Ti),vi(class extends $i{constructor(t,e){super(t,"changelog",{increment:"patch",changesetRoot:".changeset",tagTemplate:"${name}@${version}",tagPrefix:"${name}",tagMatch:"${name}@*",...e})}get changesetRoot(){return Kt.join(this.context.rootPath,this.getConfig("changesetRoot"))}enabled(){return!this.getConfig("skip")}async onBefore(){if(!Yt.existsSync(this.changesetRoot))throw new Error(`Changeset directory ${this.changesetRoot} does not exist`);this.logger.debug(`${this.changesetRoot} exists`)}mergeWorkspaces(t){return t.map((t=>{const e=Ei.toWorkspace({path:t.path},this.context.rootPath),r={...t,version:e.version};return r.tagName=this.generateTagName(r),r}))}async onExec(){const t=await this.step({label:"Generate Changelogs",task:()=>Promise.all(this.context.workspaces.map((t=>this.generateChangelog(t))))});this.getConfig("skipChangeset")?this.logger.debug("Skip generate changeset files"):(await this.step({label:"Changeset Version",task:()=>Promise.all(t.map((t=>this.generateChangesetFile(t))))}),await this.context.runChangesetsCli("version",["--no-changelog","--update-dependencies"]));const e=this.mergeWorkspaces(t);this.logger.debug("new workspaces",e),this.context.setWorkspaces(e)}getTagPrefix(t){return this.shell.format(this.getConfig("tagPrefix"),t)}async createChangelog({lastTag:t,workspace:e}){const r=new Wi(this.context.shell,{...this.getConfig("gitChangelogOptions"),from:t,directory:e.path});return r.getPRCommits().then((t=>{const e=r.flatCommits(t);return r.formatFlatCommits(e).join("\n")}))}async generateChangelog(t){const e=await this.getTagName(t);this.logger.debug("tagName is:",e);const r=await this.createChangelog({workspace:t,lastTag:e});return{...t,lastTag:e,changelog:r}}generateTagName(t){try{const e=this.getConfig("tagTemplate");return this.shell.format(e,t)}catch(e){return console.error(`Error generating tag name for ${t.name}:`,e),`${t.name}-v0.0.0`}}async getTagName(t){try{const e=this.generateTagName(t),r=this.shell.format(this.getConfig("tagMatch"),t),n=await this.shell.exec(`git for-each-ref --sort=-creatordate --format "%(refname:short)|%(creatordate:iso8601)" "refs/tags/${r}"`,{dryRun:!1});if(!n)return e;const o=n.split("\n").filter(Boolean);if(0===o.length)return e;return o[0].split("|")[0]}catch(e){console.error(`Error getting tag for ${t.name}:`,e);return this.generateTagName(t)}}getIncrement(){const t=this.context.getConfig("workspaces.changeLabels");if(Array.isArray(t)&&t.length>0){if(t.includes("increment:major"))return"major";if(t.includes("increment:minor"))return"minor"}return this.getConfig("increment","patch")}async generateChangesetFile(t){const{name:e,version:r}=t,n=`${e}-${r}`.replace(/[\/\\]/g,"_"),o=Kt.join(this.changesetRoot,`${n}.md`),i=this.getIncrement();this.logger.debug("increment is:",[i]);const s=this.shell.format("---\n'${name}': '${increment}'\n---\n\n${changelog}",{...t,increment:i});if(this.context.dryRun)return this.logger.info(`Changeset [${o}] will be created, content is:`),void this.logger.log(s);Yt.existsSync(o)?this.logger.info(`Changeset ${n} already exists`):Yt.writeFileSync(o,s,"utf-8")}},{}),vi(class extends Ni{context;releaseParams;githubManager;constructor(t,e){super(t,"githubPR",{releaseName:"Release ${name} v${version}",...e}),this.context=t,this.githubManager=new xi(this.context),this.releaseParams=new Ri(t.shell,t.logger,{PRTitle:this.getConfig("PRTitle",this.context.shared.PRTitle),PRBody:this.getConfig("PRBody",this.context.shared.PRBody),...this.props})}enabled(t){return!this.getConfig("skip")&&("onExec"===t?!this.isPublish:"onSuccess"!==t||this.isPublish)}get isPublish(){return!this.getConfig("releasePR")}async isGithubRepository(){try{return(await this.getRemoteUrl()).includes("github.com")}catch{return!1}}async onBefore(){this.logger.debug("GithubPR onBefore");if(!await this.isGithubRepository())throw new Error("Current repository is not a GitHub repository. GitHub PR workflow is only available for GitHub repositories.");if(await super.onBefore(),this.isPublish){const t=this.getEnv("NPM_TOKEN");if(!t)throw new Error("NPM_TOKEN is not set");await this.shell.exec(`npm config set //registry.npmjs.org/:_authToken=${t}`)}}async onExec(){const t=this.context.workspaces;await this.step({label:"Release Commit",task:()=>this.relesaeCommit(t)});const e=await this.step({label:"Create Release Branch",task:()=>this.createReleaseBranch(t)});await this.releasePullRequest(t,e)}async onSuccess(){const t=this.context.workspaces;this.getConfig("dryRunCreatePR")||(await this.context.runChangesetsCli("publish"),await this.shell.exec("git push origin --tags")),await this.step({label:"Release Github",task:()=>Promise.all(t.map((t=>(this.logger.debug(t),this.githubManager.createRelease(t)))))})}async relesaeCommit(t){const e=this.getConfig("commitArgs",[]);if(1===t.length)return await this.shell.exec("git add ."),void await this.commitWorkspace(t[0],e);await this.shell.exec("git add .");const r=`chore(tag): ${t.map((t=>`${t.name} v${t.version}`)).join(",")}`;await this.commit(r,e)}async releasePullRequest(t,e){const r=await this.step({label:"Create Release PR",task:()=>this.createReleasePR(t,e)});if(this.githubManager.autoMergeReleasePR){const{releaseBranch:t}=e;return await this.step({label:`Merge Release PR(${r})`,task:()=>this.githubManager.mergePR(r,t)}),void await this.step({label:`Checked Release PR(${r})`,task:()=>this.githubManager.checkedPR(r,t)})}this.logger.info(`Please manually merge PR(#${r}) and complete the publishing process afterwards`)}async commitWorkspace(t,e=[]){const r=this.shell.format(this.getConfig("commitMessage","chore(tag): ${name} v${version}"),t);return await this.commit(r,e)}async createReleaseBranch(t){const e=this.releaseParams.getReleaseBranchParams(t,this.context.getTemplateContext()),{tagName:r,releaseBranch:n}=e;if("string"!=typeof r)throw new Error("Tag name is not a string");const{sourceBranch:o,currentBranch:i}=this.context.shared;this.context.logger.debug("PR TagName is:",r),this.context.logger.debug("PR CurrentBranch is:",i),this.context.logger.debug("PR SourceBranch is:",o),this.context.logger.debug("PR ReleaseBranch is:",n);try{await this.context.shell.exec(`git fetch origin ${o} ${i}`),await this.context.shell.exec(`git checkout -b ${n} ${i}`),await this.context.shell.exec(`git push origin ${n}`)}catch(t){throw t.message.includes("remote: Permission to ")&&this.context.logger.warn('Token maybe not allow Workflow permissions, can you try to open "Workflow permissions" -> "Read and write permissions" for this token?'),t}return{tagName:r,releaseBranch:n}}async createReleasePR(t,e){let r=[(await this.githubManager.createReleasePRLabel()).name];if(this.getConfig("pushChangeLabels")){const t=this.context.getConfig("workspaces.changeLabels");Array.isArray(t)&&t.length>0&&r.push(...t)}r=Array.from(new Set(r)),this.logger.debug("Release PR labels:",r);const n=this.context.getTemplateContext(),o=this.releaseParams.getPRTitle(e,n),i=this.releaseParams.getPRBody(t,e,n);return this.githubManager.createReleasePR({title:o,body:i,base:this.context.sourceBranch,head:e.releaseBranch,labels:r})}},{})];var Gi,Hi,Di,qi;function zi(){if(Hi)return Gi;Hi=1;var t=uo(),e=li(),r=fo(),n=we(),o=fi();return Gi=function(i,s,a,c){if(!n(i))return i;for(var u=-1,h=(s=e(s,i)).length,l=h-1,f=i;null!=f&&++u<h;){var g=o(s[u]),p=a;if("__proto__"===g||"constructor"===g||"prototype"===g)return i;if(u!=l){var m=f[g];void 0===(p=c?c(m,g,f):void 0)&&(p=n(m)?m:r(s[u+1])?[]:{})}t(f,g,p),f=f[g]}return i},Gi}function Ii(){if(qi)return Di;qi=1;var t=zi();return Di=function(e,r,n){return null==e?e:t(e,r,n)},Di}var Vi=ee(Ii());exports.Plugin=$i,exports.ReleaseContext=bi,exports.ReleaseLabel=ji,exports.ReleaseTask=class{executor;defaultTuples;context;constructor(t={},e=new It.AsyncExecutor,r=Mi){this.executor=e,this.defaultTuples=r,this.context=new bi(t)}getContext(){return this.context}async usePlugins(t){t=t||this.context.shared.plugins||[];const e=await Ai(this.context,[...this.defaultTuples,...t]);return e.forEach((t=>{t instanceof Ti&&t.setReleaseTask(this),this.executor.use(t)})),e}async run(){return this.executor.exec(this.context,(t=>Promise.resolve(t)))}async exec(t){if("false"===this.context.env.get("FE_RELEASE"))throw new Error("Skip Release");return await this.usePlugins(t),this.run()}},exports.factory=Bi,exports.load=Si,exports.loaderPluginsFromPluginTuples=Ai,exports.reduceOptions=function(t,e){return Object.entries(t).reduce(((t,[r,n])=>(r.includes(".")?Vi(t,r,n):Vi(t,e?`${e}.${r}`:r,n),t)),{})},exports.tuple=vi;
1
+ "use strict";var t,e,r,n,o,i,s,a,c,u,h,l,g,f,p,m,d,y,b,v,w,R,x,k,_,P,C,$,N,j,E,T,B,O,S,A,L,U,F,W,M,G,H,I,D,q,z,V,J,Y,K,Q,X,Z,tt,et,rt,nt,ot,it,st,at,ct,ut,ht,lt,gt,ft,pt,mt,dt,yt,bt,vt,wt,Rt,xt,kt,_t,Pt,Ct,$t,Nt,jt,Et,Tt,Bt,Ot,St,At,Lt,Ut,Ft,Wt,Mt,Gt,Ht,It,Dt=require("@qlover/scripts-context"),qt=require("@qlover/env-loader"),zt=require("@qlover/fe-corekit"),Vt=require("@octokit/rest"),Jt=require("node:path"),Yt=require("fs"),Kt=require("path"),Qt=require("node:module"),Xt=require("node:url"),Zt=require("p-limit"),te="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function ee(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function re(){if(e)return t;return e=1,t=function(){this.__data__=[],this.size=0}}function ne(){if(n)return r;return n=1,r=function(t,e){return t===e||t!=t&&e!=e}}function oe(){if(i)return o;i=1;var t=ne();return o=function(e,r){for(var n=e.length;n--;)if(t(e[n][0],r))return n;return-1}}function ie(){if(a)return s;a=1;var t=oe(),e=Array.prototype.splice;return s=function(r){var n=this.__data__,o=t(n,r);return!(o<0)&&(o==n.length-1?n.pop():e.call(n,o,1),--this.size,!0)}}function se(){if(u)return c;u=1;var t=oe();return c=function(e){var r=this.__data__,n=t(r,e);return n<0?void 0:r[n][1]}}function ae(){if(l)return h;l=1;var t=oe();return h=function(e){return t(this.__data__,e)>-1}}function ce(){if(f)return g;f=1;var t=oe();return g=function(e,r){var n=this.__data__,o=t(n,e);return o<0?(++this.size,n.push([e,r])):n[o][1]=r,this}}function ue(){if(m)return p;m=1;var t=re(),e=ie(),r=se(),n=ae(),o=ce();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,p=i}function he(){if(y)return d;y=1;var t=ue();return d=function(){this.__data__=new t,this.size=0}}function le(){if(v)return b;return v=1,b=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}}function ge(){if(R)return w;return R=1,w=function(t){return this.__data__.get(t)}}function fe(){if(k)return x;return k=1,x=function(t){return this.__data__.has(t)}}function pe(){if(P)return _;P=1;var t="object"==typeof te&&te&&te.Object===Object&&te;return _=t}function me(){if($)return C;$=1;var t=pe(),e="object"==typeof self&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return C=r}function de(){if(j)return N;j=1;var t=me().Symbol;return N=t}function ye(){if(T)return E;T=1;var t=de(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,o=t?t.toStringTag:void 0;return E=function(t){var e=r.call(t,o),i=t[o];try{t[o]=void 0;var s=!0}catch(t){}var a=n.call(t);return s&&(e?t[o]=i:delete t[o]),a}}function be(){if(O)return B;O=1;var t=Object.prototype.toString;return B=function(e){return t.call(e)}}function ve(){if(A)return S;A=1;var t=de(),e=ye(),r=be(),n=t?t.toStringTag:void 0;return S=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":n&&n in Object(t)?e(t):r(t)}}function we(){if(U)return L;return U=1,L=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}}function Re(){if(W)return F;W=1;var t=ve(),e=we();return F=function(r){if(!e(r))return!1;var n=t(r);return"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n}}function xe(){if(G)return M;G=1;var t=me()["__core-js_shared__"];return M=t}function ke(){if(I)return H;I=1;var t,e=xe(),r=(t=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||""))?"Symbol(src)_1."+t:"";return H=function(t){return!!r&&r in t}}function _e(){if(q)return D;q=1;var t=Function.prototype.toString;return D=function(e){if(null!=e){try{return t.call(e)}catch(t){}try{return e+""}catch(t){}}return""}}function Pe(){if(V)return z;V=1;var t=Re(),e=ke(),r=we(),n=_e(),o=/^\[object .+?Constructor\]$/,i=Function.prototype,s=Object.prototype,a=i.toString,c=s.hasOwnProperty,u=RegExp("^"+a.call(c).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return z=function(i){return!(!r(i)||e(i))&&(t(i)?u:o).test(n(i))}}function Ce(){if(Y)return J;return Y=1,J=function(t,e){return null==t?void 0:t[e]}}function $e(){if(Q)return K;Q=1;var t=Pe(),e=Ce();return K=function(r,n){var o=e(r,n);return t(o)?o:void 0}}function Ne(){if(Z)return X;Z=1;var t=$e()(me(),"Map");return X=t}function je(){if(et)return tt;et=1;var t=$e()(Object,"create");return tt=t}function Ee(){if(nt)return rt;nt=1;var t=je();return rt=function(){this.__data__=t?t(null):{},this.size=0}}function Te(){if(it)return ot;return it=1,ot=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}}function Be(){if(at)return st;at=1;var t=je(),e=Object.prototype.hasOwnProperty;return st=function(r){var n=this.__data__;if(t){var o=n[r];return"__lodash_hash_undefined__"===o?void 0:o}return e.call(n,r)?n[r]:void 0}}function Oe(){if(ut)return ct;ut=1;var t=je(),e=Object.prototype.hasOwnProperty;return ct=function(r){var n=this.__data__;return t?void 0!==n[r]:e.call(n,r)}}function Se(){if(lt)return ht;lt=1;var t=je();return ht=function(e,r){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=t&&void 0===r?"__lodash_hash_undefined__":r,this}}function Ae(){if(ft)return gt;ft=1;var t=Ee(),e=Te(),r=Be(),n=Oe(),o=Se();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,gt=i}function Le(){if(mt)return pt;mt=1;var t=Ae(),e=ue(),r=Ne();return pt=function(){this.size=0,this.__data__={hash:new t,map:new(r||e),string:new t}}}function Ue(){if(yt)return dt;return yt=1,dt=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}}function Fe(){if(vt)return bt;vt=1;var t=Ue();return bt=function(e,r){var n=e.__data__;return t(r)?n["string"==typeof r?"string":"hash"]:n.map}}function We(){if(Rt)return wt;Rt=1;var t=Fe();return wt=function(e){var r=t(this,e).delete(e);return this.size-=r?1:0,r}}function Me(){if(kt)return xt;kt=1;var t=Fe();return xt=function(e){return t(this,e).get(e)}}function Ge(){if(Pt)return _t;Pt=1;var t=Fe();return _t=function(e){return t(this,e).has(e)}}function He(){if($t)return Ct;$t=1;var t=Fe();return Ct=function(e,r){var n=t(this,e),o=n.size;return n.set(e,r),this.size+=n.size==o?0:1,this}}function Ie(){if(jt)return Nt;jt=1;var t=Le(),e=We(),r=Me(),n=Ge(),o=He();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,Nt=i}function De(){if(Tt)return Et;Tt=1;var t=ue(),e=Ne(),r=Ie();return Et=function(n,o){var i=this.__data__;if(i instanceof t){var s=i.__data__;if(!e||s.length<199)return s.push([n,o]),this.size=++i.size,this;i=this.__data__=new r(s)}return i.set(n,o),this.size=i.size,this}}function qe(){if(Ot)return Bt;Ot=1;var t=ue(),e=he(),r=le(),n=ge(),o=fe(),i=De();function s(e){var r=this.__data__=new t(e);this.size=r.size}return s.prototype.clear=e,s.prototype.delete=r,s.prototype.get=n,s.prototype.has=o,s.prototype.set=i,Bt=s}function ze(){if(At)return St;At=1;var t=$e(),e=function(){try{var e=t(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();return St=e}function Ve(){if(Ut)return Lt;Ut=1;var t=ze();return Lt=function(e,r,n){"__proto__"==r&&t?t(e,r,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[r]=n}}function Je(){if(Wt)return Ft;Wt=1;var t=Ve(),e=ne();return Ft=function(r,n,o){(void 0!==o&&!e(r[n],o)||void 0===o&&!(n in r))&&t(r,n,o)}}function Ye(){if(Gt)return Mt;return Gt=1,Mt=function(t){return function(e,r,n){for(var o=-1,i=Object(e),s=n(e),a=s.length;a--;){var c=s[t?a:++o];if(!1===r(i[c],c,i))break}return e}}}function Ke(){if(It)return Ht;It=1;var t=Ye()();return Ht=t}var Qe,Xe,Ze,tr,er,rr,nr,or,ir,sr,ar,cr,ur,hr,lr,gr,fr,pr,mr,dr,yr,br,vr,wr,Rr,xr,kr,_r,Pr,Cr,$r,Nr,jr,Er={exports:{}};function Tr(){return Qe||(Qe=1,function(t,e){var r=me(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n?r.Buffer:void 0,s=i?i.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var r=t.length,n=s?s(r):new t.constructor(r);return t.copy(n),n}}(Er,Er.exports)),Er.exports}function Br(){if(Ze)return Xe;Ze=1;var t=me().Uint8Array;return Xe=t}function Or(){if(er)return tr;er=1;var t=Br();return tr=function(e){var r=new e.constructor(e.byteLength);return new t(r).set(new t(e)),r}}function Sr(){if(nr)return rr;nr=1;var t=Or();return rr=function(e,r){var n=r?t(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}}function Ar(){if(ir)return or;return ir=1,or=function(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r<n;)e[r]=t[r];return e}}function Lr(){if(ar)return sr;ar=1;var t=we(),e=Object.create,r=function(){function r(){}return function(n){if(!t(n))return{};if(e)return e(n);r.prototype=n;var o=new r;return r.prototype=void 0,o}}();return sr=r}function Ur(){if(ur)return cr;return ur=1,cr=function(t,e){return function(r){return t(e(r))}}}function Fr(){if(lr)return hr;lr=1;var t=Ur()(Object.getPrototypeOf,Object);return hr=t}function Wr(){if(fr)return gr;fr=1;var t=Object.prototype;return gr=function(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||t)}}function Mr(){if(mr)return pr;mr=1;var t=Lr(),e=Fr(),r=Wr();return pr=function(n){return"function"!=typeof n.constructor||r(n)?{}:t(e(n))}}function Gr(){if(yr)return dr;return yr=1,dr=function(t){return null!=t&&"object"==typeof t}}function Hr(){if(vr)return br;vr=1;var t=ve(),e=Gr();return br=function(r){return e(r)&&"[object Arguments]"==t(r)}}function Ir(){if(Rr)return wr;Rr=1;var t=Hr(),e=Gr(),r=Object.prototype,n=r.hasOwnProperty,o=r.propertyIsEnumerable,i=t(function(){return arguments}())?t:function(t){return e(t)&&n.call(t,"callee")&&!o.call(t,"callee")};return wr=i}function Dr(){if(kr)return xr;kr=1;var t=Array.isArray;return xr=t}function qr(){if(Pr)return _r;Pr=1;return _r=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}}function zr(){if($r)return Cr;$r=1;var t=Re(),e=qr();return Cr=function(r){return null!=r&&e(r.length)&&!t(r)}}function Vr(){if(jr)return Nr;jr=1;var t=zr(),e=Gr();return Nr=function(r){return e(r)&&t(r)}}var Jr,Yr,Kr,Qr,Xr,Zr,tn,en,rn,nn={exports:{}};function on(){if(Yr)return Jr;return Yr=1,Jr=function(){return!1}}function sn(){return Kr||(Kr=1,function(t,e){var r=me(),n=on(),o=e&&!e.nodeType&&e,i=o&&t&&!t.nodeType&&t,s=i&&i.exports===o?r.Buffer:void 0,a=(s?s.isBuffer:void 0)||n;t.exports=a}(nn,nn.exports)),nn.exports}function an(){if(Xr)return Qr;Xr=1;var t=ve(),e=Fr(),r=Gr(),n=Function.prototype,o=Object.prototype,i=n.toString,s=o.hasOwnProperty,a=i.call(Object);return Qr=function(n){if(!r(n)||"[object Object]"!=t(n))return!1;var o=e(n);if(null===o)return!0;var c=s.call(o,"constructor")&&o.constructor;return"function"==typeof c&&c instanceof c&&i.call(c)==a}}function cn(){if(tn)return Zr;tn=1;var t=ve(),e=qr(),r=Gr(),n={};return n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1,Zr=function(o){return r(o)&&e(o.length)&&!!n[t(o)]}}function un(){if(rn)return en;return rn=1,en=function(t){return function(e){return t(e)}}}var hn,ln,gn,fn,pn,mn,dn,yn,bn,vn,wn,Rn,xn,kn,_n,Pn,Cn,$n,Nn,jn,En,Tn,Bn,On,Sn,An,Ln,Un,Fn,Wn,Mn,Gn,Hn,In,Dn,qn,zn,Vn,Jn,Yn,Kn,Qn,Xn,Zn,to,eo,ro,no,oo,io={exports:{}};function so(){return hn||(hn=1,function(t,e){var r=pe(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n&&r.process,s=function(){try{var t=o&&o.require&&o.require("util").types;return t||i&&i.binding&&i.binding("util")}catch(t){}}();t.exports=s}(io,io.exports)),io.exports}function ao(){if(gn)return ln;gn=1;var t=cn(),e=un(),r=so(),n=r&&r.isTypedArray,o=n?e(n):t;return ln=o}function co(){if(pn)return fn;return pn=1,fn=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}}function uo(){if(dn)return mn;dn=1;var t=Ve(),e=ne(),r=Object.prototype.hasOwnProperty;return mn=function(n,o,i){var s=n[o];r.call(n,o)&&e(s,i)&&(void 0!==i||o in n)||t(n,o,i)}}function ho(){if(bn)return yn;bn=1;var t=uo(),e=Ve();return yn=function(r,n,o,i){var s=!o;o||(o={});for(var a=-1,c=n.length;++a<c;){var u=n[a],h=i?i(o[u],r[u],u,o,r):void 0;void 0===h&&(h=r[u]),s?e(o,u,h):t(o,u,h)}return o}}function lo(){if(wn)return vn;return wn=1,vn=function(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n}}function go(){if(xn)return Rn;xn=1;var t=/^(?:0|[1-9]\d*)$/;return Rn=function(e,r){var n=typeof e;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e<r}}function fo(){if(_n)return kn;_n=1;var t=lo(),e=Ir(),r=Dr(),n=sn(),o=go(),i=ao(),s=Object.prototype.hasOwnProperty;return kn=function(a,c){var u=r(a),h=!u&&e(a),l=!u&&!h&&n(a),g=!u&&!h&&!l&&i(a),f=u||h||l||g,p=f?t(a.length,String):[],m=p.length;for(var d in a)!c&&!s.call(a,d)||f&&("length"==d||l&&("offset"==d||"parent"==d)||g&&("buffer"==d||"byteLength"==d||"byteOffset"==d)||o(d,m))||p.push(d);return p}}function po(){if(Cn)return Pn;return Cn=1,Pn=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}}function mo(){if(Nn)return $n;Nn=1;var t=we(),e=Wr(),r=po(),n=Object.prototype.hasOwnProperty;return $n=function(o){if(!t(o))return r(o);var i=e(o),s=[];for(var a in o)("constructor"!=a||!i&&n.call(o,a))&&s.push(a);return s}}function yo(){if(En)return jn;En=1;var t=fo(),e=mo(),r=zr();return jn=function(n){return r(n)?t(n,!0):e(n)}}function bo(){if(Bn)return Tn;Bn=1;var t=ho(),e=yo();return Tn=function(r){return t(r,e(r))}}function vo(){if(Sn)return On;Sn=1;var t=Je(),e=Tr(),r=Sr(),n=Ar(),o=Mr(),i=Ir(),s=Dr(),a=Vr(),c=sn(),u=Re(),h=we(),l=an(),g=ao(),f=co(),p=bo();return On=function(m,d,y,b,v,w,R){var x=f(m,y),k=f(d,y),_=R.get(k);if(_)t(m,y,_);else{var P=w?w(x,k,y+"",m,d,R):void 0,C=void 0===P;if(C){var $=s(k),N=!$&&c(k),j=!$&&!N&&g(k);P=k,$||N||j?s(x)?P=x:a(x)?P=n(x):N?(C=!1,P=e(k,!0)):j?(C=!1,P=r(k,!0)):P=[]:l(k)||i(k)?(P=x,i(x)?P=p(x):h(x)&&!u(x)||(P=o(k))):C=!1}C&&(R.set(k,P),v(P,k,b,w,R),R.delete(k)),t(m,y,P)}}}function wo(){if(Ln)return An;Ln=1;var t=qe(),e=Je(),r=Ke(),n=vo(),o=we(),i=yo(),s=co();return An=function a(c,u,h,l,g){c!==u&&r(u,(function(r,i){if(g||(g=new t),o(r))n(c,u,i,h,a,l,g);else{var f=l?l(s(c,i),r,i+"",c,u,g):void 0;void 0===f&&(f=r),e(c,i,f)}}),i)},An}function Ro(){if(Fn)return Un;return Fn=1,Un=function(t){return t}}function xo(){if(Mn)return Wn;return Mn=1,Wn=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}}function ko(){if(Hn)return Gn;Hn=1;var t=xo(),e=Math.max;return Gn=function(r,n,o){return n=e(void 0===n?r.length-1:n,0),function(){for(var i=arguments,s=-1,a=e(i.length-n,0),c=Array(a);++s<a;)c[s]=i[n+s];s=-1;for(var u=Array(n+1);++s<n;)u[s]=i[s];return u[n]=o(c),t(r,this,u)}},Gn}function _o(){if(Dn)return In;return Dn=1,In=function(t){return function(){return t}}}function Po(){if(zn)return qn;zn=1;var t=_o(),e=ze();return qn=e?function(r,n){return e(r,"toString",{configurable:!0,enumerable:!1,value:t(n),writable:!0})}:Ro()}function Co(){if(Jn)return Vn;Jn=1;var t=Date.now;return Vn=function(e){var r=0,n=0;return function(){var o=t(),i=16-(o-n);if(n=o,i>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}},Vn}function $o(){if(Kn)return Yn;Kn=1;var t=Po(),e=Co()(t);return Yn=e}function No(){if(Xn)return Qn;Xn=1;var t=Ro(),e=ko(),r=$o();return Qn=function(n,o){return r(e(n,o,t),n+"")}}function jo(){if(to)return Zn;to=1;var t=ne(),e=zr(),r=go(),n=we();return Zn=function(o,i,s){if(!n(s))return!1;var a=typeof i;return!!("number"==a?e(s)&&r(i,s.length):"string"==a&&i in s)&&t(s[i],o)}}function Eo(){if(ro)return eo;ro=1;var t=No(),e=jo();return eo=function(r){return t((function(t,n){var o=-1,i=n.length,s=i>1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(s=r.length>3&&"function"==typeof s?(i--,s):void 0,a&&e(n[0],n[1],a)&&(s=i<3?void 0:s,i=1),t=Object(t);++o<i;){var c=n[o];c&&r(t,c,o,s)}return t}))}}function To(){if(oo)return no;oo=1;var t=wo(),e=Eo()((function(e,r,n){t(e,r,n)}));return no=e}var Bo,Oo,So,Ao,Lo,Uo,Fo,Wo,Mo,Go,Ho,Io,Do,qo,zo,Vo,Jo,Yo,Ko,Qo,Xo,Zo,ti,ei,ri=ee(To());function ni(){if(Oo)return Bo;Oo=1;var t=ve(),e=Gr();return Bo=function(r){return"symbol"==typeof r||e(r)&&"[object Symbol]"==t(r)}}function oi(){if(Ao)return So;Ao=1;var t=Dr(),e=ni(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;return So=function(o,i){if(t(o))return!1;var s=typeof o;return!("number"!=s&&"symbol"!=s&&"boolean"!=s&&null!=o&&!e(o))||(n.test(o)||!r.test(o)||null!=i&&o in Object(i))}}function ii(){if(Uo)return Lo;Uo=1;var t=Ie();function e(r,n){if("function"!=typeof r||null!=n&&"function"!=typeof n)throw new TypeError("Expected a function");var o=function(){var t=arguments,e=n?n.apply(this,t):t[0],i=o.cache;if(i.has(e))return i.get(e);var s=r.apply(this,t);return o.cache=i.set(e,s)||i,s};return o.cache=new(e.Cache||t),o}return e.Cache=t,Lo=e}function si(){if(Wo)return Fo;Wo=1;var t=ii();return Fo=function(e){var r=t(e,(function(t){return 500===n.size&&n.clear(),t})),n=r.cache;return r}}function ai(){if(Go)return Mo;Go=1;var t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,e=/\\(\\)?/g,r=si()((function(r){var n=[];return 46===r.charCodeAt(0)&&n.push(""),r.replace(t,(function(t,r,o,i){n.push(o?i.replace(e,"$1"):r||t)})),n}));return Mo=r}function ci(){if(Io)return Ho;return Io=1,Ho=function(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r<n;)o[r]=e(t[r],r,t);return o}}function ui(){if(qo)return Do;qo=1;var t=de(),e=ci(),r=Dr(),n=ni(),o=t?t.prototype:void 0,i=o?o.toString:void 0;return Do=function t(o){if("string"==typeof o)return o;if(r(o))return e(o,t)+"";if(n(o))return i?i.call(o):"";var s=o+"";return"0"==s&&1/o==-1/0?"-0":s},Do}function hi(){if(Vo)return zo;Vo=1;var t=ui();return zo=function(e){return null==e?"":t(e)}}function li(){if(Yo)return Jo;Yo=1;var t=Dr(),e=oi(),r=ai(),n=hi();return Jo=function(o,i){return t(o)?o:e(o,i)?[o]:r(n(o))}}function gi(){if(Qo)return Ko;Qo=1;var t=ni();return Ko=function(e){if("string"==typeof e||t(e))return e;var r=e+"";return"0"==r&&1/e==-1/0?"-0":r}}function fi(){if(Zo)return Xo;Zo=1;var t=li(),e=gi();return Xo=function(r,n){for(var o=0,i=(n=t(n,r)).length;null!=r&&o<i;)r=r[e(n[o++])];return o&&o==i?r:void 0},Xo}function pi(){if(ei)return ti;ei=1;var t=fi();return ti=function(e,r,n){var o=null==e?void 0:t(e,r);return void 0===o?n:o},ti}var mi=ee(pi());const di="package.json",yi=[".env.local",".env"];class bi extends Dt.FeScriptContext{_env;shared;constructor(t){super(t),this._env=qt.Env.searchEnv({logger:this.logger,preloadList:this.feConfig.envOrder||yi}),this.shared=Object.assign({},this.feConfig.release,this.getDefaultShreadOptions(t.shared))}getDefaultShreadOptions(t){return{rootPath:process.cwd(),sourceBranch:this._env.get("FE_RELEASE_BRANCH")||this._env.get("FE_RELEASE_SOURCE_BRANCH")||"master",releaseEnv:this._env.get("FE_RELEASE_ENV")||this._env.get("NODE_ENV")||"development",...t}}get rootPath(){return this.shared.rootPath}get sourceBranch(){return this.shared.sourceBranch}get releaseEnv(){return this.shared.releaseEnv}get env(){return this._env}get workspaces(){return this.getConfig("workspaces.workspaces")}get workspace(){return this.getConfig("workspaces.workspace")}setWorkspaces(t){this.options.workspaces={...this.options.workspaces,workspaces:t}}setConfig(t){this.options=ri(this.options,t)}getConfig(t,e){return mi(this.options,t,e)}setShared(t){this.shared=ri(this.shared,t)}getPkg(t,e){const r=this.workspace?.packageJson;if(!r)throw new Error("package.json is not found");return t?mi(r,t,e):r}getTemplateContext(){return{...this.shared,...this.workspace,publishPath:this.workspace?.path||"",env:this.releaseEnv,branch:this.sourceBranch}}async runChangesetsCli(t,e){let r="pnpm";try{await this.shell.exec("pnpm -v",{dryRun:!1})}catch{r="npx"}return await this.shell.exec([r,"changeset",t,...e??[]])}}function vi(t,...e){return[t,...e]}const wi={maxWorkspace:3,multiWorkspaceSeparator:"_",workspaceVersionSeparator:"@",batchBranchName:"batch-${releaseName}-${length}-packages-${timestamp}",batchTagName:"batch-${length}-packages-${timestamp}"};class Ri{shell;logger;config;constructor(t,e,r={}){this.shell=t,this.logger=e,this.config={...wi,...r}}getReleaseBranchName(t,e,r){const n=r.branchName||"release-${tagName}";if("string"!=typeof n)throw new Error("Branch name template is not a string");return this.logger.debug("Release Branch template is:",n),this.shell.format(n,{pkgName:t,releaseName:t,tagName:e,...r})}getBatchReleaseBranchName(t,e,r,n){const o=this.config.batchBranchName;if("string"!=typeof o)throw new Error("Branch name template is not a string");return this.logger.debug("Release Batch Branch template is:",o),this.shell.format(o,{pkgName:t,releaseName:t,tagName:e,...r,length:n,timestamp:Date.now()})}getReleaseName(t){if(1===t.length)return t[0].name;const{maxWorkspace:e,multiWorkspaceSeparator:r,workspaceVersionSeparator:n}=this.config;return t.slice(0,e).map((({name:t,version:e})=>`${t}${n}${e}`)).join(r)}getReleaseTagName(t){if(1===t.length)return t[0].version;const{batchTagName:e}=this.config;return this.shell.format(e,{length:t.length,timestamp:Date.now()})}getReleaseBranchParams(t,e){const r=this.getReleaseTagName(t),n=this.getReleaseName(t);return{tagName:r,releaseBranch:t.length>1?this.getBatchReleaseBranchName(n,r,e,t.length):this.getReleaseBranchName(n,r,e)}}getPRTitle(t,e){const r=this.config.PRTitle||"Release ${env} ${pkgName} ${tagName}";return this.shell.format(r,{...e,tagName:t.tagName,pkgName:t.releaseBranch})}getPRBody(t,e,r){const n=this.config.PRBody,o=t.length>1?t.map((t=>this.shell.format("\n## ${name} ${version}\n${changelog}\n",t))).join("\n"):t[0].changelog,{workspaceVersionSeparator:i}=this.config,s=1===t.length?e.tagName:t.map((t=>`${t.name}${i}${t.version}`)).join(" ");return this.shell.format(n,{...r,tagName:s,changelog:o})}}class xi{context;_octokit=null;constructor(t){this.context=t}getGitHubUserInfo(){const{authorName:t,repoName:e}=this.context.shared;if(!t||!e)throw new Error("Author name or repo name is not set");return{owner:t,repo:e}}getToken(){const{tokenRef:t="GITHUB_TOKEN"}=this.context.getConfig("githubPR"),e=this.context.env.get(t);if(!e)throw new Error(`Token is not set. Please set ${t} environment variable.`);return e}get octokit(){if(this._octokit)return this._octokit;const{timeout:t}=this.context.getConfig("githubPR"),e={auth:this.getToken(),request:{timeout:t}};return this._octokit=new Vt.Octokit(e),this._octokit}get logger(){return this.context.logger}get shell(){return this.context.shell}get autoMergeType(){return this.context.shared.autoMergeType||"squash"}get dryRunPRNumber(){return this.context.getConfig("githubPR.dryRunPRNumber","999999")}get autoMergeReleasePR(){return this.context.shared.autoMergeReleasePR||false}async mergePR(t,e){if(!t)return void this.logger.error("Failed to create Pull Request.",t);const r=this.autoMergeType;if(this.context.dryRun){const{repoName:n,authorName:o}=this.context.shared;this.logger.info(`[DRY RUN] Would merge PR #${t} with method '${r}' in repo ${o}/${n}, branch ${e}`)}else await this.octokit.rest.pulls.merge({...this.getGitHubUserInfo(),pull_number:Number(t),merge_method:r})}async checkedPR(t,e){try{await this.octokit.rest.pulls.get({...this.getGitHubUserInfo(),pull_number:Number(t)}),await this.octokit.rest.git.deleteRef({...this.getGitHubUserInfo(),ref:`heads/${e}`}),this.logger.info(`Branch ${e} has been deleted`)}catch(r){if(404===r.status)return void this.logger.warn(`PR #${t} or branch ${e} not found`);throw this.logger.error("Failed to check PR or delete branch",r),r}}async createReleasePRLabel(){const t=this.context.shared.label;if(!(t&&t.name&&t.description&&t.color))throw new Error("Label is not valid, skipping creation");if(this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR label with:",t),t;try{const e=await this.octokit.rest.issues.createLabel({...this.getGitHubUserInfo(),name:t.name,description:t.description,color:t.color.replace("#","")});return this.logger.debug("Create PR label Success",e),t}catch(e){if(422===e.status)return this.logger.warn(`Label ${t.name} already exists, skipping!`),t;throw this.logger.error("Create PR label Failed",e),e}}async createReleasePR(t){if(this.context.getConfig("githubPR.dryRunCreatePR")||this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR with:",{...t,labels:t.labels}),this.dryRunPRNumber;try{const e=await this.octokit.rest.pulls.create({...this.getGitHubUserInfo(),...t}),r=e.data.number;if(!r)throw new Error("CreateReleasePR Failed, prNumber is empty");if(this.logger.debug("Create PR Success",[e?.url]),t.labels&&t.labels.length){const e=await this.octokit.rest.issues.addLabels({...this.getGitHubUserInfo(),issue_number:r,labels:t.labels});this.logger.debug("Add PR label Success",[e.url])}return r.toString()}catch(t){if(422===t.status&&t.message.includes("already exists")){this.logger.warn("PR already exists");const e=t.message.match(/pull request #(\d+)/);return e?e[1]:""}throw this.logger.error("Failed to create PR",t),t}}truncateBody(t){return t&&t.length>=124e3?t.substring(0,124e3)+"...":t}getOctokitReleaseOptions(t){const{releaseName:e,draft:r=!1,preRelease:n=!1,autoGenerate:o=!1,makeLatest:i=!0,releaseNotes:s,discussionCategoryName:a}=this.context.getConfig("githubPR"),c=e,u=o?"":this.truncateBody(String(s));return{name:c,make_latest:i.toString(),body:u,draft:r,prerelease:n,generate_release_notes:o,discussion_category_name:a,tag_name:"",...t,...this.getGitHubUserInfo()}}async createRelease(t){const e=this.getOctokitReleaseOptions({tag_name:t.tagName,body:t.changelog});if(e.name=this.shell.format(e.name,t),this.logger.log(`[DRY RUN] octokit repos.createRelease "${e.name}" (${e.tag_name})`,{isDryRun:this.context.dryRun}),!e.tag_name)throw new Error("TagName is undefined");if(!this.context.dryRun)try{const t=await this.octokit.repos.createRelease(e);this.logger.debug(`[DONE] octokit repos.createRelease "${e.name}" (${e.tag_name}) (${t.headers.location})`)}catch(t){this.logger.error(`[FAILED] octokit repos.createRelease "${e.name}" (${e.tag_name})`,t)}}}var ki,_i;function Pi(){if(_i)return ki;_i=1;var t=ve(),e=Dr(),r=Gr();return ki=function(n){return"string"==typeof n||!e(n)&&r(n)&&"[object String]"==t(n)}}var Ci=ee(Pi());class $i{context;pluginName;props;onlyOne=!0;constructor(t,e,r={}){this.context=t,this.pluginName=e,this.props=r,this.setConfig(this.getInitialProps(r))}getInitialProps(t){const e=this.context.options[this.pluginName],r=mi(this.context.shared,this.pluginName);return e||t?ri({},r,t,e):{}}get logger(){return this.context.logger}get shell(){return this.context.shell}get options(){return this.context.getConfig(this.pluginName,{})}getEnv(t,e){return this.context.env.get(t)??e}enabled(t,e){return!0}getConfig(t,e){return t?this.context.getConfig([this.pluginName,...Array.isArray(t)?t:[t]],e):this.context.getConfig(this.pluginName,e)}setConfig(t){this.context.setConfig({[this.pluginName]:t})}onBefore(t){}onExec(t){}onSuccess(t){}onError(t){}async step({label:t,task:e}){this.logger.log(),this.logger.info(t),this.logger.log();try{const r=await e();return this.logger.info(`${t} - success`),r}catch(t){throw this.logger.error(t),t}}}class Ni extends $i{async onBefore(){const t=await this.getUserInfo();if(!t)throw new Error("Failed to get repoInfo");let e=this.context.shared.currentBranch;e||(e=await this.getCurrentBranch()),e&&await this.context.shell.exec(`git checkout ${e}`,{dryRun:!1}),this.context.setShared({repoName:t.repoName,authorName:t.authorName,currentBranch:e})}async getCurrentBranch(){return await new Promise((t=>setTimeout(t,100))),this.context.shell.exec("git rev-parse --abbrev-ref HEAD",{dryRun:!1})}async getRemoteUrl(){return(await this.context.shell.exec("git config --get remote.origin.url",{dryRun:!1})).trim()}async getUserInfo(){let t;try{t=await this.getRemoteUrl()}catch{throw new Error("Failed to get git remote url. Please ensure this is a git repository with a valid remote.")}if(!t)throw new Error("Git remote URL is empty. Please set a valid GitHub remote URL.");this.context.logger.debug("repoUrl: ",t);const e=t.match(/github\.com[:/]([^/]+)\/([^/.]+)(?:\.git)?$/);if(!e)throw new Error("Invalid GitHub repository URL format. Please ensure the remote URL is from GitHub.");const[,r,n]=e;if(!this.isValidString(r)||!this.isValidString(n))throw new Error("Failed to extract owner or repository name from GitHub URL");return{repoName:n,authorName:r}}isValidString(t){return!!t&&Ci(t)}commit(t,e=[]){return this.context.shell.exec(["git","commit","--message",JSON.stringify(t),...e])}}class ji{options;constructor(t){this.options=t}compare(t,e){return"function"==typeof this.options.compare?this.options.compare(t,e):t.startsWith(e)}toChangeLabel(t,e=this.options.changePackagesLabel){return e.replace("${name}",t)}toChangeLabels(t,e=this.options.changePackagesLabel){return t.map((t=>this.toChangeLabel(t,e)))}pick(t,e=this.options.packagesDirectories){const r=[];for(const n of e)for(const e of t)if(this.compare(e,n)){r.push(n);break}return r}}class Ei{static readJson(t){const e=Yt.readFileSync(t,"utf-8");return JSON.parse(e)}static toWorkspace(t,e){let{root:r,packageJson:n}=t;const o=t.path;if(!o)throw new Error("path is not required!");return r=r||Kt.join(e,o),n=n||Ei.readJson(Kt.join(r,di)),{name:n.name,version:n.version,path:o,root:r,packageJson:n}}}class Ti extends $i{releaseTask=null;workspacesList=[];_skip=!1;releaseLabel;constructor(t){super(t,"workspaces"),this.releaseLabel=new ji({changePackagesLabel:this.context.shared.changePackagesLabel||"change:${name}",packagesDirectories:this.context.shared.packagesDirectories||[]})}enabled(){return!this._skip&&!this.getConfig("skip")}async onBefore(){const t=this.getConfig("workspace");if(t)return this.logger.debug("Use the specified workspace",t),void this.setCurrentWorkspace(t,[]);const e=await this.getWorkspaces();if(this.getConfig("skipCheckPackage")||0===e.length)throw new Error("No changes to publish packages");const{publishPath:r}=this.context.shared;if(r){const t=e.find((t=>Jt.resolve(t.root)===Jt.resolve(r)));if(this.nextSkip(),!t)throw new Error(`No workspace found for: ${r}`);return this.logger.debug(`Workspace of ${r} find!`,Jt.join(t.root,di)),void this.setCurrentWorkspace(t,[t])}const[n,...o]=e;this.workspacesList=o,this.setCurrentWorkspace(n,e)}nextSkip(){this._skip=!0,this.logger.debug("skip next workspace")}setReleaseTask(t){this.releaseTask=t}setCurrentWorkspace(t,e){this.context.setShared({publishPath:t.path}),this.setConfig({workspace:t,workspaces:e})}getPackages(){const t=this.context.shared.packagesDirectories;return Array.isArray(t)?t:[]}async getGitWorkspaces(){const t=this.context.sourceBranch,e=await this.shell.exec(`git diff --name-only origin/${t}...HEAD`,{dryRun:!1});return"string"==typeof e?e.split("\n"):[]}async getChangedPackages(t,e){if(this.logger.debug("changeLabels",e),Array.isArray(e)&&e.length>0){const r=t.filter((t=>{const r=this.releaseLabel.toChangeLabel(t);return e.includes(r)}));return this.logger.debug("changed by labels",r),r}const r=await this.getGitWorkspaces();return this.logger.debug("changed by git",r),this.releaseLabel.pick(r,t)}async getWorkspaces(){const t=this.getPackages();this.logger.debug("packages",t);const e=await this.getChangedPackages(t,this.getConfig("changeLabels"));this.setConfig({packages:t,changedPaths:e}),this.logger.debug("changedPaths",e);const r=e.map((t=>Ei.toWorkspace({path:t},this.context.rootPath)));return r}}function Bi(t,...e){return"function"==typeof t&&t.prototype&&t.prototype.constructor===t?new t(...e):t(...e)}function Oi(t){return t.startsWith(".")?Jt.parse(t).name:t}async function Si(t){let e=null;try{e=(await import(t)).default}catch{try{e=(await import(Jt.join(process.cwd(),t))).default}catch{const r=Qt.createRequire(process.cwd());e=(await import(Xt.pathToFileURL(r.resolve(t,{paths:[process.cwd()]})).href)).default}}return[Oi(t),e]}async function Ai(t,e,r=5){const n=Zt(r),o=e.map((([e,...r])=>n((()=>(async(e,...r)=>{if("string"==typeof e){const[,n]=await Si(e);return Bi(n,t,...r)}return Bi(e,t,...r)})(e,...r)))));return Promise.all(o)}const Li="- ${message}${prRef}\n",Ui="%H%n%s%n%b%n----------------------";class Fi{formatFlatCommits(t,e,r){const{types:n=[],formatTemplate:o=Li}=e,i=new Map;for(const e of t){const t=e.type||"other";i.has(t)||i.set(t,[]),i.get(t).push(e)}const s=[];for(const{type:t,section:e,hidden:a}of n){if(a)continue;const n=i.get(t);if(n?.length){s.push(`${e||t}`);for(const t of n){const e=t.prNumber?` (#${t.prNumber})`:"";if(s.push(r.format(o,{...t,prRef:e})),t.body){const e=t.body.split("\n").map((t=>` ${t}`));s.push(e.join("\n"))}}}}return s}}class Wi{shell;options;constructor(t,e){this.shell=t,this.options=e}parseCommitBody(t){const e=t.split("\n").filter(Boolean),r=[];let n=null;for(let t=0;t<e.length;t++){const o=e[t].trim();if(o.startsWith("Co-authored-by:")||"---------"===o||0===o.length)continue;const i=o.match(/^\*?\s*(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);if(i&&o.startsWith("*")){n&&r.push({...n,body:n.bodyLines?.join("\n").trim()});const[t,e,s,a]=i;n={matchRaw:t,raw:o,type:e?.toLowerCase(),scope:s?.trim(),message:a.trim(),bodyLines:[]}}else n&&o.startsWith("-")&&n.bodyLines?.push(o)}return n&&r.push({...n,body:n.bodyLines?.join("\n").trim()}),r}async getPRCommits(t){const{from:e,to:r,directory:n,format:o}={...this.options,...t};return(await this.getLog({from:e,to:r,directory:n,format:o,noMerges:!1})).split("\n----------------------\n").filter(Boolean).map((t=>{const[e,r,...n]=t.trim().split("\n"),o=n.join("\n"),i=r.match(/\(#(\d+)\)/),s=r.replace(/\s*\(#\d+\)\s*$/,"").match(/^(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);return{hash:e,raw:{title:r,body:o},title:s?{type:s[1]?.toLowerCase(),scope:s[2]?.trim(),message:s[3].trim()}:{message:r.replace(/\s*\(#\d+\)\s*$/,"").trim()},commits:this.parseCommitBody(o),prNumber:i?.[1]}}))}async hasTag(t){return this.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((()=>!0)).catch((()=>!1))}async resolveTag(t,e){if(t)try{if(await this.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((t=>!!t.trim())))return t}catch{}return"root"===e?this.shell.exec("git rev-list --max-parents=0 HEAD",{dryRun:!1}).then((t=>t.trim())):"HEAD"}async getLog(t){const{directory:e,format:r=Ui,noMerges:n=!0}=t;if(t.logCommand)return this.shell.exec(t.logCommand,{dryRun:!1});const o=await this.resolveTag(t.from,"root"),i=await this.resolveTag(t.to,"HEAD"),s=`git log --pretty=format:"${r}" ${n?"--no-merges":""} ${o===i?i:`${o}..${i}`} ${e?`-- "${e}"`:""}`;return this.shell.exec(s.trim(),{dryRun:!1})}flatCommits(t){const e=[];for(const r of t){const t={title:r.title,raw:r.raw,hash:r.hash,prNumber:r.prNumber};if(Array.isArray(r.commits)&&r.commits.length>0){const n=r.commits.map((e=>({...e,prNumber:r.prNumber,hash:r.hash,parentHash:r.hash,parentCommit:t})));e.push(...n)}else e.push({raw:r.raw.title,type:r.title.type,scope:r.title.scope,message:r.title.message,body:r.raw.body,prNumber:r.prNumber,hash:r.hash,parentHash:r.hash,parentCommit:t})}return e}formatFlatCommits(t,e){const{types:r=[],formatter:n}={...this.options,...e};return(n||new Fi).formatFlatCommits(t,{types:r},this.shell)}}const Mi=[vi(Ti),vi(class extends $i{constructor(t,e){super(t,"changelog",{increment:"patch",changesetRoot:".changeset",tagTemplate:"${name}@${version}",tagPrefix:"${name}",tagMatch:"${name}@*",...e})}get changesetRoot(){return Kt.join(this.context.rootPath,this.getConfig("changesetRoot"))}get changesetConfigPath(){return Kt.join(this.changesetRoot,"config.json")}enabled(){return!this.getConfig("skip")}async onBefore(){if(!Yt.existsSync(this.changesetRoot))throw new Error(`Changeset directory ${this.changesetRoot} does not exist`);this.logger.debug(`${this.changesetRoot} exists`)}mergeWorkspaces(t){return t.map((t=>{const e=Ei.toWorkspace({path:t.path},this.context.rootPath),r={...t,version:e.version};return r.tagName=this.generateTagName(r),r}))}async onExec(){const t=await this.step({label:"Generate Changelogs",task:()=>Promise.all(this.context.workspaces.map((t=>this.generateChangelog(t))))});this.getConfig("skipChangeset")?this.logger.debug("Skip generate changeset files"):(await this.step({label:"Changeset Version",task:()=>Promise.all(t.map((t=>this.generateChangesetFile(t))))}),await this.context.runChangesetsCli("version",["--no-changelog","--update-dependencies"]),this.getConfig("ignoreNonUpdatedPackages")&&await this.restoreIgnorePackages());const e=this.mergeWorkspaces(t);this.logger.debug("new workspaces",e),this.context.setWorkspaces(e)}async restoreIgnorePackages(){const{changedPaths:t=[],packages:e=[]}=this.context.getConfig("workspaces"),r=e.filter((e=>!t.includes(e))).map((t=>Ei.toWorkspace({path:t},this.context.rootPath).path));this.logger.debug("noChangedPackages",r),await this.shell.exec(["git","restore",...r])}getTagPrefix(t){return this.shell.format(this.getConfig("tagPrefix"),t)}async createChangelog({lastTag:t,workspace:e}){const r=new Wi(this.context.shell,{...this.getConfig("gitChangelogOptions"),from:t,directory:e.path});return r.getPRCommits().then((t=>{const e=r.flatCommits(t);return r.formatFlatCommits(e).join("\n")}))}async generateChangelog(t){const e=await this.getTagName(t);this.logger.debug("tagName is:",e);const r=await this.createChangelog({workspace:t,lastTag:e});return{...t,lastTag:e,changelog:r}}generateTagName(t){try{const e=this.getConfig("tagTemplate");return this.shell.format(e,t)}catch(e){return console.error(`Error generating tag name for ${t.name}:`,e),`${t.name}-v0.0.0`}}async getTagName(t){try{const e=this.generateTagName(t),r=this.shell.format(this.getConfig("tagMatch"),t),n=await this.shell.exec(`git for-each-ref --sort=-creatordate --format "%(refname:short)|%(creatordate:iso8601)" "refs/tags/${r}"`,{dryRun:!1});if(!n)return e;const o=n.split("\n").filter(Boolean);if(0===o.length)return e;return o[0].split("|")[0]}catch(e){console.error(`Error getting tag for ${t.name}:`,e);return this.generateTagName(t)}}getIncrement(){const t=this.context.getConfig("workspaces.changeLabels");if(Array.isArray(t)&&t.length>0){if(t.includes("increment:major"))return"major";if(t.includes("increment:minor"))return"minor"}return this.getConfig("increment","patch")}async generateChangesetFile(t){const{name:e,version:r}=t,n=`${e}-${r}`.replace(/[\/\\]/g,"_"),o=Kt.join(this.changesetRoot,`${n}.md`),i=this.getIncrement();this.logger.debug("increment is:",[i]);const s=this.shell.format("---\n'${name}': '${increment}'\n---\n\n${changelog}",{...t,increment:i});if(this.context.dryRun)return this.logger.info(`Changeset [${o}] will be created, content is:`),void this.logger.log(s);Yt.existsSync(o)?this.logger.info(`Changeset ${n} already exists`):Yt.writeFileSync(o,s,"utf-8")}},{}),vi(class extends Ni{context;releaseParams;githubManager;constructor(t,e){super(t,"githubPR",{releaseName:"Release ${name} v${version}",...e}),this.context=t,this.githubManager=new xi(this.context),this.releaseParams=new Ri(t.shell,t.logger,{PRTitle:this.getConfig("PRTitle",this.context.shared.PRTitle),PRBody:this.getConfig("PRBody",this.context.shared.PRBody),...this.props})}enabled(t){return!this.getConfig("skip")&&("onExec"===t?!this.isPublish:"onSuccess"!==t||this.isPublish)}get isPublish(){return!this.getConfig("releasePR")}async isGithubRepository(){try{return(await this.getRemoteUrl()).includes("github.com")}catch{return!1}}async onBefore(){this.logger.debug("GithubPR onBefore");if(!await this.isGithubRepository())throw new Error("Current repository is not a GitHub repository. GitHub PR workflow is only available for GitHub repositories.");if(await super.onBefore(),this.isPublish){const t=this.getEnv("NPM_TOKEN");if(!t)throw new Error("NPM_TOKEN is not set");await this.shell.exec(`npm config set //registry.npmjs.org/:_authToken=${t}`)}}async onExec(){const t=this.context.workspaces;await this.step({label:"Release Commit",task:()=>this.relesaeCommit(t)});const e=await this.step({label:"Create Release Branch",task:()=>this.createReleaseBranch(t)});await this.releasePullRequest(t,e)}async onSuccess(){const t=this.context.workspaces;this.getConfig("dryRunCreatePR")||(await this.context.runChangesetsCli("publish"),await this.shell.exec("git push origin --tags")),await this.step({label:"Release Github",task:()=>Promise.all(t.map((t=>(this.logger.debug(t),this.githubManager.createRelease(t)))))})}async relesaeCommit(t){const e=this.getConfig("commitArgs",[]);if(1===t.length)return await this.shell.exec("git add ."),void await this.commitWorkspace(t[0],e);await this.shell.exec("git add .");const r=`chore(tag): ${t.map((t=>`${t.name} v${t.version}`)).join(",")}`;await this.commit(r,e)}async releasePullRequest(t,e){const r=await this.step({label:"Create Release PR",task:()=>this.createReleasePR(t,e)});if(this.githubManager.autoMergeReleasePR){const{releaseBranch:t}=e;return await this.step({label:`Merge Release PR(${r})`,task:()=>this.githubManager.mergePR(r,t)}),void await this.step({label:`Checked Release PR(${r})`,task:()=>this.githubManager.checkedPR(r,t)})}this.logger.info(`Please manually merge PR(#${r}) and complete the publishing process afterwards`)}async commitWorkspace(t,e=[]){const r=this.shell.format(this.getConfig("commitMessage","chore(tag): ${name} v${version}"),t);return await this.commit(r,e)}async createReleaseBranch(t){const e=this.releaseParams.getReleaseBranchParams(t,this.context.getTemplateContext()),{tagName:r,releaseBranch:n}=e;if("string"!=typeof r)throw new Error("Tag name is not a string");const{sourceBranch:o,currentBranch:i}=this.context.shared;this.context.logger.debug("PR TagName is:",r),this.context.logger.debug("PR CurrentBranch is:",i),this.context.logger.debug("PR SourceBranch is:",o),this.context.logger.debug("PR ReleaseBranch is:",n);try{await this.context.shell.exec(`git fetch origin ${o} ${i}`),await this.context.shell.exec(`git checkout -b ${n} ${i}`),await this.context.shell.exec(`git push origin ${n}`)}catch(t){throw t.message.includes("remote: Permission to ")&&this.context.logger.warn('Token maybe not allow Workflow permissions, can you try to open "Workflow permissions" -> "Read and write permissions" for this token?'),t}return{tagName:r,releaseBranch:n}}async createReleasePR(t,e){let r=[(await this.githubManager.createReleasePRLabel()).name];if(this.getConfig("pushChangeLabels")){const t=this.context.getConfig("workspaces.changeLabels");Array.isArray(t)&&t.length>0&&r.push(...t)}r=Array.from(new Set(r)),this.logger.debug("Release PR labels:",r);const n=this.context.getTemplateContext(),o=this.releaseParams.getPRTitle(e,n),i=this.releaseParams.getPRBody(t,e,n);return this.githubManager.createReleasePR({title:o,body:i,base:this.context.sourceBranch,head:e.releaseBranch,labels:r})}},{})];var Gi,Hi,Ii,Di;function qi(){if(Hi)return Gi;Hi=1;var t=uo(),e=li(),r=go(),n=we(),o=gi();return Gi=function(i,s,a,c){if(!n(i))return i;for(var u=-1,h=(s=e(s,i)).length,l=h-1,g=i;null!=g&&++u<h;){var f=o(s[u]),p=a;if("__proto__"===f||"constructor"===f||"prototype"===f)return i;if(u!=l){var m=g[f];void 0===(p=c?c(m,f,g):void 0)&&(p=n(m)?m:r(s[u+1])?[]:{})}t(g,f,p),g=g[f]}return i},Gi}function zi(){if(Di)return Ii;Di=1;var t=qi();return Ii=function(e,r,n){return null==e?e:t(e,r,n)},Ii}var Vi=ee(zi());exports.Plugin=$i,exports.ReleaseContext=bi,exports.ReleaseLabel=ji,exports.ReleaseTask=class{executor;defaultTuples;context;constructor(t={},e=new zt.AsyncExecutor,r=Mi){this.executor=e,this.defaultTuples=r,this.context=new bi(t)}getContext(){return this.context}async usePlugins(t){t=t||this.context.shared.plugins||[];const e=await Ai(this.context,[...this.defaultTuples,...t]);return e.forEach((t=>{t instanceof Ti&&t.setReleaseTask(this),this.executor.use(t)})),e}async run(){return this.executor.exec(this.context,(t=>Promise.resolve(t)))}async exec(t){if("false"===this.context.env.get("FE_RELEASE"))throw new Error("Skip Release");return await this.usePlugins(t),this.run()}},exports.factory=Bi,exports.load=Si,exports.loaderPluginsFromPluginTuples=Ai,exports.reduceOptions=function(t,e){return Object.entries(t).reduce(((t,[r,n])=>(r.includes(".")?Vi(t,r,n):Vi(t,e?`${e}.${r}`:r,n),t)),{})},exports.tuple=vi;
package/dist/index.d.ts CHANGED
@@ -43,6 +43,16 @@ interface WorkspacesProps {
43
43
  * from `changePackagesLabel`
44
44
  */
45
45
  changeLabels?: string[];
46
+ /**
47
+ * The changed paths
48
+ * @private
49
+ */
50
+ changedPaths?: string[];
51
+ /**
52
+ * The packages
53
+ * @private
54
+ */
55
+ packages?: string[];
46
56
  }
47
57
  interface WorkspaceValue {
48
58
  name: string;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{FeScriptContext as t}from"@qlover/scripts-context";import{Env as e}from"@qlover/env-loader";import{AsyncExecutor as r}from"@qlover/fe-corekit";import{Octokit as n}from"@octokit/rest";import{resolve as o,join as i,parse as s}from"node:path";import{readFileSync as a,existsSync as c,writeFileSync as u}from"fs";import{join as h}from"path";import{createRequire as l}from"node:module";import{pathToFileURL as f}from"node:url";import g from"p-limit";var p,m,d,y,b,v,w,R,_,x,k,P,C,$,N,j,E,B,T,O,A,S,L,U,W,F,M,G,H,D,z,I,q,V,J,Y,K,Q,X,Z,tt,et,rt,nt,ot,it,st,at,ct,ut,ht,lt,ft,gt,pt,mt,dt,yt,bt,vt,wt,Rt,_t,xt,kt,Pt,Ct,$t,Nt,jt,Et,Bt,Tt,Ot,At,St,Lt,Ut,Wt,Ft,Mt,Gt,Ht,Dt,zt,It,qt,Vt,Jt,Yt,Kt,Qt,Xt,Zt,te,ee,re,ne,oe="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function ie(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function se(){if(m)return p;return m=1,p=function(){this.__data__=[],this.size=0}}function ae(){if(y)return d;return y=1,d=function(t,e){return t===e||t!=t&&e!=e}}function ce(){if(v)return b;v=1;var t=ae();return b=function(e,r){for(var n=e.length;n--;)if(t(e[n][0],r))return n;return-1}}function ue(){if(R)return w;R=1;var t=ce(),e=Array.prototype.splice;return w=function(r){var n=this.__data__,o=t(n,r);return!(o<0)&&(o==n.length-1?n.pop():e.call(n,o,1),--this.size,!0)}}function he(){if(x)return _;x=1;var t=ce();return _=function(e){var r=this.__data__,n=t(r,e);return n<0?void 0:r[n][1]}}function le(){if(P)return k;P=1;var t=ce();return k=function(e){return t(this.__data__,e)>-1}}function fe(){if($)return C;$=1;var t=ce();return C=function(e,r){var n=this.__data__,o=t(n,e);return o<0?(++this.size,n.push([e,r])):n[o][1]=r,this}}function ge(){if(j)return N;j=1;var t=se(),e=ue(),r=he(),n=le(),o=fe();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,N=i}function pe(){if(B)return E;B=1;var t=ge();return E=function(){this.__data__=new t,this.size=0}}function me(){if(O)return T;return O=1,T=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}}function de(){if(S)return A;return S=1,A=function(t){return this.__data__.get(t)}}function ye(){if(U)return L;return U=1,L=function(t){return this.__data__.has(t)}}function be(){if(F)return W;F=1;var t="object"==typeof oe&&oe&&oe.Object===Object&&oe;return W=t}function ve(){if(G)return M;G=1;var t=be(),e="object"==typeof self&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return M=r}function we(){if(D)return H;D=1;var t=ve().Symbol;return H=t}function Re(){if(I)return z;I=1;var t=we(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,o=t?t.toStringTag:void 0;return z=function(t){var e=r.call(t,o),i=t[o];try{t[o]=void 0;var s=!0}catch(t){}var a=n.call(t);return s&&(e?t[o]=i:delete t[o]),a}}function _e(){if(V)return q;V=1;var t=Object.prototype.toString;return q=function(e){return t.call(e)}}function xe(){if(Y)return J;Y=1;var t=we(),e=Re(),r=_e(),n=t?t.toStringTag:void 0;return J=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":n&&n in Object(t)?e(t):r(t)}}function ke(){if(Q)return K;return Q=1,K=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}}function Pe(){if(Z)return X;Z=1;var t=xe(),e=ke();return X=function(r){if(!e(r))return!1;var n=t(r);return"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n}}function Ce(){if(et)return tt;et=1;var t=ve()["__core-js_shared__"];return tt=t}function $e(){if(nt)return rt;nt=1;var t,e=Ce(),r=(t=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||""))?"Symbol(src)_1."+t:"";return rt=function(t){return!!r&&r in t}}function Ne(){if(it)return ot;it=1;var t=Function.prototype.toString;return ot=function(e){if(null!=e){try{return t.call(e)}catch(t){}try{return e+""}catch(t){}}return""}}function je(){if(at)return st;at=1;var t=Pe(),e=$e(),r=ke(),n=Ne(),o=/^\[object .+?Constructor\]$/,i=Function.prototype,s=Object.prototype,a=i.toString,c=s.hasOwnProperty,u=RegExp("^"+a.call(c).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return st=function(i){return!(!r(i)||e(i))&&(t(i)?u:o).test(n(i))}}function Ee(){if(ut)return ct;return ut=1,ct=function(t,e){return null==t?void 0:t[e]}}function Be(){if(lt)return ht;lt=1;var t=je(),e=Ee();return ht=function(r,n){var o=e(r,n);return t(o)?o:void 0}}function Te(){if(gt)return ft;gt=1;var t=Be()(ve(),"Map");return ft=t}function Oe(){if(mt)return pt;mt=1;var t=Be()(Object,"create");return pt=t}function Ae(){if(yt)return dt;yt=1;var t=Oe();return dt=function(){this.__data__=t?t(null):{},this.size=0}}function Se(){if(vt)return bt;return vt=1,bt=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}}function Le(){if(Rt)return wt;Rt=1;var t=Oe(),e=Object.prototype.hasOwnProperty;return wt=function(r){var n=this.__data__;if(t){var o=n[r];return"__lodash_hash_undefined__"===o?void 0:o}return e.call(n,r)?n[r]:void 0}}function Ue(){if(xt)return _t;xt=1;var t=Oe(),e=Object.prototype.hasOwnProperty;return _t=function(r){var n=this.__data__;return t?void 0!==n[r]:e.call(n,r)}}function We(){if(Pt)return kt;Pt=1;var t=Oe();return kt=function(e,r){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=t&&void 0===r?"__lodash_hash_undefined__":r,this}}function Fe(){if($t)return Ct;$t=1;var t=Ae(),e=Se(),r=Le(),n=Ue(),o=We();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,Ct=i}function Me(){if(jt)return Nt;jt=1;var t=Fe(),e=ge(),r=Te();return Nt=function(){this.size=0,this.__data__={hash:new t,map:new(r||e),string:new t}}}function Ge(){if(Bt)return Et;return Bt=1,Et=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}}function He(){if(Ot)return Tt;Ot=1;var t=Ge();return Tt=function(e,r){var n=e.__data__;return t(r)?n["string"==typeof r?"string":"hash"]:n.map}}function De(){if(St)return At;St=1;var t=He();return At=function(e){var r=t(this,e).delete(e);return this.size-=r?1:0,r}}function ze(){if(Ut)return Lt;Ut=1;var t=He();return Lt=function(e){return t(this,e).get(e)}}function Ie(){if(Ft)return Wt;Ft=1;var t=He();return Wt=function(e){return t(this,e).has(e)}}function qe(){if(Gt)return Mt;Gt=1;var t=He();return Mt=function(e,r){var n=t(this,e),o=n.size;return n.set(e,r),this.size+=n.size==o?0:1,this}}function Ve(){if(Dt)return Ht;Dt=1;var t=Me(),e=De(),r=ze(),n=Ie(),o=qe();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,Ht=i}function Je(){if(It)return zt;It=1;var t=ge(),e=Te(),r=Ve();return zt=function(n,o){var i=this.__data__;if(i instanceof t){var s=i.__data__;if(!e||s.length<199)return s.push([n,o]),this.size=++i.size,this;i=this.__data__=new r(s)}return i.set(n,o),this.size=i.size,this}}function Ye(){if(Vt)return qt;Vt=1;var t=ge(),e=pe(),r=me(),n=de(),o=ye(),i=Je();function s(e){var r=this.__data__=new t(e);this.size=r.size}return s.prototype.clear=e,s.prototype.delete=r,s.prototype.get=n,s.prototype.has=o,s.prototype.set=i,qt=s}function Ke(){if(Yt)return Jt;Yt=1;var t=Be(),e=function(){try{var e=t(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();return Jt=e}function Qe(){if(Qt)return Kt;Qt=1;var t=Ke();return Kt=function(e,r,n){"__proto__"==r&&t?t(e,r,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[r]=n}}function Xe(){if(Zt)return Xt;Zt=1;var t=Qe(),e=ae();return Xt=function(r,n,o){(void 0!==o&&!e(r[n],o)||void 0===o&&!(n in r))&&t(r,n,o)}}function Ze(){if(ee)return te;return ee=1,te=function(t){return function(e,r,n){for(var o=-1,i=Object(e),s=n(e),a=s.length;a--;){var c=s[t?a:++o];if(!1===r(i[c],c,i))break}return e}}}function tr(){if(ne)return re;ne=1;var t=Ze()();return re=t}var er,rr,nr,or,ir,sr,ar,cr,ur,hr,lr,fr,gr,pr,mr,dr,yr,br,vr,wr,Rr,_r,xr,kr,Pr,Cr,$r,Nr,jr,Er,Br,Tr,Or,Ar={exports:{}};function Sr(){return er||(er=1,t=Ar,e=Ar.exports,r=ve(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n?r.Buffer:void 0,s=i?i.allocUnsafe:void 0,t.exports=function(t,e){if(e)return t.slice();var r=t.length,n=s?s(r):new t.constructor(r);return t.copy(n),n}),Ar.exports;var t,e,r,n,o,i,s}function Lr(){if(nr)return rr;nr=1;var t=ve().Uint8Array;return rr=t}function Ur(){if(ir)return or;ir=1;var t=Lr();return or=function(e){var r=new e.constructor(e.byteLength);return new t(r).set(new t(e)),r}}function Wr(){if(ar)return sr;ar=1;var t=Ur();return sr=function(e,r){var n=r?t(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}}function Fr(){if(ur)return cr;return ur=1,cr=function(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r<n;)e[r]=t[r];return e}}function Mr(){if(lr)return hr;lr=1;var t=ke(),e=Object.create,r=function(){function r(){}return function(n){if(!t(n))return{};if(e)return e(n);r.prototype=n;var o=new r;return r.prototype=void 0,o}}();return hr=r}function Gr(){if(gr)return fr;return gr=1,fr=function(t,e){return function(r){return t(e(r))}}}function Hr(){if(mr)return pr;mr=1;var t=Gr()(Object.getPrototypeOf,Object);return pr=t}function Dr(){if(yr)return dr;yr=1;var t=Object.prototype;return dr=function(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||t)}}function zr(){if(vr)return br;vr=1;var t=Mr(),e=Hr(),r=Dr();return br=function(n){return"function"!=typeof n.constructor||r(n)?{}:t(e(n))}}function Ir(){if(Rr)return wr;return Rr=1,wr=function(t){return null!=t&&"object"==typeof t}}function qr(){if(xr)return _r;xr=1;var t=xe(),e=Ir();return _r=function(r){return e(r)&&"[object Arguments]"==t(r)}}function Vr(){if(Pr)return kr;Pr=1;var t=qr(),e=Ir(),r=Object.prototype,n=r.hasOwnProperty,o=r.propertyIsEnumerable,i=t(function(){return arguments}())?t:function(t){return e(t)&&n.call(t,"callee")&&!o.call(t,"callee")};return kr=i}function Jr(){if($r)return Cr;$r=1;var t=Array.isArray;return Cr=t}function Yr(){if(jr)return Nr;jr=1;return Nr=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}}function Kr(){if(Br)return Er;Br=1;var t=Pe(),e=Yr();return Er=function(r){return null!=r&&e(r.length)&&!t(r)}}function Qr(){if(Or)return Tr;Or=1;var t=Kr(),e=Ir();return Tr=function(r){return e(r)&&t(r)}}var Xr,Zr,tn,en,rn,nn,on,sn,an,cn={exports:{}};function un(){if(Zr)return Xr;return Zr=1,Xr=function(){return!1}}function hn(){return tn||(tn=1,function(t,e){var r=ve(),n=un(),o=e&&!e.nodeType&&e,i=o&&t&&!t.nodeType&&t,s=i&&i.exports===o?r.Buffer:void 0,a=(s?s.isBuffer:void 0)||n;t.exports=a}(cn,cn.exports)),cn.exports}function ln(){if(rn)return en;rn=1;var t=xe(),e=Hr(),r=Ir(),n=Function.prototype,o=Object.prototype,i=n.toString,s=o.hasOwnProperty,a=i.call(Object);return en=function(n){if(!r(n)||"[object Object]"!=t(n))return!1;var o=e(n);if(null===o)return!0;var c=s.call(o,"constructor")&&o.constructor;return"function"==typeof c&&c instanceof c&&i.call(c)==a}}function fn(){if(on)return nn;on=1;var t=xe(),e=Yr(),r=Ir(),n={};return n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1,nn=function(o){return r(o)&&e(o.length)&&!!n[t(o)]}}function gn(){if(an)return sn;return an=1,sn=function(t){return function(e){return t(e)}}}var pn,mn,dn,yn,bn,vn,wn,Rn,_n,xn,kn,Pn,Cn,$n,Nn,jn,En,Bn,Tn,On,An,Sn,Ln,Un,Wn,Fn,Mn,Gn,Hn,Dn,zn,In,qn,Vn,Jn,Yn,Kn,Qn,Xn,Zn,to,eo,ro,no,oo,io,so,ao,co,uo={exports:{}};function ho(){return pn||(pn=1,t=uo,e=uo.exports,r=be(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n&&r.process,s=function(){try{var t=o&&o.require&&o.require("util").types;return t||i&&i.binding&&i.binding("util")}catch(t){}}(),t.exports=s),uo.exports;var t,e,r,n,o,i,s}function lo(){if(dn)return mn;dn=1;var t=fn(),e=gn(),r=ho(),n=r&&r.isTypedArray,o=n?e(n):t;return mn=o}function fo(){if(bn)return yn;return bn=1,yn=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}}function go(){if(wn)return vn;wn=1;var t=Qe(),e=ae(),r=Object.prototype.hasOwnProperty;return vn=function(n,o,i){var s=n[o];r.call(n,o)&&e(s,i)&&(void 0!==i||o in n)||t(n,o,i)}}function po(){if(_n)return Rn;_n=1;var t=go(),e=Qe();return Rn=function(r,n,o,i){var s=!o;o||(o={});for(var a=-1,c=n.length;++a<c;){var u=n[a],h=i?i(o[u],r[u],u,o,r):void 0;void 0===h&&(h=r[u]),s?e(o,u,h):t(o,u,h)}return o}}function mo(){if(kn)return xn;return kn=1,xn=function(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n}}function yo(){if(Cn)return Pn;Cn=1;var t=/^(?:0|[1-9]\d*)$/;return Pn=function(e,r){var n=typeof e;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e<r}}function bo(){if(Nn)return $n;Nn=1;var t=mo(),e=Vr(),r=Jr(),n=hn(),o=yo(),i=lo(),s=Object.prototype.hasOwnProperty;return $n=function(a,c){var u=r(a),h=!u&&e(a),l=!u&&!h&&n(a),f=!u&&!h&&!l&&i(a),g=u||h||l||f,p=g?t(a.length,String):[],m=p.length;for(var d in a)!c&&!s.call(a,d)||g&&("length"==d||l&&("offset"==d||"parent"==d)||f&&("buffer"==d||"byteLength"==d||"byteOffset"==d)||o(d,m))||p.push(d);return p}}function vo(){if(En)return jn;return En=1,jn=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}}function wo(){if(Tn)return Bn;Tn=1;var t=ke(),e=Dr(),r=vo(),n=Object.prototype.hasOwnProperty;return Bn=function(o){if(!t(o))return r(o);var i=e(o),s=[];for(var a in o)("constructor"!=a||!i&&n.call(o,a))&&s.push(a);return s}}function Ro(){if(An)return On;An=1;var t=bo(),e=wo(),r=Kr();return On=function(n){return r(n)?t(n,!0):e(n)}}function _o(){if(Ln)return Sn;Ln=1;var t=po(),e=Ro();return Sn=function(r){return t(r,e(r))}}function xo(){if(Wn)return Un;Wn=1;var t=Xe(),e=Sr(),r=Wr(),n=Fr(),o=zr(),i=Vr(),s=Jr(),a=Qr(),c=hn(),u=Pe(),h=ke(),l=ln(),f=lo(),g=fo(),p=_o();return Un=function(m,d,y,b,v,w,R){var _=g(m,y),x=g(d,y),k=R.get(x);if(k)t(m,y,k);else{var P=w?w(_,x,y+"",m,d,R):void 0,C=void 0===P;if(C){var $=s(x),N=!$&&c(x),j=!$&&!N&&f(x);P=x,$||N||j?s(_)?P=_:a(_)?P=n(_):N?(C=!1,P=e(x,!0)):j?(C=!1,P=r(x,!0)):P=[]:l(x)||i(x)?(P=_,i(_)?P=p(_):h(_)&&!u(_)||(P=o(x))):C=!1}C&&(R.set(x,P),v(P,x,b,w,R),R.delete(x)),t(m,y,P)}}}function ko(){if(Mn)return Fn;Mn=1;var t=Ye(),e=Xe(),r=tr(),n=xo(),o=ke(),i=Ro(),s=fo();return Fn=function a(c,u,h,l,f){c!==u&&r(u,(function(r,i){if(f||(f=new t),o(r))n(c,u,i,h,a,l,f);else{var g=l?l(s(c,i),r,i+"",c,u,f):void 0;void 0===g&&(g=r),e(c,i,g)}}),i)},Fn}function Po(){if(Hn)return Gn;return Hn=1,Gn=function(t){return t}}function Co(){if(zn)return Dn;return zn=1,Dn=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}}function $o(){if(qn)return In;qn=1;var t=Co(),e=Math.max;return In=function(r,n,o){return n=e(void 0===n?r.length-1:n,0),function(){for(var i=arguments,s=-1,a=e(i.length-n,0),c=Array(a);++s<a;)c[s]=i[n+s];s=-1;for(var u=Array(n+1);++s<n;)u[s]=i[s];return u[n]=o(c),t(r,this,u)}},In}function No(){if(Jn)return Vn;return Jn=1,Vn=function(t){return function(){return t}}}function jo(){if(Kn)return Yn;Kn=1;var t=No(),e=Ke();return Yn=e?function(r,n){return e(r,"toString",{configurable:!0,enumerable:!1,value:t(n),writable:!0})}:Po()}function Eo(){if(Xn)return Qn;Xn=1;var t=Date.now;return Qn=function(e){var r=0,n=0;return function(){var o=t(),i=16-(o-n);if(n=o,i>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}},Qn}function Bo(){if(to)return Zn;to=1;var t=jo(),e=Eo()(t);return Zn=e}function To(){if(ro)return eo;ro=1;var t=Po(),e=$o(),r=Bo();return eo=function(n,o){return r(e(n,o,t),n+"")}}function Oo(){if(oo)return no;oo=1;var t=ae(),e=Kr(),r=yo(),n=ke();return no=function(o,i,s){if(!n(s))return!1;var a=typeof i;return!!("number"==a?e(s)&&r(i,s.length):"string"==a&&i in s)&&t(s[i],o)}}function Ao(){if(so)return io;so=1;var t=To(),e=Oo();return io=function(r){return t((function(t,n){var o=-1,i=n.length,s=i>1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(s=r.length>3&&"function"==typeof s?(i--,s):void 0,a&&e(n[0],n[1],a)&&(s=i<3?void 0:s,i=1),t=Object(t);++o<i;){var c=n[o];c&&r(t,c,o,s)}return t}))}}function So(){if(co)return ao;co=1;var t=ko(),e=Ao()((function(e,r,n){t(e,r,n)}));return ao=e}var Lo,Uo,Wo,Fo,Mo,Go,Ho,Do,zo,Io,qo,Vo,Jo,Yo,Ko,Qo,Xo,Zo,ti,ei,ri,ni,oi,ii,si=ie(So());function ai(){if(Uo)return Lo;Uo=1;var t=xe(),e=Ir();return Lo=function(r){return"symbol"==typeof r||e(r)&&"[object Symbol]"==t(r)}}function ci(){if(Fo)return Wo;Fo=1;var t=Jr(),e=ai(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;return Wo=function(o,i){if(t(o))return!1;var s=typeof o;return!("number"!=s&&"symbol"!=s&&"boolean"!=s&&null!=o&&!e(o))||(n.test(o)||!r.test(o)||null!=i&&o in Object(i))}}function ui(){if(Go)return Mo;Go=1;var t=Ve();function e(r,n){if("function"!=typeof r||null!=n&&"function"!=typeof n)throw new TypeError("Expected a function");var o=function(){var t=arguments,e=n?n.apply(this,t):t[0],i=o.cache;if(i.has(e))return i.get(e);var s=r.apply(this,t);return o.cache=i.set(e,s)||i,s};return o.cache=new(e.Cache||t),o}return e.Cache=t,Mo=e}function hi(){if(Do)return Ho;Do=1;var t=ui();return Ho=function(e){var r=t(e,(function(t){return 500===n.size&&n.clear(),t})),n=r.cache;return r}}function li(){if(Io)return zo;Io=1;var t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,e=/\\(\\)?/g,r=hi()((function(r){var n=[];return 46===r.charCodeAt(0)&&n.push(""),r.replace(t,(function(t,r,o,i){n.push(o?i.replace(e,"$1"):r||t)})),n}));return zo=r}function fi(){if(Vo)return qo;return Vo=1,qo=function(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r<n;)o[r]=e(t[r],r,t);return o}}function gi(){if(Yo)return Jo;Yo=1;var t=we(),e=fi(),r=Jr(),n=ai(),o=t?t.prototype:void 0,i=o?o.toString:void 0;return Jo=function t(o){if("string"==typeof o)return o;if(r(o))return e(o,t)+"";if(n(o))return i?i.call(o):"";var s=o+"";return"0"==s&&1/o==-1/0?"-0":s},Jo}function pi(){if(Qo)return Ko;Qo=1;var t=gi();return Ko=function(e){return null==e?"":t(e)}}function mi(){if(Zo)return Xo;Zo=1;var t=Jr(),e=ci(),r=li(),n=pi();return Xo=function(o,i){return t(o)?o:e(o,i)?[o]:r(n(o))}}function di(){if(ei)return ti;ei=1;var t=ai();return ti=function(e){if("string"==typeof e||t(e))return e;var r=e+"";return"0"==r&&1/e==-1/0?"-0":r}}function yi(){if(ni)return ri;ni=1;var t=mi(),e=di();return ri=function(r,n){for(var o=0,i=(n=t(n,r)).length;null!=r&&o<i;)r=r[e(n[o++])];return o&&o==i?r:void 0}}function bi(){if(ii)return oi;ii=1;var t=yi();return oi=function(e,r,n){var o=null==e?void 0:t(e,r);return void 0===o?n:o}}var vi=ie(bi());const wi="package.json",Ri=[".env.local",".env"];class _i extends t{_env;shared;constructor(t){super(t),this._env=e.searchEnv({logger:this.logger,preloadList:this.feConfig.envOrder||Ri}),this.shared=Object.assign({},this.feConfig.release,this.getDefaultShreadOptions(t.shared))}getDefaultShreadOptions(t){return{rootPath:process.cwd(),sourceBranch:this._env.get("FE_RELEASE_BRANCH")||this._env.get("FE_RELEASE_SOURCE_BRANCH")||"master",releaseEnv:this._env.get("FE_RELEASE_ENV")||this._env.get("NODE_ENV")||"development",...t}}get rootPath(){return this.shared.rootPath}get sourceBranch(){return this.shared.sourceBranch}get releaseEnv(){return this.shared.releaseEnv}get env(){return this._env}get workspaces(){return this.getConfig("workspaces.workspaces")}get workspace(){return this.getConfig("workspaces.workspace")}setWorkspaces(t){this.options.workspaces={...this.options.workspaces,workspaces:t}}setConfig(t){this.options=si(this.options,t)}getConfig(t,e){return vi(this.options,t,e)}setShared(t){this.shared=si(this.shared,t)}getPkg(t,e){const r=this.workspace?.packageJson;if(!r)throw new Error("package.json is not found");return t?vi(r,t,e):r}getTemplateContext(){return{...this.shared,...this.workspace,publishPath:this.workspace?.path||"",env:this.releaseEnv,branch:this.sourceBranch}}async runChangesetsCli(t,e){let r="pnpm";try{await this.shell.exec("pnpm -v",{dryRun:!1})}catch{r="npm"}return await this.shell.exec(["pnpm"===r?"pnpm dlx":"npx","@changesets/cli",t,...e??[]])}}function xi(t,...e){return[t,...e]}const ki={maxWorkspace:3,multiWorkspaceSeparator:"_",workspaceVersionSeparator:"@",batchBranchName:"batch-${releaseName}-${length}-packages-${timestamp}",batchTagName:"batch-${length}-packages-${timestamp}"};class Pi{shell;logger;config;constructor(t,e,r={}){this.shell=t,this.logger=e,this.config={...ki,...r}}getReleaseBranchName(t,e,r){const n=r.branchName||"release-${tagName}";if("string"!=typeof n)throw new Error("Branch name template is not a string");return this.logger.debug("Release Branch template is:",n),this.shell.format(n,{pkgName:t,releaseName:t,tagName:e,...r})}getBatchReleaseBranchName(t,e,r,n){const o=this.config.batchBranchName;if("string"!=typeof o)throw new Error("Branch name template is not a string");return this.logger.debug("Release Batch Branch template is:",o),this.shell.format(o,{pkgName:t,releaseName:t,tagName:e,...r,length:n,timestamp:Date.now()})}getReleaseName(t){if(1===t.length)return t[0].name;const{maxWorkspace:e,multiWorkspaceSeparator:r,workspaceVersionSeparator:n}=this.config;return t.slice(0,e).map((({name:t,version:e})=>`${t}${n}${e}`)).join(r)}getReleaseTagName(t){if(1===t.length)return t[0].version;const{batchTagName:e}=this.config;return this.shell.format(e,{length:t.length,timestamp:Date.now()})}getReleaseBranchParams(t,e){const r=this.getReleaseTagName(t),n=this.getReleaseName(t);return{tagName:r,releaseBranch:t.length>1?this.getBatchReleaseBranchName(n,r,e,t.length):this.getReleaseBranchName(n,r,e)}}getPRTitle(t,e){const r=this.config.PRTitle||"Release ${env} ${pkgName} ${tagName}";return this.shell.format(r,{...e,tagName:t.tagName,pkgName:t.releaseBranch})}getPRBody(t,e,r){const n=this.config.PRBody,o=t.length>1?t.map((t=>this.shell.format("\n## ${name} ${version}\n${changelog}\n",t))).join("\n"):t[0].changelog,{workspaceVersionSeparator:i}=this.config,s=1===t.length?e.tagName:t.map((t=>`${t.name}${i}${t.version}`)).join(" ");return this.shell.format(n,{...r,tagName:s,changelog:o})}}class Ci{context;_octokit=null;constructor(t){this.context=t}getGitHubUserInfo(){const{authorName:t,repoName:e}=this.context.shared;if(!t||!e)throw new Error("Author name or repo name is not set");return{owner:t,repo:e}}getToken(){const{tokenRef:t="GITHUB_TOKEN"}=this.context.getConfig("githubPR"),e=this.context.env.get(t);if(!e)throw new Error(`Token is not set. Please set ${t} environment variable.`);return e}get octokit(){if(this._octokit)return this._octokit;const{timeout:t}=this.context.getConfig("githubPR"),e={auth:this.getToken(),request:{timeout:t}};return this._octokit=new n(e),this._octokit}get logger(){return this.context.logger}get shell(){return this.context.shell}get autoMergeType(){return this.context.shared.autoMergeType||"squash"}get dryRunPRNumber(){return this.context.getConfig("githubPR.dryRunPRNumber","999999")}get autoMergeReleasePR(){return this.context.shared.autoMergeReleasePR||false}async mergePR(t,e){if(!t)return void this.logger.error("Failed to create Pull Request.",t);const r=this.autoMergeType;if(this.context.dryRun){const{repoName:n,authorName:o}=this.context.shared;this.logger.info(`[DRY RUN] Would merge PR #${t} with method '${r}' in repo ${o}/${n}, branch ${e}`)}else await this.octokit.rest.pulls.merge({...this.getGitHubUserInfo(),pull_number:Number(t),merge_method:r})}async checkedPR(t,e){try{await this.octokit.rest.pulls.get({...this.getGitHubUserInfo(),pull_number:Number(t)}),await this.octokit.rest.git.deleteRef({...this.getGitHubUserInfo(),ref:`heads/${e}`}),this.logger.info(`Branch ${e} has been deleted`)}catch(r){if(404===r.status)return void this.logger.warn(`PR #${t} or branch ${e} not found`);throw this.logger.error("Failed to check PR or delete branch",r),r}}async createReleasePRLabel(){const t=this.context.shared.label;if(!(t&&t.name&&t.description&&t.color))throw new Error("Label is not valid, skipping creation");if(this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR label with:",t),t;try{const e=await this.octokit.rest.issues.createLabel({...this.getGitHubUserInfo(),name:t.name,description:t.description,color:t.color.replace("#","")});return this.logger.debug("Create PR label Success",e),t}catch(e){if(422===e.status)return this.logger.warn(`Label ${t.name} already exists, skipping!`),t;throw this.logger.error("Create PR label Failed",e),e}}async createReleasePR(t){if(this.context.getConfig("githubPR.dryRunCreatePR")||this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR with:",{...t,labels:t.labels}),this.dryRunPRNumber;try{const e=await this.octokit.rest.pulls.create({...this.getGitHubUserInfo(),...t}),r=e.data.number;if(!r)throw new Error("CreateReleasePR Failed, prNumber is empty");if(this.logger.debug("Create PR Success",[e?.url]),t.labels&&t.labels.length){const e=await this.octokit.rest.issues.addLabels({...this.getGitHubUserInfo(),issue_number:r,labels:t.labels});this.logger.debug("Add PR label Success",[e.url])}return r.toString()}catch(t){if(422===t.status&&t.message.includes("already exists")){this.logger.warn("PR already exists");const e=t.message.match(/pull request #(\d+)/);return e?e[1]:""}throw this.logger.error("Failed to create PR",t),t}}truncateBody(t){return t&&t.length>=124e3?t.substring(0,124e3)+"...":t}getOctokitReleaseOptions(t){const{releaseName:e,draft:r=!1,preRelease:n=!1,autoGenerate:o=!1,makeLatest:i=!0,releaseNotes:s,discussionCategoryName:a}=this.context.getConfig("githubPR"),c=e,u=o?"":this.truncateBody(String(s));return{name:c,make_latest:i.toString(),body:u,draft:r,prerelease:n,generate_release_notes:o,discussion_category_name:a,tag_name:"",...t,...this.getGitHubUserInfo()}}async createRelease(t){const e=this.getOctokitReleaseOptions({tag_name:t.tagName,body:t.changelog});if(e.name=this.shell.format(e.name,t),this.logger.log(`[DRY RUN] octokit repos.createRelease "${e.name}" (${e.tag_name})`,{isDryRun:this.context.dryRun}),!e.tag_name)throw new Error("TagName is undefined");if(!this.context.dryRun)try{const t=await this.octokit.repos.createRelease(e);this.logger.debug(`[DONE] octokit repos.createRelease "${e.name}" (${e.tag_name}) (${t.headers.location})`)}catch(t){this.logger.error(`[FAILED] octokit repos.createRelease "${e.name}" (${e.tag_name})`,t)}}}var $i,Ni;function ji(){if(Ni)return $i;Ni=1;var t=xe(),e=Jr(),r=Ir();return $i=function(n){return"string"==typeof n||!e(n)&&r(n)&&"[object String]"==t(n)}}var Ei=ie(ji());class Bi{context;pluginName;props;onlyOne=!0;constructor(t,e,r={}){this.context=t,this.pluginName=e,this.props=r,this.setConfig(this.getInitialProps(r))}getInitialProps(t){const e=this.context.options[this.pluginName],r=vi(this.context.shared,this.pluginName);return e||t?si({},r,t,e):{}}get logger(){return this.context.logger}get shell(){return this.context.shell}get options(){return this.context.getConfig(this.pluginName,{})}getEnv(t,e){return this.context.env.get(t)??e}enabled(t,e){return!0}getConfig(t,e){return t?this.context.getConfig([this.pluginName,...Array.isArray(t)?t:[t]],e):this.context.getConfig(this.pluginName,e)}setConfig(t){this.context.setConfig({[this.pluginName]:t})}onBefore(t){}onExec(t){}onSuccess(t){}onError(t){}async step({label:t,task:e}){this.logger.log(),this.logger.info(t),this.logger.log();try{const r=await e();return this.logger.info(`${t} - success`),r}catch(t){throw this.logger.error(t),t}}}class Ti extends Bi{async onBefore(){const t=await this.getUserInfo();if(!t)throw new Error("Failed to get repoInfo");let e=this.context.shared.currentBranch;e||(e=await this.getCurrentBranch()),e&&await this.context.shell.exec(`git checkout ${e}`,{dryRun:!1}),this.context.setShared({repoName:t.repoName,authorName:t.authorName,currentBranch:e})}async getCurrentBranch(){return await new Promise((t=>setTimeout(t,100))),this.context.shell.exec("git rev-parse --abbrev-ref HEAD",{dryRun:!1})}async getRemoteUrl(){return(await this.context.shell.exec("git config --get remote.origin.url",{dryRun:!1})).trim()}async getUserInfo(){let t;try{t=await this.getRemoteUrl()}catch{throw new Error("Failed to get git remote url. Please ensure this is a git repository with a valid remote.")}if(!t)throw new Error("Git remote URL is empty. Please set a valid GitHub remote URL.");this.context.logger.debug("repoUrl: ",t);const e=t.match(/github\.com[:/]([^/]+)\/([^/.]+)(?:\.git)?$/);if(!e)throw new Error("Invalid GitHub repository URL format. Please ensure the remote URL is from GitHub.");const[,r,n]=e;if(!this.isValidString(r)||!this.isValidString(n))throw new Error("Failed to extract owner or repository name from GitHub URL");return{repoName:n,authorName:r}}isValidString(t){return!!t&&Ei(t)}commit(t,e=[]){return this.context.shell.exec(["git","commit","--message",JSON.stringify(t),...e])}}class Oi{options;constructor(t){this.options=t}compare(t,e){return"function"==typeof this.options.compare?this.options.compare(t,e):t.startsWith(e)}toChangeLabel(t,e=this.options.changePackagesLabel){return e.replace("${name}",t)}toChangeLabels(t,e=this.options.changePackagesLabel){return t.map((t=>this.toChangeLabel(t,e)))}pick(t,e=this.options.packagesDirectories){const r=[];for(const n of e)for(const e of t)if(this.compare(e,n)){r.push(n);break}return r}}class Ai{static readJson(t){const e=a(t,"utf-8");return JSON.parse(e)}static toWorkspace(t,e){let{root:r,packageJson:n}=t;const o=t.path;if(!o)throw new Error("path is not required!");return r=r||h(e,o),n=n||Ai.readJson(h(r,wi)),{name:n.name,version:n.version,path:o,root:r,packageJson:n}}}class Si extends Bi{releaseTask=null;workspacesList=[];_skip=!1;releaseLabel;constructor(t){super(t,"workspaces"),this.releaseLabel=new Oi({changePackagesLabel:this.context.shared.changePackagesLabel||"change:${name}",packagesDirectories:this.context.shared.packagesDirectories||[]})}enabled(){return!this._skip&&!this.getConfig("skip")}async onBefore(){const t=this.getConfig("workspace");if(t)return this.logger.debug("Use the specified workspace",t),void this.setCurrentWorkspace(t,[]);const e=await this.getWorkspaces();if(this.getConfig("skipCheckPackage")||0===e.length)throw new Error("No changes to publish packages");const{publishPath:r}=this.context.shared;if(r){const t=e.find((t=>o(t.root)===o(r)));if(this.nextSkip(),!t)throw new Error(`No workspace found for: ${r}`);return this.logger.debug(`Workspace of ${r} find!`,i(t.root,wi)),void this.setCurrentWorkspace(t,[t])}const[n,...s]=e;this.workspacesList=s,this.setCurrentWorkspace(n,e)}nextSkip(){this._skip=!0,this.logger.debug("skip next workspace")}setReleaseTask(t){this.releaseTask=t}setCurrentWorkspace(t,e){this.context.setShared({publishPath:t.path}),this.setConfig({workspace:t,workspaces:e})}getPackages(){const t=this.context.shared.packagesDirectories;return Array.isArray(t)?t:[]}async getGitWorkspaces(){const t=this.context.sourceBranch,e=await this.shell.exec(`git diff --name-only origin/${t}...HEAD`,{dryRun:!1});return"string"==typeof e?e.split("\n"):[]}async getChangedPackages(t,e){if(this.logger.debug("changeLabels",e),Array.isArray(e)&&e.length>0){const r=t.filter((t=>{const r=this.releaseLabel.toChangeLabel(t);return e.includes(r)}));return this.logger.debug("changed by labels",r),r}const r=await this.getGitWorkspaces();return this.logger.debug("changed by git",r),this.releaseLabel.pick(r,t)}async getWorkspaces(){const t=this.getPackages();this.logger.debug("packages",t);const e=await this.getChangedPackages(t,this.getConfig("changeLabels"));this.logger.debug("changedPaths",e);return e.map((t=>Ai.toWorkspace({path:t},this.context.rootPath)))}}function Li(t,...e){return"function"==typeof t&&t.prototype&&t.prototype.constructor===t?new t(...e):t(...e)}function Ui(t){return t.startsWith(".")?s(t).name:t}async function Wi(t){let e=null;try{e=(await import(t)).default}catch{try{e=(await import(i(process.cwd(),t))).default}catch{const r=l(process.cwd());e=(await import(f(r.resolve(t,{paths:[process.cwd()]})).href)).default}}return[Ui(t),e]}async function Fi(t,e,r=5){const n=g(r),o=e.map((([e,...r])=>n((()=>(async(e,...r)=>{if("string"==typeof e){const[,n]=await Wi(e);return Li(n,t,...r)}return Li(e,t,...r)})(e,...r)))));return Promise.all(o)}const Mi="- ${message}${prRef}\n",Gi="%H%n%s%n%b%n----------------------";class Hi{formatFlatCommits(t,e,r){const{types:n=[],formatTemplate:o=Mi}=e,i=new Map;for(const e of t){const t=e.type||"other";i.has(t)||i.set(t,[]),i.get(t).push(e)}const s=[];for(const{type:t,section:e,hidden:a}of n){if(a)continue;const n=i.get(t);if(n?.length){s.push(`${e||t}`);for(const t of n){const e=t.prNumber?` (#${t.prNumber})`:"";if(s.push(r.format(o,{...t,prRef:e})),t.body){const e=t.body.split("\n").map((t=>` ${t}`));s.push(e.join("\n"))}}}}return s}}class Di{shell;options;constructor(t,e){this.shell=t,this.options=e}parseCommitBody(t){const e=t.split("\n").filter(Boolean),r=[];let n=null;for(let t=0;t<e.length;t++){const o=e[t].trim();if(o.startsWith("Co-authored-by:")||"---------"===o||0===o.length)continue;const i=o.match(/^\*?\s*(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);if(i&&o.startsWith("*")){n&&r.push({...n,body:n.bodyLines?.join("\n").trim()});const[t,e,s,a]=i;n={matchRaw:t,raw:o,type:e?.toLowerCase(),scope:s?.trim(),message:a.trim(),bodyLines:[]}}else n&&o.startsWith("-")&&n.bodyLines?.push(o)}return n&&r.push({...n,body:n.bodyLines?.join("\n").trim()}),r}async getPRCommits(t){const{from:e,to:r,directory:n,format:o}={...this.options,...t};return(await this.getLog({from:e,to:r,directory:n,format:o,noMerges:!1})).split("\n----------------------\n").filter(Boolean).map((t=>{const[e,r,...n]=t.trim().split("\n"),o=n.join("\n"),i=r.match(/\(#(\d+)\)/),s=r.replace(/\s*\(#\d+\)\s*$/,"").match(/^(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);return{hash:e,raw:{title:r,body:o},title:s?{type:s[1]?.toLowerCase(),scope:s[2]?.trim(),message:s[3].trim()}:{message:r.replace(/\s*\(#\d+\)\s*$/,"").trim()},commits:this.parseCommitBody(o),prNumber:i?.[1]}}))}async hasTag(t){return this.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((()=>!0)).catch((()=>!1))}async resolveTag(t,e){if(t)try{if(await this.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((t=>!!t.trim())))return t}catch{}return"root"===e?this.shell.exec("git rev-list --max-parents=0 HEAD",{dryRun:!1}).then((t=>t.trim())):"HEAD"}async getLog(t){const{directory:e,format:r=Gi,noMerges:n=!0}=t;if(t.logCommand)return this.shell.exec(t.logCommand,{dryRun:!1});const o=await this.resolveTag(t.from,"root"),i=await this.resolveTag(t.to,"HEAD"),s=`git log --pretty=format:"${r}" ${n?"--no-merges":""} ${o===i?i:`${o}..${i}`} ${e?`-- "${e}"`:""}`;return this.shell.exec(s.trim(),{dryRun:!1})}flatCommits(t){const e=[];for(const r of t){const t={title:r.title,raw:r.raw,hash:r.hash,prNumber:r.prNumber};if(Array.isArray(r.commits)&&r.commits.length>0){const n=r.commits.map((e=>({...e,prNumber:r.prNumber,hash:r.hash,parentHash:r.hash,parentCommit:t})));e.push(...n)}else e.push({raw:r.raw.title,type:r.title.type,scope:r.title.scope,message:r.title.message,body:r.raw.body,prNumber:r.prNumber,hash:r.hash,parentHash:r.hash,parentCommit:t})}return e}formatFlatCommits(t,e){const{types:r=[],formatter:n}={...this.options,...e};return(n||new Hi).formatFlatCommits(t,{types:r},this.shell)}}const zi=[xi(Si),xi(class extends Bi{constructor(t,e){super(t,"changelog",{increment:"patch",changesetRoot:".changeset",tagTemplate:"${name}@${version}",tagPrefix:"${name}",tagMatch:"${name}@*",...e})}get changesetRoot(){return h(this.context.rootPath,this.getConfig("changesetRoot"))}enabled(){return!this.getConfig("skip")}async onBefore(){if(!c(this.changesetRoot))throw new Error(`Changeset directory ${this.changesetRoot} does not exist`);this.logger.debug(`${this.changesetRoot} exists`)}mergeWorkspaces(t){return t.map((t=>{const e=Ai.toWorkspace({path:t.path},this.context.rootPath),r={...t,version:e.version};return r.tagName=this.generateTagName(r),r}))}async onExec(){const t=await this.step({label:"Generate Changelogs",task:()=>Promise.all(this.context.workspaces.map((t=>this.generateChangelog(t))))});this.getConfig("skipChangeset")?this.logger.debug("Skip generate changeset files"):(await this.step({label:"Changeset Version",task:()=>Promise.all(t.map((t=>this.generateChangesetFile(t))))}),await this.context.runChangesetsCli("version",["--no-changelog","--update-dependencies"]));const e=this.mergeWorkspaces(t);this.logger.debug("new workspaces",e),this.context.setWorkspaces(e)}getTagPrefix(t){return this.shell.format(this.getConfig("tagPrefix"),t)}async createChangelog({lastTag:t,workspace:e}){const r=new Di(this.context.shell,{...this.getConfig("gitChangelogOptions"),from:t,directory:e.path});return r.getPRCommits().then((t=>{const e=r.flatCommits(t);return r.formatFlatCommits(e).join("\n")}))}async generateChangelog(t){const e=await this.getTagName(t);this.logger.debug("tagName is:",e);const r=await this.createChangelog({workspace:t,lastTag:e});return{...t,lastTag:e,changelog:r}}generateTagName(t){try{const e=this.getConfig("tagTemplate");return this.shell.format(e,t)}catch(e){return console.error(`Error generating tag name for ${t.name}:`,e),`${t.name}-v0.0.0`}}async getTagName(t){try{const e=this.generateTagName(t),r=this.shell.format(this.getConfig("tagMatch"),t),n=await this.shell.exec(`git for-each-ref --sort=-creatordate --format "%(refname:short)|%(creatordate:iso8601)" "refs/tags/${r}"`,{dryRun:!1});if(!n)return e;const o=n.split("\n").filter(Boolean);if(0===o.length)return e;return o[0].split("|")[0]}catch(e){console.error(`Error getting tag for ${t.name}:`,e);return this.generateTagName(t)}}getIncrement(){const t=this.context.getConfig("workspaces.changeLabels");if(Array.isArray(t)&&t.length>0){if(t.includes("increment:major"))return"major";if(t.includes("increment:minor"))return"minor"}return this.getConfig("increment","patch")}async generateChangesetFile(t){const{name:e,version:r}=t,n=`${e}-${r}`.replace(/[\/\\]/g,"_"),o=h(this.changesetRoot,`${n}.md`),i=this.getIncrement();this.logger.debug("increment is:",[i]);const s=this.shell.format("---\n'${name}': '${increment}'\n---\n\n${changelog}",{...t,increment:i});if(this.context.dryRun)return this.logger.info(`Changeset [${o}] will be created, content is:`),void this.logger.log(s);c(o)?this.logger.info(`Changeset ${n} already exists`):u(o,s,"utf-8")}},{}),xi(class extends Ti{context;releaseParams;githubManager;constructor(t,e){super(t,"githubPR",{releaseName:"Release ${name} v${version}",...e}),this.context=t,this.githubManager=new Ci(this.context),this.releaseParams=new Pi(t.shell,t.logger,{PRTitle:this.getConfig("PRTitle",this.context.shared.PRTitle),PRBody:this.getConfig("PRBody",this.context.shared.PRBody),...this.props})}enabled(t){return!this.getConfig("skip")&&("onExec"===t?!this.isPublish:"onSuccess"!==t||this.isPublish)}get isPublish(){return!this.getConfig("releasePR")}async isGithubRepository(){try{return(await this.getRemoteUrl()).includes("github.com")}catch{return!1}}async onBefore(){this.logger.debug("GithubPR onBefore");if(!await this.isGithubRepository())throw new Error("Current repository is not a GitHub repository. GitHub PR workflow is only available for GitHub repositories.");if(await super.onBefore(),this.isPublish){const t=this.getEnv("NPM_TOKEN");if(!t)throw new Error("NPM_TOKEN is not set");await this.shell.exec(`npm config set //registry.npmjs.org/:_authToken=${t}`)}}async onExec(){const t=this.context.workspaces;await this.step({label:"Release Commit",task:()=>this.relesaeCommit(t)});const e=await this.step({label:"Create Release Branch",task:()=>this.createReleaseBranch(t)});await this.releasePullRequest(t,e)}async onSuccess(){const t=this.context.workspaces;this.getConfig("dryRunCreatePR")||(await this.context.runChangesetsCli("publish"),await this.shell.exec("git push origin --tags")),await this.step({label:"Release Github",task:()=>Promise.all(t.map((t=>(this.logger.debug(t),this.githubManager.createRelease(t)))))})}async relesaeCommit(t){const e=this.getConfig("commitArgs",[]);if(1===t.length)return await this.shell.exec("git add ."),void await this.commitWorkspace(t[0],e);await this.shell.exec("git add .");const r=`chore(tag): ${t.map((t=>`${t.name} v${t.version}`)).join(",")}`;await this.commit(r,e)}async releasePullRequest(t,e){const r=await this.step({label:"Create Release PR",task:()=>this.createReleasePR(t,e)});if(this.githubManager.autoMergeReleasePR){const{releaseBranch:t}=e;return await this.step({label:`Merge Release PR(${r})`,task:()=>this.githubManager.mergePR(r,t)}),void await this.step({label:`Checked Release PR(${r})`,task:()=>this.githubManager.checkedPR(r,t)})}this.logger.info(`Please manually merge PR(#${r}) and complete the publishing process afterwards`)}async commitWorkspace(t,e=[]){const r=this.shell.format(this.getConfig("commitMessage","chore(tag): ${name} v${version}"),t);return await this.commit(r,e)}async createReleaseBranch(t){const e=this.releaseParams.getReleaseBranchParams(t,this.context.getTemplateContext()),{tagName:r,releaseBranch:n}=e;if("string"!=typeof r)throw new Error("Tag name is not a string");const{sourceBranch:o,currentBranch:i}=this.context.shared;this.context.logger.debug("PR TagName is:",r),this.context.logger.debug("PR CurrentBranch is:",i),this.context.logger.debug("PR SourceBranch is:",o),this.context.logger.debug("PR ReleaseBranch is:",n);try{await this.context.shell.exec(`git fetch origin ${o} ${i}`),await this.context.shell.exec(`git checkout -b ${n} ${i}`),await this.context.shell.exec(`git push origin ${n}`)}catch(t){throw t.message.includes("remote: Permission to ")&&this.context.logger.warn('Token maybe not allow Workflow permissions, can you try to open "Workflow permissions" -> "Read and write permissions" for this token?'),t}return{tagName:r,releaseBranch:n}}async createReleasePR(t,e){let r=[(await this.githubManager.createReleasePRLabel()).name];if(this.getConfig("pushChangeLabels")){const t=this.context.getConfig("workspaces.changeLabels");Array.isArray(t)&&t.length>0&&r.push(...t)}r=Array.from(new Set(r)),this.logger.debug("Release PR labels:",r);const n=this.context.getTemplateContext(),o=this.releaseParams.getPRTitle(e,n),i=this.releaseParams.getPRBody(t,e,n);return this.githubManager.createReleasePR({title:o,body:i,base:this.context.sourceBranch,head:e.releaseBranch,labels:r})}},{})];class Ii{executor;defaultTuples;context;constructor(t={},e=new r,n=zi){this.executor=e,this.defaultTuples=n,this.context=new _i(t)}getContext(){return this.context}async usePlugins(t){t=t||this.context.shared.plugins||[];const e=await Fi(this.context,[...this.defaultTuples,...t]);return e.forEach((t=>{t instanceof Si&&t.setReleaseTask(this),this.executor.use(t)})),e}async run(){return this.executor.exec(this.context,(t=>Promise.resolve(t)))}async exec(t){if("false"===this.context.env.get("FE_RELEASE"))throw new Error("Skip Release");return await this.usePlugins(t),this.run()}}var qi,Vi,Ji,Yi;function Ki(){if(Vi)return qi;Vi=1;var t=go(),e=mi(),r=yo(),n=ke(),o=di();return qi=function(i,s,a,c){if(!n(i))return i;for(var u=-1,h=(s=e(s,i)).length,l=h-1,f=i;null!=f&&++u<h;){var g=o(s[u]),p=a;if("__proto__"===g||"constructor"===g||"prototype"===g)return i;if(u!=l){var m=f[g];void 0===(p=c?c(m,g,f):void 0)&&(p=n(m)?m:r(s[u+1])?[]:{})}t(f,g,p),f=f[g]}return i}}function Qi(){if(Yi)return Ji;Yi=1;var t=Ki();return Ji=function(e,r,n){return null==e?e:t(e,r,n)}}var Xi=ie(Qi());function Zi(t,e){return Object.entries(t).reduce(((t,[r,n])=>(r.includes(".")?Xi(t,r,n):Xi(t,e?`${e}.${r}`:r,n),t)),{})}export{Bi as Plugin,_i as ReleaseContext,Oi as ReleaseLabel,Ii as ReleaseTask,Li as factory,Wi as load,Fi as loaderPluginsFromPluginTuples,Zi as reduceOptions,xi as tuple};
1
+ import{FeScriptContext as t}from"@qlover/scripts-context";import{Env as e}from"@qlover/env-loader";import{AsyncExecutor as r}from"@qlover/fe-corekit";import{Octokit as n}from"@octokit/rest";import{resolve as o,join as i,parse as s}from"node:path";import{readFileSync as a,existsSync as c,writeFileSync as u}from"fs";import{join as h}from"path";import{createRequire as l}from"node:module";import{pathToFileURL as g}from"node:url";import f from"p-limit";var p,m,d,y,b,v,w,R,k,x,_,P,C,$,N,j,E,B,T,O,A,S,L,U,W,F,M,G,H,I,D,z,q,V,J,Y,K,Q,X,Z,tt,et,rt,nt,ot,it,st,at,ct,ut,ht,lt,gt,ft,pt,mt,dt,yt,bt,vt,wt,Rt,kt,xt,_t,Pt,Ct,$t,Nt,jt,Et,Bt,Tt,Ot,At,St,Lt,Ut,Wt,Ft,Mt,Gt,Ht,It,Dt,zt,qt,Vt,Jt,Yt,Kt,Qt,Xt,Zt,te,ee,re,ne,oe="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function ie(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function se(){if(m)return p;return m=1,p=function(){this.__data__=[],this.size=0}}function ae(){if(y)return d;return y=1,d=function(t,e){return t===e||t!=t&&e!=e}}function ce(){if(v)return b;v=1;var t=ae();return b=function(e,r){for(var n=e.length;n--;)if(t(e[n][0],r))return n;return-1}}function ue(){if(R)return w;R=1;var t=ce(),e=Array.prototype.splice;return w=function(r){var n=this.__data__,o=t(n,r);return!(o<0)&&(o==n.length-1?n.pop():e.call(n,o,1),--this.size,!0)}}function he(){if(x)return k;x=1;var t=ce();return k=function(e){var r=this.__data__,n=t(r,e);return n<0?void 0:r[n][1]}}function le(){if(P)return _;P=1;var t=ce();return _=function(e){return t(this.__data__,e)>-1}}function ge(){if($)return C;$=1;var t=ce();return C=function(e,r){var n=this.__data__,o=t(n,e);return o<0?(++this.size,n.push([e,r])):n[o][1]=r,this}}function fe(){if(j)return N;j=1;var t=se(),e=ue(),r=he(),n=le(),o=ge();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,N=i}function pe(){if(B)return E;B=1;var t=fe();return E=function(){this.__data__=new t,this.size=0}}function me(){if(O)return T;return O=1,T=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}}function de(){if(S)return A;return S=1,A=function(t){return this.__data__.get(t)}}function ye(){if(U)return L;return U=1,L=function(t){return this.__data__.has(t)}}function be(){if(F)return W;F=1;var t="object"==typeof oe&&oe&&oe.Object===Object&&oe;return W=t}function ve(){if(G)return M;G=1;var t=be(),e="object"==typeof self&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return M=r}function we(){if(I)return H;I=1;var t=ve().Symbol;return H=t}function Re(){if(z)return D;z=1;var t=we(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,o=t?t.toStringTag:void 0;return D=function(t){var e=r.call(t,o),i=t[o];try{t[o]=void 0;var s=!0}catch(t){}var a=n.call(t);return s&&(e?t[o]=i:delete t[o]),a}}function ke(){if(V)return q;V=1;var t=Object.prototype.toString;return q=function(e){return t.call(e)}}function xe(){if(Y)return J;Y=1;var t=we(),e=Re(),r=ke(),n=t?t.toStringTag:void 0;return J=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":n&&n in Object(t)?e(t):r(t)}}function _e(){if(Q)return K;return Q=1,K=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}}function Pe(){if(Z)return X;Z=1;var t=xe(),e=_e();return X=function(r){if(!e(r))return!1;var n=t(r);return"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n}}function Ce(){if(et)return tt;et=1;var t=ve()["__core-js_shared__"];return tt=t}function $e(){if(nt)return rt;nt=1;var t,e=Ce(),r=(t=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||""))?"Symbol(src)_1."+t:"";return rt=function(t){return!!r&&r in t}}function Ne(){if(it)return ot;it=1;var t=Function.prototype.toString;return ot=function(e){if(null!=e){try{return t.call(e)}catch(t){}try{return e+""}catch(t){}}return""}}function je(){if(at)return st;at=1;var t=Pe(),e=$e(),r=_e(),n=Ne(),o=/^\[object .+?Constructor\]$/,i=Function.prototype,s=Object.prototype,a=i.toString,c=s.hasOwnProperty,u=RegExp("^"+a.call(c).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return st=function(i){return!(!r(i)||e(i))&&(t(i)?u:o).test(n(i))}}function Ee(){if(ut)return ct;return ut=1,ct=function(t,e){return null==t?void 0:t[e]}}function Be(){if(lt)return ht;lt=1;var t=je(),e=Ee();return ht=function(r,n){var o=e(r,n);return t(o)?o:void 0}}function Te(){if(ft)return gt;ft=1;var t=Be()(ve(),"Map");return gt=t}function Oe(){if(mt)return pt;mt=1;var t=Be()(Object,"create");return pt=t}function Ae(){if(yt)return dt;yt=1;var t=Oe();return dt=function(){this.__data__=t?t(null):{},this.size=0}}function Se(){if(vt)return bt;return vt=1,bt=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}}function Le(){if(Rt)return wt;Rt=1;var t=Oe(),e=Object.prototype.hasOwnProperty;return wt=function(r){var n=this.__data__;if(t){var o=n[r];return"__lodash_hash_undefined__"===o?void 0:o}return e.call(n,r)?n[r]:void 0}}function Ue(){if(xt)return kt;xt=1;var t=Oe(),e=Object.prototype.hasOwnProperty;return kt=function(r){var n=this.__data__;return t?void 0!==n[r]:e.call(n,r)}}function We(){if(Pt)return _t;Pt=1;var t=Oe();return _t=function(e,r){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=t&&void 0===r?"__lodash_hash_undefined__":r,this}}function Fe(){if($t)return Ct;$t=1;var t=Ae(),e=Se(),r=Le(),n=Ue(),o=We();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,Ct=i}function Me(){if(jt)return Nt;jt=1;var t=Fe(),e=fe(),r=Te();return Nt=function(){this.size=0,this.__data__={hash:new t,map:new(r||e),string:new t}}}function Ge(){if(Bt)return Et;return Bt=1,Et=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}}function He(){if(Ot)return Tt;Ot=1;var t=Ge();return Tt=function(e,r){var n=e.__data__;return t(r)?n["string"==typeof r?"string":"hash"]:n.map}}function Ie(){if(St)return At;St=1;var t=He();return At=function(e){var r=t(this,e).delete(e);return this.size-=r?1:0,r}}function De(){if(Ut)return Lt;Ut=1;var t=He();return Lt=function(e){return t(this,e).get(e)}}function ze(){if(Ft)return Wt;Ft=1;var t=He();return Wt=function(e){return t(this,e).has(e)}}function qe(){if(Gt)return Mt;Gt=1;var t=He();return Mt=function(e,r){var n=t(this,e),o=n.size;return n.set(e,r),this.size+=n.size==o?0:1,this}}function Ve(){if(It)return Ht;It=1;var t=Me(),e=Ie(),r=De(),n=ze(),o=qe();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,Ht=i}function Je(){if(zt)return Dt;zt=1;var t=fe(),e=Te(),r=Ve();return Dt=function(n,o){var i=this.__data__;if(i instanceof t){var s=i.__data__;if(!e||s.length<199)return s.push([n,o]),this.size=++i.size,this;i=this.__data__=new r(s)}return i.set(n,o),this.size=i.size,this}}function Ye(){if(Vt)return qt;Vt=1;var t=fe(),e=pe(),r=me(),n=de(),o=ye(),i=Je();function s(e){var r=this.__data__=new t(e);this.size=r.size}return s.prototype.clear=e,s.prototype.delete=r,s.prototype.get=n,s.prototype.has=o,s.prototype.set=i,qt=s}function Ke(){if(Yt)return Jt;Yt=1;var t=Be(),e=function(){try{var e=t(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();return Jt=e}function Qe(){if(Qt)return Kt;Qt=1;var t=Ke();return Kt=function(e,r,n){"__proto__"==r&&t?t(e,r,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[r]=n}}function Xe(){if(Zt)return Xt;Zt=1;var t=Qe(),e=ae();return Xt=function(r,n,o){(void 0!==o&&!e(r[n],o)||void 0===o&&!(n in r))&&t(r,n,o)}}function Ze(){if(ee)return te;return ee=1,te=function(t){return function(e,r,n){for(var o=-1,i=Object(e),s=n(e),a=s.length;a--;){var c=s[t?a:++o];if(!1===r(i[c],c,i))break}return e}}}function tr(){if(ne)return re;ne=1;var t=Ze()();return re=t}var er,rr,nr,or,ir,sr,ar,cr,ur,hr,lr,gr,fr,pr,mr,dr,yr,br,vr,wr,Rr,kr,xr,_r,Pr,Cr,$r,Nr,jr,Er,Br,Tr,Or,Ar={exports:{}};function Sr(){return er||(er=1,t=Ar,e=Ar.exports,r=ve(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n?r.Buffer:void 0,s=i?i.allocUnsafe:void 0,t.exports=function(t,e){if(e)return t.slice();var r=t.length,n=s?s(r):new t.constructor(r);return t.copy(n),n}),Ar.exports;var t,e,r,n,o,i,s}function Lr(){if(nr)return rr;nr=1;var t=ve().Uint8Array;return rr=t}function Ur(){if(ir)return or;ir=1;var t=Lr();return or=function(e){var r=new e.constructor(e.byteLength);return new t(r).set(new t(e)),r}}function Wr(){if(ar)return sr;ar=1;var t=Ur();return sr=function(e,r){var n=r?t(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}}function Fr(){if(ur)return cr;return ur=1,cr=function(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r<n;)e[r]=t[r];return e}}function Mr(){if(lr)return hr;lr=1;var t=_e(),e=Object.create,r=function(){function r(){}return function(n){if(!t(n))return{};if(e)return e(n);r.prototype=n;var o=new r;return r.prototype=void 0,o}}();return hr=r}function Gr(){if(fr)return gr;return fr=1,gr=function(t,e){return function(r){return t(e(r))}}}function Hr(){if(mr)return pr;mr=1;var t=Gr()(Object.getPrototypeOf,Object);return pr=t}function Ir(){if(yr)return dr;yr=1;var t=Object.prototype;return dr=function(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||t)}}function Dr(){if(vr)return br;vr=1;var t=Mr(),e=Hr(),r=Ir();return br=function(n){return"function"!=typeof n.constructor||r(n)?{}:t(e(n))}}function zr(){if(Rr)return wr;return Rr=1,wr=function(t){return null!=t&&"object"==typeof t}}function qr(){if(xr)return kr;xr=1;var t=xe(),e=zr();return kr=function(r){return e(r)&&"[object Arguments]"==t(r)}}function Vr(){if(Pr)return _r;Pr=1;var t=qr(),e=zr(),r=Object.prototype,n=r.hasOwnProperty,o=r.propertyIsEnumerable,i=t(function(){return arguments}())?t:function(t){return e(t)&&n.call(t,"callee")&&!o.call(t,"callee")};return _r=i}function Jr(){if($r)return Cr;$r=1;var t=Array.isArray;return Cr=t}function Yr(){if(jr)return Nr;jr=1;return Nr=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}}function Kr(){if(Br)return Er;Br=1;var t=Pe(),e=Yr();return Er=function(r){return null!=r&&e(r.length)&&!t(r)}}function Qr(){if(Or)return Tr;Or=1;var t=Kr(),e=zr();return Tr=function(r){return e(r)&&t(r)}}var Xr,Zr,tn,en,rn,nn,on,sn,an,cn={exports:{}};function un(){if(Zr)return Xr;return Zr=1,Xr=function(){return!1}}function hn(){return tn||(tn=1,function(t,e){var r=ve(),n=un(),o=e&&!e.nodeType&&e,i=o&&t&&!t.nodeType&&t,s=i&&i.exports===o?r.Buffer:void 0,a=(s?s.isBuffer:void 0)||n;t.exports=a}(cn,cn.exports)),cn.exports}function ln(){if(rn)return en;rn=1;var t=xe(),e=Hr(),r=zr(),n=Function.prototype,o=Object.prototype,i=n.toString,s=o.hasOwnProperty,a=i.call(Object);return en=function(n){if(!r(n)||"[object Object]"!=t(n))return!1;var o=e(n);if(null===o)return!0;var c=s.call(o,"constructor")&&o.constructor;return"function"==typeof c&&c instanceof c&&i.call(c)==a}}function gn(){if(on)return nn;on=1;var t=xe(),e=Yr(),r=zr(),n={};return n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1,nn=function(o){return r(o)&&e(o.length)&&!!n[t(o)]}}function fn(){if(an)return sn;return an=1,sn=function(t){return function(e){return t(e)}}}var pn,mn,dn,yn,bn,vn,wn,Rn,kn,xn,_n,Pn,Cn,$n,Nn,jn,En,Bn,Tn,On,An,Sn,Ln,Un,Wn,Fn,Mn,Gn,Hn,In,Dn,zn,qn,Vn,Jn,Yn,Kn,Qn,Xn,Zn,to,eo,ro,no,oo,io,so,ao,co,uo={exports:{}};function ho(){return pn||(pn=1,t=uo,e=uo.exports,r=be(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n&&r.process,s=function(){try{var t=o&&o.require&&o.require("util").types;return t||i&&i.binding&&i.binding("util")}catch(t){}}(),t.exports=s),uo.exports;var t,e,r,n,o,i,s}function lo(){if(dn)return mn;dn=1;var t=gn(),e=fn(),r=ho(),n=r&&r.isTypedArray,o=n?e(n):t;return mn=o}function go(){if(bn)return yn;return bn=1,yn=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}}function fo(){if(wn)return vn;wn=1;var t=Qe(),e=ae(),r=Object.prototype.hasOwnProperty;return vn=function(n,o,i){var s=n[o];r.call(n,o)&&e(s,i)&&(void 0!==i||o in n)||t(n,o,i)}}function po(){if(kn)return Rn;kn=1;var t=fo(),e=Qe();return Rn=function(r,n,o,i){var s=!o;o||(o={});for(var a=-1,c=n.length;++a<c;){var u=n[a],h=i?i(o[u],r[u],u,o,r):void 0;void 0===h&&(h=r[u]),s?e(o,u,h):t(o,u,h)}return o}}function mo(){if(_n)return xn;return _n=1,xn=function(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n}}function yo(){if(Cn)return Pn;Cn=1;var t=/^(?:0|[1-9]\d*)$/;return Pn=function(e,r){var n=typeof e;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e<r}}function bo(){if(Nn)return $n;Nn=1;var t=mo(),e=Vr(),r=Jr(),n=hn(),o=yo(),i=lo(),s=Object.prototype.hasOwnProperty;return $n=function(a,c){var u=r(a),h=!u&&e(a),l=!u&&!h&&n(a),g=!u&&!h&&!l&&i(a),f=u||h||l||g,p=f?t(a.length,String):[],m=p.length;for(var d in a)!c&&!s.call(a,d)||f&&("length"==d||l&&("offset"==d||"parent"==d)||g&&("buffer"==d||"byteLength"==d||"byteOffset"==d)||o(d,m))||p.push(d);return p}}function vo(){if(En)return jn;return En=1,jn=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}}function wo(){if(Tn)return Bn;Tn=1;var t=_e(),e=Ir(),r=vo(),n=Object.prototype.hasOwnProperty;return Bn=function(o){if(!t(o))return r(o);var i=e(o),s=[];for(var a in o)("constructor"!=a||!i&&n.call(o,a))&&s.push(a);return s}}function Ro(){if(An)return On;An=1;var t=bo(),e=wo(),r=Kr();return On=function(n){return r(n)?t(n,!0):e(n)}}function ko(){if(Ln)return Sn;Ln=1;var t=po(),e=Ro();return Sn=function(r){return t(r,e(r))}}function xo(){if(Wn)return Un;Wn=1;var t=Xe(),e=Sr(),r=Wr(),n=Fr(),o=Dr(),i=Vr(),s=Jr(),a=Qr(),c=hn(),u=Pe(),h=_e(),l=ln(),g=lo(),f=go(),p=ko();return Un=function(m,d,y,b,v,w,R){var k=f(m,y),x=f(d,y),_=R.get(x);if(_)t(m,y,_);else{var P=w?w(k,x,y+"",m,d,R):void 0,C=void 0===P;if(C){var $=s(x),N=!$&&c(x),j=!$&&!N&&g(x);P=x,$||N||j?s(k)?P=k:a(k)?P=n(k):N?(C=!1,P=e(x,!0)):j?(C=!1,P=r(x,!0)):P=[]:l(x)||i(x)?(P=k,i(k)?P=p(k):h(k)&&!u(k)||(P=o(x))):C=!1}C&&(R.set(x,P),v(P,x,b,w,R),R.delete(x)),t(m,y,P)}}}function _o(){if(Mn)return Fn;Mn=1;var t=Ye(),e=Xe(),r=tr(),n=xo(),o=_e(),i=Ro(),s=go();return Fn=function a(c,u,h,l,g){c!==u&&r(u,(function(r,i){if(g||(g=new t),o(r))n(c,u,i,h,a,l,g);else{var f=l?l(s(c,i),r,i+"",c,u,g):void 0;void 0===f&&(f=r),e(c,i,f)}}),i)},Fn}function Po(){if(Hn)return Gn;return Hn=1,Gn=function(t){return t}}function Co(){if(Dn)return In;return Dn=1,In=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}}function $o(){if(qn)return zn;qn=1;var t=Co(),e=Math.max;return zn=function(r,n,o){return n=e(void 0===n?r.length-1:n,0),function(){for(var i=arguments,s=-1,a=e(i.length-n,0),c=Array(a);++s<a;)c[s]=i[n+s];s=-1;for(var u=Array(n+1);++s<n;)u[s]=i[s];return u[n]=o(c),t(r,this,u)}},zn}function No(){if(Jn)return Vn;return Jn=1,Vn=function(t){return function(){return t}}}function jo(){if(Kn)return Yn;Kn=1;var t=No(),e=Ke();return Yn=e?function(r,n){return e(r,"toString",{configurable:!0,enumerable:!1,value:t(n),writable:!0})}:Po()}function Eo(){if(Xn)return Qn;Xn=1;var t=Date.now;return Qn=function(e){var r=0,n=0;return function(){var o=t(),i=16-(o-n);if(n=o,i>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}},Qn}function Bo(){if(to)return Zn;to=1;var t=jo(),e=Eo()(t);return Zn=e}function To(){if(ro)return eo;ro=1;var t=Po(),e=$o(),r=Bo();return eo=function(n,o){return r(e(n,o,t),n+"")}}function Oo(){if(oo)return no;oo=1;var t=ae(),e=Kr(),r=yo(),n=_e();return no=function(o,i,s){if(!n(s))return!1;var a=typeof i;return!!("number"==a?e(s)&&r(i,s.length):"string"==a&&i in s)&&t(s[i],o)}}function Ao(){if(so)return io;so=1;var t=To(),e=Oo();return io=function(r){return t((function(t,n){var o=-1,i=n.length,s=i>1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(s=r.length>3&&"function"==typeof s?(i--,s):void 0,a&&e(n[0],n[1],a)&&(s=i<3?void 0:s,i=1),t=Object(t);++o<i;){var c=n[o];c&&r(t,c,o,s)}return t}))}}function So(){if(co)return ao;co=1;var t=_o(),e=Ao()((function(e,r,n){t(e,r,n)}));return ao=e}var Lo,Uo,Wo,Fo,Mo,Go,Ho,Io,Do,zo,qo,Vo,Jo,Yo,Ko,Qo,Xo,Zo,ti,ei,ri,ni,oi,ii,si=ie(So());function ai(){if(Uo)return Lo;Uo=1;var t=xe(),e=zr();return Lo=function(r){return"symbol"==typeof r||e(r)&&"[object Symbol]"==t(r)}}function ci(){if(Fo)return Wo;Fo=1;var t=Jr(),e=ai(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;return Wo=function(o,i){if(t(o))return!1;var s=typeof o;return!("number"!=s&&"symbol"!=s&&"boolean"!=s&&null!=o&&!e(o))||(n.test(o)||!r.test(o)||null!=i&&o in Object(i))}}function ui(){if(Go)return Mo;Go=1;var t=Ve();function e(r,n){if("function"!=typeof r||null!=n&&"function"!=typeof n)throw new TypeError("Expected a function");var o=function(){var t=arguments,e=n?n.apply(this,t):t[0],i=o.cache;if(i.has(e))return i.get(e);var s=r.apply(this,t);return o.cache=i.set(e,s)||i,s};return o.cache=new(e.Cache||t),o}return e.Cache=t,Mo=e}function hi(){if(Io)return Ho;Io=1;var t=ui();return Ho=function(e){var r=t(e,(function(t){return 500===n.size&&n.clear(),t})),n=r.cache;return r}}function li(){if(zo)return Do;zo=1;var t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,e=/\\(\\)?/g,r=hi()((function(r){var n=[];return 46===r.charCodeAt(0)&&n.push(""),r.replace(t,(function(t,r,o,i){n.push(o?i.replace(e,"$1"):r||t)})),n}));return Do=r}function gi(){if(Vo)return qo;return Vo=1,qo=function(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r<n;)o[r]=e(t[r],r,t);return o}}function fi(){if(Yo)return Jo;Yo=1;var t=we(),e=gi(),r=Jr(),n=ai(),o=t?t.prototype:void 0,i=o?o.toString:void 0;return Jo=function t(o){if("string"==typeof o)return o;if(r(o))return e(o,t)+"";if(n(o))return i?i.call(o):"";var s=o+"";return"0"==s&&1/o==-1/0?"-0":s},Jo}function pi(){if(Qo)return Ko;Qo=1;var t=fi();return Ko=function(e){return null==e?"":t(e)}}function mi(){if(Zo)return Xo;Zo=1;var t=Jr(),e=ci(),r=li(),n=pi();return Xo=function(o,i){return t(o)?o:e(o,i)?[o]:r(n(o))}}function di(){if(ei)return ti;ei=1;var t=ai();return ti=function(e){if("string"==typeof e||t(e))return e;var r=e+"";return"0"==r&&1/e==-1/0?"-0":r}}function yi(){if(ni)return ri;ni=1;var t=mi(),e=di();return ri=function(r,n){for(var o=0,i=(n=t(n,r)).length;null!=r&&o<i;)r=r[e(n[o++])];return o&&o==i?r:void 0}}function bi(){if(ii)return oi;ii=1;var t=yi();return oi=function(e,r,n){var o=null==e?void 0:t(e,r);return void 0===o?n:o}}var vi=ie(bi());const wi="package.json",Ri=[".env.local",".env"];class ki extends t{_env;shared;constructor(t){super(t),this._env=e.searchEnv({logger:this.logger,preloadList:this.feConfig.envOrder||Ri}),this.shared=Object.assign({},this.feConfig.release,this.getDefaultShreadOptions(t.shared))}getDefaultShreadOptions(t){return{rootPath:process.cwd(),sourceBranch:this._env.get("FE_RELEASE_BRANCH")||this._env.get("FE_RELEASE_SOURCE_BRANCH")||"master",releaseEnv:this._env.get("FE_RELEASE_ENV")||this._env.get("NODE_ENV")||"development",...t}}get rootPath(){return this.shared.rootPath}get sourceBranch(){return this.shared.sourceBranch}get releaseEnv(){return this.shared.releaseEnv}get env(){return this._env}get workspaces(){return this.getConfig("workspaces.workspaces")}get workspace(){return this.getConfig("workspaces.workspace")}setWorkspaces(t){this.options.workspaces={...this.options.workspaces,workspaces:t}}setConfig(t){this.options=si(this.options,t)}getConfig(t,e){return vi(this.options,t,e)}setShared(t){this.shared=si(this.shared,t)}getPkg(t,e){const r=this.workspace?.packageJson;if(!r)throw new Error("package.json is not found");return t?vi(r,t,e):r}getTemplateContext(){return{...this.shared,...this.workspace,publishPath:this.workspace?.path||"",env:this.releaseEnv,branch:this.sourceBranch}}async runChangesetsCli(t,e){let r="pnpm";try{await this.shell.exec("pnpm -v",{dryRun:!1})}catch{r="npx"}return await this.shell.exec([r,"changeset",t,...e??[]])}}function xi(t,...e){return[t,...e]}const _i={maxWorkspace:3,multiWorkspaceSeparator:"_",workspaceVersionSeparator:"@",batchBranchName:"batch-${releaseName}-${length}-packages-${timestamp}",batchTagName:"batch-${length}-packages-${timestamp}"};class Pi{shell;logger;config;constructor(t,e,r={}){this.shell=t,this.logger=e,this.config={..._i,...r}}getReleaseBranchName(t,e,r){const n=r.branchName||"release-${tagName}";if("string"!=typeof n)throw new Error("Branch name template is not a string");return this.logger.debug("Release Branch template is:",n),this.shell.format(n,{pkgName:t,releaseName:t,tagName:e,...r})}getBatchReleaseBranchName(t,e,r,n){const o=this.config.batchBranchName;if("string"!=typeof o)throw new Error("Branch name template is not a string");return this.logger.debug("Release Batch Branch template is:",o),this.shell.format(o,{pkgName:t,releaseName:t,tagName:e,...r,length:n,timestamp:Date.now()})}getReleaseName(t){if(1===t.length)return t[0].name;const{maxWorkspace:e,multiWorkspaceSeparator:r,workspaceVersionSeparator:n}=this.config;return t.slice(0,e).map((({name:t,version:e})=>`${t}${n}${e}`)).join(r)}getReleaseTagName(t){if(1===t.length)return t[0].version;const{batchTagName:e}=this.config;return this.shell.format(e,{length:t.length,timestamp:Date.now()})}getReleaseBranchParams(t,e){const r=this.getReleaseTagName(t),n=this.getReleaseName(t);return{tagName:r,releaseBranch:t.length>1?this.getBatchReleaseBranchName(n,r,e,t.length):this.getReleaseBranchName(n,r,e)}}getPRTitle(t,e){const r=this.config.PRTitle||"Release ${env} ${pkgName} ${tagName}";return this.shell.format(r,{...e,tagName:t.tagName,pkgName:t.releaseBranch})}getPRBody(t,e,r){const n=this.config.PRBody,o=t.length>1?t.map((t=>this.shell.format("\n## ${name} ${version}\n${changelog}\n",t))).join("\n"):t[0].changelog,{workspaceVersionSeparator:i}=this.config,s=1===t.length?e.tagName:t.map((t=>`${t.name}${i}${t.version}`)).join(" ");return this.shell.format(n,{...r,tagName:s,changelog:o})}}class Ci{context;_octokit=null;constructor(t){this.context=t}getGitHubUserInfo(){const{authorName:t,repoName:e}=this.context.shared;if(!t||!e)throw new Error("Author name or repo name is not set");return{owner:t,repo:e}}getToken(){const{tokenRef:t="GITHUB_TOKEN"}=this.context.getConfig("githubPR"),e=this.context.env.get(t);if(!e)throw new Error(`Token is not set. Please set ${t} environment variable.`);return e}get octokit(){if(this._octokit)return this._octokit;const{timeout:t}=this.context.getConfig("githubPR"),e={auth:this.getToken(),request:{timeout:t}};return this._octokit=new n(e),this._octokit}get logger(){return this.context.logger}get shell(){return this.context.shell}get autoMergeType(){return this.context.shared.autoMergeType||"squash"}get dryRunPRNumber(){return this.context.getConfig("githubPR.dryRunPRNumber","999999")}get autoMergeReleasePR(){return this.context.shared.autoMergeReleasePR||false}async mergePR(t,e){if(!t)return void this.logger.error("Failed to create Pull Request.",t);const r=this.autoMergeType;if(this.context.dryRun){const{repoName:n,authorName:o}=this.context.shared;this.logger.info(`[DRY RUN] Would merge PR #${t} with method '${r}' in repo ${o}/${n}, branch ${e}`)}else await this.octokit.rest.pulls.merge({...this.getGitHubUserInfo(),pull_number:Number(t),merge_method:r})}async checkedPR(t,e){try{await this.octokit.rest.pulls.get({...this.getGitHubUserInfo(),pull_number:Number(t)}),await this.octokit.rest.git.deleteRef({...this.getGitHubUserInfo(),ref:`heads/${e}`}),this.logger.info(`Branch ${e} has been deleted`)}catch(r){if(404===r.status)return void this.logger.warn(`PR #${t} or branch ${e} not found`);throw this.logger.error("Failed to check PR or delete branch",r),r}}async createReleasePRLabel(){const t=this.context.shared.label;if(!(t&&t.name&&t.description&&t.color))throw new Error("Label is not valid, skipping creation");if(this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR label with:",t),t;try{const e=await this.octokit.rest.issues.createLabel({...this.getGitHubUserInfo(),name:t.name,description:t.description,color:t.color.replace("#","")});return this.logger.debug("Create PR label Success",e),t}catch(e){if(422===e.status)return this.logger.warn(`Label ${t.name} already exists, skipping!`),t;throw this.logger.error("Create PR label Failed",e),e}}async createReleasePR(t){if(this.context.getConfig("githubPR.dryRunCreatePR")||this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR with:",{...t,labels:t.labels}),this.dryRunPRNumber;try{const e=await this.octokit.rest.pulls.create({...this.getGitHubUserInfo(),...t}),r=e.data.number;if(!r)throw new Error("CreateReleasePR Failed, prNumber is empty");if(this.logger.debug("Create PR Success",[e?.url]),t.labels&&t.labels.length){const e=await this.octokit.rest.issues.addLabels({...this.getGitHubUserInfo(),issue_number:r,labels:t.labels});this.logger.debug("Add PR label Success",[e.url])}return r.toString()}catch(t){if(422===t.status&&t.message.includes("already exists")){this.logger.warn("PR already exists");const e=t.message.match(/pull request #(\d+)/);return e?e[1]:""}throw this.logger.error("Failed to create PR",t),t}}truncateBody(t){return t&&t.length>=124e3?t.substring(0,124e3)+"...":t}getOctokitReleaseOptions(t){const{releaseName:e,draft:r=!1,preRelease:n=!1,autoGenerate:o=!1,makeLatest:i=!0,releaseNotes:s,discussionCategoryName:a}=this.context.getConfig("githubPR"),c=e,u=o?"":this.truncateBody(String(s));return{name:c,make_latest:i.toString(),body:u,draft:r,prerelease:n,generate_release_notes:o,discussion_category_name:a,tag_name:"",...t,...this.getGitHubUserInfo()}}async createRelease(t){const e=this.getOctokitReleaseOptions({tag_name:t.tagName,body:t.changelog});if(e.name=this.shell.format(e.name,t),this.logger.log(`[DRY RUN] octokit repos.createRelease "${e.name}" (${e.tag_name})`,{isDryRun:this.context.dryRun}),!e.tag_name)throw new Error("TagName is undefined");if(!this.context.dryRun)try{const t=await this.octokit.repos.createRelease(e);this.logger.debug(`[DONE] octokit repos.createRelease "${e.name}" (${e.tag_name}) (${t.headers.location})`)}catch(t){this.logger.error(`[FAILED] octokit repos.createRelease "${e.name}" (${e.tag_name})`,t)}}}var $i,Ni;function ji(){if(Ni)return $i;Ni=1;var t=xe(),e=Jr(),r=zr();return $i=function(n){return"string"==typeof n||!e(n)&&r(n)&&"[object String]"==t(n)}}var Ei=ie(ji());class Bi{context;pluginName;props;onlyOne=!0;constructor(t,e,r={}){this.context=t,this.pluginName=e,this.props=r,this.setConfig(this.getInitialProps(r))}getInitialProps(t){const e=this.context.options[this.pluginName],r=vi(this.context.shared,this.pluginName);return e||t?si({},r,t,e):{}}get logger(){return this.context.logger}get shell(){return this.context.shell}get options(){return this.context.getConfig(this.pluginName,{})}getEnv(t,e){return this.context.env.get(t)??e}enabled(t,e){return!0}getConfig(t,e){return t?this.context.getConfig([this.pluginName,...Array.isArray(t)?t:[t]],e):this.context.getConfig(this.pluginName,e)}setConfig(t){this.context.setConfig({[this.pluginName]:t})}onBefore(t){}onExec(t){}onSuccess(t){}onError(t){}async step({label:t,task:e}){this.logger.log(),this.logger.info(t),this.logger.log();try{const r=await e();return this.logger.info(`${t} - success`),r}catch(t){throw this.logger.error(t),t}}}class Ti extends Bi{async onBefore(){const t=await this.getUserInfo();if(!t)throw new Error("Failed to get repoInfo");let e=this.context.shared.currentBranch;e||(e=await this.getCurrentBranch()),e&&await this.context.shell.exec(`git checkout ${e}`,{dryRun:!1}),this.context.setShared({repoName:t.repoName,authorName:t.authorName,currentBranch:e})}async getCurrentBranch(){return await new Promise((t=>setTimeout(t,100))),this.context.shell.exec("git rev-parse --abbrev-ref HEAD",{dryRun:!1})}async getRemoteUrl(){return(await this.context.shell.exec("git config --get remote.origin.url",{dryRun:!1})).trim()}async getUserInfo(){let t;try{t=await this.getRemoteUrl()}catch{throw new Error("Failed to get git remote url. Please ensure this is a git repository with a valid remote.")}if(!t)throw new Error("Git remote URL is empty. Please set a valid GitHub remote URL.");this.context.logger.debug("repoUrl: ",t);const e=t.match(/github\.com[:/]([^/]+)\/([^/.]+)(?:\.git)?$/);if(!e)throw new Error("Invalid GitHub repository URL format. Please ensure the remote URL is from GitHub.");const[,r,n]=e;if(!this.isValidString(r)||!this.isValidString(n))throw new Error("Failed to extract owner or repository name from GitHub URL");return{repoName:n,authorName:r}}isValidString(t){return!!t&&Ei(t)}commit(t,e=[]){return this.context.shell.exec(["git","commit","--message",JSON.stringify(t),...e])}}class Oi{options;constructor(t){this.options=t}compare(t,e){return"function"==typeof this.options.compare?this.options.compare(t,e):t.startsWith(e)}toChangeLabel(t,e=this.options.changePackagesLabel){return e.replace("${name}",t)}toChangeLabels(t,e=this.options.changePackagesLabel){return t.map((t=>this.toChangeLabel(t,e)))}pick(t,e=this.options.packagesDirectories){const r=[];for(const n of e)for(const e of t)if(this.compare(e,n)){r.push(n);break}return r}}class Ai{static readJson(t){const e=a(t,"utf-8");return JSON.parse(e)}static toWorkspace(t,e){let{root:r,packageJson:n}=t;const o=t.path;if(!o)throw new Error("path is not required!");return r=r||h(e,o),n=n||Ai.readJson(h(r,wi)),{name:n.name,version:n.version,path:o,root:r,packageJson:n}}}class Si extends Bi{releaseTask=null;workspacesList=[];_skip=!1;releaseLabel;constructor(t){super(t,"workspaces"),this.releaseLabel=new Oi({changePackagesLabel:this.context.shared.changePackagesLabel||"change:${name}",packagesDirectories:this.context.shared.packagesDirectories||[]})}enabled(){return!this._skip&&!this.getConfig("skip")}async onBefore(){const t=this.getConfig("workspace");if(t)return this.logger.debug("Use the specified workspace",t),void this.setCurrentWorkspace(t,[]);const e=await this.getWorkspaces();if(this.getConfig("skipCheckPackage")||0===e.length)throw new Error("No changes to publish packages");const{publishPath:r}=this.context.shared;if(r){const t=e.find((t=>o(t.root)===o(r)));if(this.nextSkip(),!t)throw new Error(`No workspace found for: ${r}`);return this.logger.debug(`Workspace of ${r} find!`,i(t.root,wi)),void this.setCurrentWorkspace(t,[t])}const[n,...s]=e;this.workspacesList=s,this.setCurrentWorkspace(n,e)}nextSkip(){this._skip=!0,this.logger.debug("skip next workspace")}setReleaseTask(t){this.releaseTask=t}setCurrentWorkspace(t,e){this.context.setShared({publishPath:t.path}),this.setConfig({workspace:t,workspaces:e})}getPackages(){const t=this.context.shared.packagesDirectories;return Array.isArray(t)?t:[]}async getGitWorkspaces(){const t=this.context.sourceBranch,e=await this.shell.exec(`git diff --name-only origin/${t}...HEAD`,{dryRun:!1});return"string"==typeof e?e.split("\n"):[]}async getChangedPackages(t,e){if(this.logger.debug("changeLabels",e),Array.isArray(e)&&e.length>0){const r=t.filter((t=>{const r=this.releaseLabel.toChangeLabel(t);return e.includes(r)}));return this.logger.debug("changed by labels",r),r}const r=await this.getGitWorkspaces();return this.logger.debug("changed by git",r),this.releaseLabel.pick(r,t)}async getWorkspaces(){const t=this.getPackages();this.logger.debug("packages",t);const e=await this.getChangedPackages(t,this.getConfig("changeLabels"));this.setConfig({packages:t,changedPaths:e}),this.logger.debug("changedPaths",e);return e.map((t=>Ai.toWorkspace({path:t},this.context.rootPath)))}}function Li(t,...e){return"function"==typeof t&&t.prototype&&t.prototype.constructor===t?new t(...e):t(...e)}function Ui(t){return t.startsWith(".")?s(t).name:t}async function Wi(t){let e=null;try{e=(await import(t)).default}catch{try{e=(await import(i(process.cwd(),t))).default}catch{const r=l(process.cwd());e=(await import(g(r.resolve(t,{paths:[process.cwd()]})).href)).default}}return[Ui(t),e]}async function Fi(t,e,r=5){const n=f(r),o=e.map((([e,...r])=>n((()=>(async(e,...r)=>{if("string"==typeof e){const[,n]=await Wi(e);return Li(n,t,...r)}return Li(e,t,...r)})(e,...r)))));return Promise.all(o)}const Mi="- ${message}${prRef}\n",Gi="%H%n%s%n%b%n----------------------";class Hi{formatFlatCommits(t,e,r){const{types:n=[],formatTemplate:o=Mi}=e,i=new Map;for(const e of t){const t=e.type||"other";i.has(t)||i.set(t,[]),i.get(t).push(e)}const s=[];for(const{type:t,section:e,hidden:a}of n){if(a)continue;const n=i.get(t);if(n?.length){s.push(`${e||t}`);for(const t of n){const e=t.prNumber?` (#${t.prNumber})`:"";if(s.push(r.format(o,{...t,prRef:e})),t.body){const e=t.body.split("\n").map((t=>` ${t}`));s.push(e.join("\n"))}}}}return s}}class Ii{shell;options;constructor(t,e){this.shell=t,this.options=e}parseCommitBody(t){const e=t.split("\n").filter(Boolean),r=[];let n=null;for(let t=0;t<e.length;t++){const o=e[t].trim();if(o.startsWith("Co-authored-by:")||"---------"===o||0===o.length)continue;const i=o.match(/^\*?\s*(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);if(i&&o.startsWith("*")){n&&r.push({...n,body:n.bodyLines?.join("\n").trim()});const[t,e,s,a]=i;n={matchRaw:t,raw:o,type:e?.toLowerCase(),scope:s?.trim(),message:a.trim(),bodyLines:[]}}else n&&o.startsWith("-")&&n.bodyLines?.push(o)}return n&&r.push({...n,body:n.bodyLines?.join("\n").trim()}),r}async getPRCommits(t){const{from:e,to:r,directory:n,format:o}={...this.options,...t};return(await this.getLog({from:e,to:r,directory:n,format:o,noMerges:!1})).split("\n----------------------\n").filter(Boolean).map((t=>{const[e,r,...n]=t.trim().split("\n"),o=n.join("\n"),i=r.match(/\(#(\d+)\)/),s=r.replace(/\s*\(#\d+\)\s*$/,"").match(/^(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);return{hash:e,raw:{title:r,body:o},title:s?{type:s[1]?.toLowerCase(),scope:s[2]?.trim(),message:s[3].trim()}:{message:r.replace(/\s*\(#\d+\)\s*$/,"").trim()},commits:this.parseCommitBody(o),prNumber:i?.[1]}}))}async hasTag(t){return this.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((()=>!0)).catch((()=>!1))}async resolveTag(t,e){if(t)try{if(await this.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((t=>!!t.trim())))return t}catch{}return"root"===e?this.shell.exec("git rev-list --max-parents=0 HEAD",{dryRun:!1}).then((t=>t.trim())):"HEAD"}async getLog(t){const{directory:e,format:r=Gi,noMerges:n=!0}=t;if(t.logCommand)return this.shell.exec(t.logCommand,{dryRun:!1});const o=await this.resolveTag(t.from,"root"),i=await this.resolveTag(t.to,"HEAD"),s=`git log --pretty=format:"${r}" ${n?"--no-merges":""} ${o===i?i:`${o}..${i}`} ${e?`-- "${e}"`:""}`;return this.shell.exec(s.trim(),{dryRun:!1})}flatCommits(t){const e=[];for(const r of t){const t={title:r.title,raw:r.raw,hash:r.hash,prNumber:r.prNumber};if(Array.isArray(r.commits)&&r.commits.length>0){const n=r.commits.map((e=>({...e,prNumber:r.prNumber,hash:r.hash,parentHash:r.hash,parentCommit:t})));e.push(...n)}else e.push({raw:r.raw.title,type:r.title.type,scope:r.title.scope,message:r.title.message,body:r.raw.body,prNumber:r.prNumber,hash:r.hash,parentHash:r.hash,parentCommit:t})}return e}formatFlatCommits(t,e){const{types:r=[],formatter:n}={...this.options,...e};return(n||new Hi).formatFlatCommits(t,{types:r},this.shell)}}const Di=[xi(Si),xi(class extends Bi{constructor(t,e){super(t,"changelog",{increment:"patch",changesetRoot:".changeset",tagTemplate:"${name}@${version}",tagPrefix:"${name}",tagMatch:"${name}@*",...e})}get changesetRoot(){return h(this.context.rootPath,this.getConfig("changesetRoot"))}get changesetConfigPath(){return h(this.changesetRoot,"config.json")}enabled(){return!this.getConfig("skip")}async onBefore(){if(!c(this.changesetRoot))throw new Error(`Changeset directory ${this.changesetRoot} does not exist`);this.logger.debug(`${this.changesetRoot} exists`)}mergeWorkspaces(t){return t.map((t=>{const e=Ai.toWorkspace({path:t.path},this.context.rootPath),r={...t,version:e.version};return r.tagName=this.generateTagName(r),r}))}async onExec(){const t=await this.step({label:"Generate Changelogs",task:()=>Promise.all(this.context.workspaces.map((t=>this.generateChangelog(t))))});this.getConfig("skipChangeset")?this.logger.debug("Skip generate changeset files"):(await this.step({label:"Changeset Version",task:()=>Promise.all(t.map((t=>this.generateChangesetFile(t))))}),await this.context.runChangesetsCli("version",["--no-changelog","--update-dependencies"]),this.getConfig("ignoreNonUpdatedPackages")&&await this.restoreIgnorePackages());const e=this.mergeWorkspaces(t);this.logger.debug("new workspaces",e),this.context.setWorkspaces(e)}async restoreIgnorePackages(){const{changedPaths:t=[],packages:e=[]}=this.context.getConfig("workspaces"),r=e.filter((e=>!t.includes(e))).map((t=>Ai.toWorkspace({path:t},this.context.rootPath).path));this.logger.debug("noChangedPackages",r),await this.shell.exec(["git","restore",...r])}getTagPrefix(t){return this.shell.format(this.getConfig("tagPrefix"),t)}async createChangelog({lastTag:t,workspace:e}){const r=new Ii(this.context.shell,{...this.getConfig("gitChangelogOptions"),from:t,directory:e.path});return r.getPRCommits().then((t=>{const e=r.flatCommits(t);return r.formatFlatCommits(e).join("\n")}))}async generateChangelog(t){const e=await this.getTagName(t);this.logger.debug("tagName is:",e);const r=await this.createChangelog({workspace:t,lastTag:e});return{...t,lastTag:e,changelog:r}}generateTagName(t){try{const e=this.getConfig("tagTemplate");return this.shell.format(e,t)}catch(e){return console.error(`Error generating tag name for ${t.name}:`,e),`${t.name}-v0.0.0`}}async getTagName(t){try{const e=this.generateTagName(t),r=this.shell.format(this.getConfig("tagMatch"),t),n=await this.shell.exec(`git for-each-ref --sort=-creatordate --format "%(refname:short)|%(creatordate:iso8601)" "refs/tags/${r}"`,{dryRun:!1});if(!n)return e;const o=n.split("\n").filter(Boolean);if(0===o.length)return e;return o[0].split("|")[0]}catch(e){console.error(`Error getting tag for ${t.name}:`,e);return this.generateTagName(t)}}getIncrement(){const t=this.context.getConfig("workspaces.changeLabels");if(Array.isArray(t)&&t.length>0){if(t.includes("increment:major"))return"major";if(t.includes("increment:minor"))return"minor"}return this.getConfig("increment","patch")}async generateChangesetFile(t){const{name:e,version:r}=t,n=`${e}-${r}`.replace(/[\/\\]/g,"_"),o=h(this.changesetRoot,`${n}.md`),i=this.getIncrement();this.logger.debug("increment is:",[i]);const s=this.shell.format("---\n'${name}': '${increment}'\n---\n\n${changelog}",{...t,increment:i});if(this.context.dryRun)return this.logger.info(`Changeset [${o}] will be created, content is:`),void this.logger.log(s);c(o)?this.logger.info(`Changeset ${n} already exists`):u(o,s,"utf-8")}},{}),xi(class extends Ti{context;releaseParams;githubManager;constructor(t,e){super(t,"githubPR",{releaseName:"Release ${name} v${version}",...e}),this.context=t,this.githubManager=new Ci(this.context),this.releaseParams=new Pi(t.shell,t.logger,{PRTitle:this.getConfig("PRTitle",this.context.shared.PRTitle),PRBody:this.getConfig("PRBody",this.context.shared.PRBody),...this.props})}enabled(t){return!this.getConfig("skip")&&("onExec"===t?!this.isPublish:"onSuccess"!==t||this.isPublish)}get isPublish(){return!this.getConfig("releasePR")}async isGithubRepository(){try{return(await this.getRemoteUrl()).includes("github.com")}catch{return!1}}async onBefore(){this.logger.debug("GithubPR onBefore");if(!await this.isGithubRepository())throw new Error("Current repository is not a GitHub repository. GitHub PR workflow is only available for GitHub repositories.");if(await super.onBefore(),this.isPublish){const t=this.getEnv("NPM_TOKEN");if(!t)throw new Error("NPM_TOKEN is not set");await this.shell.exec(`npm config set //registry.npmjs.org/:_authToken=${t}`)}}async onExec(){const t=this.context.workspaces;await this.step({label:"Release Commit",task:()=>this.relesaeCommit(t)});const e=await this.step({label:"Create Release Branch",task:()=>this.createReleaseBranch(t)});await this.releasePullRequest(t,e)}async onSuccess(){const t=this.context.workspaces;this.getConfig("dryRunCreatePR")||(await this.context.runChangesetsCli("publish"),await this.shell.exec("git push origin --tags")),await this.step({label:"Release Github",task:()=>Promise.all(t.map((t=>(this.logger.debug(t),this.githubManager.createRelease(t)))))})}async relesaeCommit(t){const e=this.getConfig("commitArgs",[]);if(1===t.length)return await this.shell.exec("git add ."),void await this.commitWorkspace(t[0],e);await this.shell.exec("git add .");const r=`chore(tag): ${t.map((t=>`${t.name} v${t.version}`)).join(",")}`;await this.commit(r,e)}async releasePullRequest(t,e){const r=await this.step({label:"Create Release PR",task:()=>this.createReleasePR(t,e)});if(this.githubManager.autoMergeReleasePR){const{releaseBranch:t}=e;return await this.step({label:`Merge Release PR(${r})`,task:()=>this.githubManager.mergePR(r,t)}),void await this.step({label:`Checked Release PR(${r})`,task:()=>this.githubManager.checkedPR(r,t)})}this.logger.info(`Please manually merge PR(#${r}) and complete the publishing process afterwards`)}async commitWorkspace(t,e=[]){const r=this.shell.format(this.getConfig("commitMessage","chore(tag): ${name} v${version}"),t);return await this.commit(r,e)}async createReleaseBranch(t){const e=this.releaseParams.getReleaseBranchParams(t,this.context.getTemplateContext()),{tagName:r,releaseBranch:n}=e;if("string"!=typeof r)throw new Error("Tag name is not a string");const{sourceBranch:o,currentBranch:i}=this.context.shared;this.context.logger.debug("PR TagName is:",r),this.context.logger.debug("PR CurrentBranch is:",i),this.context.logger.debug("PR SourceBranch is:",o),this.context.logger.debug("PR ReleaseBranch is:",n);try{await this.context.shell.exec(`git fetch origin ${o} ${i}`),await this.context.shell.exec(`git checkout -b ${n} ${i}`),await this.context.shell.exec(`git push origin ${n}`)}catch(t){throw t.message.includes("remote: Permission to ")&&this.context.logger.warn('Token maybe not allow Workflow permissions, can you try to open "Workflow permissions" -> "Read and write permissions" for this token?'),t}return{tagName:r,releaseBranch:n}}async createReleasePR(t,e){let r=[(await this.githubManager.createReleasePRLabel()).name];if(this.getConfig("pushChangeLabels")){const t=this.context.getConfig("workspaces.changeLabels");Array.isArray(t)&&t.length>0&&r.push(...t)}r=Array.from(new Set(r)),this.logger.debug("Release PR labels:",r);const n=this.context.getTemplateContext(),o=this.releaseParams.getPRTitle(e,n),i=this.releaseParams.getPRBody(t,e,n);return this.githubManager.createReleasePR({title:o,body:i,base:this.context.sourceBranch,head:e.releaseBranch,labels:r})}},{})];class zi{executor;defaultTuples;context;constructor(t={},e=new r,n=Di){this.executor=e,this.defaultTuples=n,this.context=new ki(t)}getContext(){return this.context}async usePlugins(t){t=t||this.context.shared.plugins||[];const e=await Fi(this.context,[...this.defaultTuples,...t]);return e.forEach((t=>{t instanceof Si&&t.setReleaseTask(this),this.executor.use(t)})),e}async run(){return this.executor.exec(this.context,(t=>Promise.resolve(t)))}async exec(t){if("false"===this.context.env.get("FE_RELEASE"))throw new Error("Skip Release");return await this.usePlugins(t),this.run()}}var qi,Vi,Ji,Yi;function Ki(){if(Vi)return qi;Vi=1;var t=fo(),e=mi(),r=yo(),n=_e(),o=di();return qi=function(i,s,a,c){if(!n(i))return i;for(var u=-1,h=(s=e(s,i)).length,l=h-1,g=i;null!=g&&++u<h;){var f=o(s[u]),p=a;if("__proto__"===f||"constructor"===f||"prototype"===f)return i;if(u!=l){var m=g[f];void 0===(p=c?c(m,f,g):void 0)&&(p=n(m)?m:r(s[u+1])?[]:{})}t(g,f,p),g=g[f]}return i}}function Qi(){if(Yi)return Ji;Yi=1;var t=Ki();return Ji=function(e,r,n){return null==e?e:t(e,r,n)}}var Xi=ie(Qi());function Zi(t,e){return Object.entries(t).reduce(((t,[r,n])=>(r.includes(".")?Xi(t,r,n):Xi(t,e?`${e}.${r}`:r,n),t)),{})}export{Bi as Plugin,ki as ReleaseContext,Oi as ReleaseLabel,zi as ReleaseTask,Li as factory,Wi as load,Fi as loaderPluginsFromPluginTuples,Zi as reduceOptions,xi as tuple};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@qlover/fe-release",
3
3
  "description": "A tool for releasing front-end projects, supporting multiple release modes and configurations, simplifying the release process and improving efficiency.",
4
- "version": "2.1.4",
4
+ "version": "2.1.5",
5
5
  "type": "module",
6
6
  "private": false,
7
7
  "homepage": "https://github.com/qlover/fe-base/tree/master/packages/fe-release",
@@ -55,9 +55,9 @@
55
55
  "@octokit/rest": "^21.0.2",
56
56
  "lodash": "^4.17.21",
57
57
  "@qlover/env-loader": "0.3.0",
58
- "@qlover/fe-corekit": "1.3.1",
59
58
  "@qlover/logger": "0.1.1",
60
- "@qlover/scripts-context": "0.2.1"
59
+ "@qlover/scripts-context": "0.2.1",
60
+ "@qlover/fe-corekit": "1.3.1"
61
61
  },
62
62
  "scripts": {
63
63
  "build": "rollup -c",