@anolilab/multi-semantic-release 3.0.0-alpha.4 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,57 @@
1
+ ## @anolilab/multi-semantic-release [3.0.0](https://github.com/anolilab/semantic-release/compare/@anolilab/multi-semantic-release@2.0.9...@anolilab/multi-semantic-release@3.0.0) (2025-11-20)
2
+
3
+ ### ⚠ BREAKING CHANGES
4
+
5
+ * - node-versions: the minimum node version for the v24 range is now v24.10.0
6
+ - deps: a minimum of node v22.14 is now required
7
+
8
+ ### Features
9
+
10
+ * add debug logging for branch and release channel information in create-inline-plugin-creator.ts ([c67aa85](https://github.com/anolilab/semantic-release/commit/c67aa85c612b4e5525b95ca9249ffc74f03570f3))
11
+ * add yargs types and update multi-semantic-release configurations ([cc1ca7c](https://github.com/anolilab/semantic-release/commit/cc1ca7ca10d5837c60392bb8f7476011075e5935))
12
+ * Implemented catalog change detection in `create-inline-plugin-creator.ts` to trigger releases based on catalog version changes. ([b8716f5](https://github.com/anolilab/semantic-release/commit/b8716f59bc84723418dbe2873fcec42bd17fbd42))
13
+
14
+ ### Bug Fixes
15
+
16
+ * **#232:** await getTagHead in createInlinePluginCreator for proper async handling ([2b813cf](https://github.com/anolilab/semantic-release/commit/2b813cf745e69386fc89c38f1c144c16778bf2d8)), closes [#232](https://github.com/anolilab/semantic-release/issues/232)
17
+ * dryRun flag support in multiSemanticRelease ([110e370](https://github.com/anolilab/semantic-release/commit/110e370636e83952ba2342d3a1c95ed275ab8e17))
18
+ * Ensure context.cwd is set to package directory for all plugin hooks ([877d314](https://github.com/anolilab/semantic-release/commit/877d3143a5c75787640454ee42aa450e59538922))
19
+ * update dependencies and node version across multiple packages ([cbfde4b](https://github.com/anolilab/semantic-release/commit/cbfde4b18e22a3994c70f145e9a9a6c71f4539c8))
20
+ * update Node.js version and dependencies across workflows and lock files ([8a9c4cd](https://github.com/anolilab/semantic-release/commit/8a9c4cd6bff274f87893a8f44fe64cacb86fde68))
21
+ * update package manager and dependencies across multiple configurations ([8b30f19](https://github.com/anolilab/semantic-release/commit/8b30f19fb84466e6388f036bd7c69ff2bad3a41f))
22
+
23
+ ### Miscellaneous Chores
24
+
25
+ * add '@types/env-ci' dependency and refine type handling ([f897d6c](https://github.com/anolilab/semantic-release/commit/f897d6c26436790504bcb8ca98095e4ab3f2bd61))
26
+ * **release:** @anolilab/multi-semantic-release@3.0.0-alpha.1 [skip ci]\n\n## @anolilab/multi-semantic-release [3.0.0-alpha.1](https://github.com/anolilab/semantic-release/compare/@anolilab/multi-semantic-release@2.0.6...@anolilab/multi-semantic-release@3.0.0-alpha.1) (2025-10-14) ([5b6a81b](https://github.com/anolilab/semantic-release/commit/5b6a81bdfb891e21811aafd9d16b8ca40f84c1ac))
27
+ * **release:** @anolilab/multi-semantic-release@3.0.0-alpha.2 [skip ci]\n\n## @anolilab/multi-semantic-release [3.0.0-alpha.2](https://github.com/anolilab/semantic-release/compare/@anolilab/multi-semantic-release@3.0.0-alpha.1...@anolilab/multi-semantic-release@3.0.0-alpha.2) (2025-10-21) ([c052795](https://github.com/anolilab/semantic-release/commit/c0527956615e94c4529d0ecff2c9717a6d254cf8))
28
+ * **release:** @anolilab/multi-semantic-release@3.0.0-alpha.3 [skip ci]\n\n## @anolilab/multi-semantic-release [3.0.0-alpha.3](https://github.com/anolilab/semantic-release/compare/@anolilab/multi-semantic-release@3.0.0-alpha.2...@anolilab/multi-semantic-release@3.0.0-alpha.3) (2025-10-22) ([3810607](https://github.com/anolilab/semantic-release/commit/381060779335e91a662c5123cc69cde274d3f944))
29
+ * **release:** @anolilab/multi-semantic-release@3.0.0-alpha.4 [skip ci]\n\n## @anolilab/multi-semantic-release [3.0.0-alpha.4](https://github.com/anolilab/semantic-release/compare/@anolilab/multi-semantic-release@3.0.0-alpha.3...@anolilab/multi-semantic-release@3.0.0-alpha.4) (2025-11-20) ([30daf75](https://github.com/anolilab/semantic-release/commit/30daf754aad31cbc43ad774915f516a5c3444578)), closes [#232](https://github.com/anolilab/semantic-release/issues/232)
30
+ * **release:** update changelogs for multi-semantic-release, rc, clean-package-json, and preset packages ([a0073c4](https://github.com/anolilab/semantic-release/commit/a0073c4ef4c582dc3514afc42b4ffbd07bf07761))
31
+ * update '@actions/core' dependency to production in pnpm configuration ([bfec287](https://github.com/anolilab/semantic-release/commit/bfec287c74f048f41bcb0517353d3d4dede451a0))
32
+ * update ESLint configuration and refactor validation logic ([a604dc7](https://github.com/anolilab/semantic-release/commit/a604dc7bd7cb16ec90130e7c48a48a1ed4a9e60c))
33
+ * update Node.js version and refine dependencies in pnpm-workspace ([cbd6172](https://github.com/anolilab/semantic-release/commit/cbd617234ac6e5f5a14b70fbf6d6aec3bcd38fe0))
34
+ * update Node.js version matrix in GitHub Actions workflow ([c558222](https://github.com/anolilab/semantic-release/commit/c558222a6114286227d47d2a766ae6958caeb18c))
35
+
36
+ ### Code Refactoring
37
+
38
+ * clean up comments in multi-semantic-release files ([9672b6e](https://github.com/anolilab/semantic-release/commit/9672b6e9635514e94750ddef78aa42247f301d0f))
39
+ * clean up whitespace and comments in get-config.ts and verify-auth.ts ([26dc037](https://github.com/anolilab/semantic-release/commit/26dc037917f281f24d096d9790b671262f432b24))
40
+ * enhance inline plugin creator with consistent git root handling ([4ebaea4](https://github.com/anolilab/semantic-release/commit/4ebaea46d35bb89a0adcb4bf58c6df559e35f107))
41
+ * enhance type handling and improve test clarity in multi-semantic-release ([6243828](https://github.com/anolilab/semantic-release/commit/62438283c017512572714d90fbaf6ccafc7d3769))
42
+ * enhance type handling and logging in multi-semantic-release ([b6b34c2](https://github.com/anolilab/semantic-release/commit/b6b34c22fd835478f7009e3204a61abb953a9fb4))
43
+ * Ensure consistent cwd handling across all plugin hooks ([3028b71](https://github.com/anolilab/semantic-release/commit/3028b71f6f16244968bd6646b042ac893ffa5bb9))
44
+ * improve test clarity and type handling in update-deps and CLI tests ([eb43625](https://github.com/anolilab/semantic-release/commit/eb436256e2801ef3beafb397a7aaaa216721f6ab))
45
+ * improve type handling in create-inline-plugin-creator.ts ([fe8f579](https://github.com/anolilab/semantic-release/commit/fe8f57986a3fe5abd3597c35e089c91b87ff8a99))
46
+ * Simplify plugin configuration and enhance cwd handling ([7f15f47](https://github.com/anolilab/semantic-release/commit/7f15f47a1f6cb87f3db7a1042b7605493e848aa2))
47
+ * update test cases and improve type handling ([328c392](https://github.com/anolilab/semantic-release/commit/328c39278c609fd9169df79f3f48bbd8038d2e64))
48
+
49
+
50
+ ### Dependencies
51
+
52
+ * **@anolilab/semantic-release-clean-package-json:** upgraded to 4.0.0
53
+ * **@anolilab/semantic-release-pnpm:** upgraded to 3.0.0
54
+
1
55
  ## @anolilab/multi-semantic-release [3.0.0-alpha.4](https://github.com/anolilab/semantic-release/compare/@anolilab/multi-semantic-release@3.0.0-alpha.3...@anolilab/multi-semantic-release@3.0.0-alpha.4) (2025-11-20)
2
56
 
3
57
  ### Features
package/dist/bin/cli.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- var l=Object.defineProperty;var n=(o,e)=>l(o,"name",{value:e,configurable:!0});import{createRequire as d}from"node:module";import g from"yargs";import{hideBin as b}from"yargs/helpers";import{q as f,u as s}from"../packem_shared/multi-semantic-release-BA6wsQZa.js";const _=d(import.meta.url),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,{exit:t}=u;var m=Object.defineProperty,y=n((o,e)=>m(o,"name",{value:e,configurable:!0}),"n");const a={array:!0,coerce:y(o=>{if(o.length===1&&o[0]?.trim()==="false")return[];const e=[];for(const i of o)e.push(...i.split(",").map(r=>r.trim()));return e},"coerce"),type:"array"};await(async()=>{const o=g(b(process.argv)).usage("$0 [args]").scriptName("multi-semantic-release").option("d",{alias:"dry-run",default:!1,describe:"Skip publishing",group:"Options",type:"boolean"}).option("h",{alias:"help",group:"Options"}).option("debug",{describe:"Output debugging information.",type:"boolean"}).option("silent",{describe:"Do not print configuration information.",type:"boolean"}).option("sequential-init",{describe:"Avoid hypothetical concurrent initialization collisions.",type:"boolean"}).option("sequential-prepare",{describe:"Avoid hypothetical concurrent preparation collisions. Do not use if your project have cyclic dependencies.",type:"boolean"}).option("first-parent",{describe:"Apply commit filtering to current branch only.",type:"boolean"}).option("deps.bump",{describe:"Define deps version updating rule. Allowed: override, satisfy, inherit.",type:"string"}).option("deps.release",{describe:"Define release type for dependent package if any of its deps changes. Supported values: patch, minor, major, inherit.",type:"string"}).option("deps.prefix",{describe:"Optional prefix to be attached to the next dep version if '--deps.bump' set to 'override'. Supported values: '^' | '~' | '' (empty string as default).",type:"string"}).option("b",{alias:"branches",describe:"Git branches to release from",...a,group:"Options"}).option("ci",{describe:"Toggle CI verifications",group:"Options",type:"boolean"}).option("ignore-packages",{...a,describe:"Packages list to be ignored on bumping process"}).option("ignore-private",{describe:"Exclude private packages. Enabled by default, pass 'no-ignore-private' to disable.",type:"boolean"}).option("tag-format",{describe:'Format to use for creating tag names. Should include "name" and "version" vars. Default: "${name}@${version}" generates "package-name@1.0.0"',type:"string"}).strict(!1).exitProcess(!1);try{const e=o.parse(process.argv.slice(2)),{help:i,version:r,...p}=e;(i||r)&&t(0),f(null,{},{},p).then(()=>{t(0)},c=>{s.error("[multi-semantic-release]:",c),t(1)})}catch(e){s.error("[multi-semantic-release]:",e),t(1)}})();
2
+ var l=Object.defineProperty;var n=(o,e)=>l(o,"name",{value:e,configurable:!0});import{createRequire as d}from"node:module";import g from"yargs";import{hideBin as b}from"yargs/helpers";import{q as f,u as s}from"../packem_shared/multi-semantic-release-SqbO8bN1.js";const _=d(import.meta.url),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,{exit:t}=u;var m=Object.defineProperty,y=n((o,e)=>m(o,"name",{value:e,configurable:!0}),"n");const a={array:!0,coerce:y(o=>{if(o.length===1&&o[0]?.trim()==="false")return[];const e=[];for(const i of o)e.push(...i.split(",").map(r=>r.trim()));return e},"coerce"),type:"array"};await(async()=>{const o=g(b(process.argv)).usage("$0 [args]").scriptName("multi-semantic-release").option("d",{alias:"dry-run",default:!1,describe:"Skip publishing",group:"Options",type:"boolean"}).option("h",{alias:"help",group:"Options"}).option("debug",{describe:"Output debugging information.",type:"boolean"}).option("silent",{describe:"Do not print configuration information.",type:"boolean"}).option("sequential-init",{describe:"Avoid hypothetical concurrent initialization collisions.",type:"boolean"}).option("sequential-prepare",{describe:"Avoid hypothetical concurrent preparation collisions. Do not use if your project have cyclic dependencies.",type:"boolean"}).option("first-parent",{describe:"Apply commit filtering to current branch only.",type:"boolean"}).option("deps.bump",{describe:"Define deps version updating rule. Allowed: override, satisfy, inherit.",type:"string"}).option("deps.release",{describe:"Define release type for dependent package if any of its deps changes. Supported values: patch, minor, major, inherit.",type:"string"}).option("deps.prefix",{describe:"Optional prefix to be attached to the next dep version if '--deps.bump' set to 'override'. Supported values: '^' | '~' | '' (empty string as default).",type:"string"}).option("b",{alias:"branches",describe:"Git branches to release from",...a,group:"Options"}).option("ci",{describe:"Toggle CI verifications",group:"Options",type:"boolean"}).option("ignore-packages",{...a,describe:"Packages list to be ignored on bumping process"}).option("ignore-private",{describe:"Exclude private packages. Enabled by default, pass 'no-ignore-private' to disable.",type:"boolean"}).option("tag-format",{describe:'Format to use for creating tag names. Should include "name" and "version" vars. Default: "${name}@${version}" generates "package-name@1.0.0"',type:"string"}).strict(!1).exitProcess(!1);try{const e=o.parse(process.argv.slice(2)),{help:i,version:r,...p}=e;(i||r)&&t(0),f(null,{},{},p).then(()=>{t(0)},c=>{s.error("[multi-semantic-release]:",c),t(1)})}catch(e){s.error("[multi-semantic-release]:",e),t(1)}})();
@@ -1 +1 @@
1
- import{createRequire as e}from"node:module";import"@semrel-extra/topo";import"lodash-es";import"semantic-release";import"semantic-release/package.json"with{type:"json"};import{q as _}from"./packem_shared/multi-semantic-release-BA6wsQZa.js";const t=e(import.meta.url),i=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;export{_ as default};
1
+ import{createRequire as e}from"node:module";import"@semrel-extra/topo";import"lodash-es";import"semantic-release";import"semantic-release/package.json"with{type:"json"};import{q as _}from"./packem_shared/multi-semantic-release-SqbO8bN1.js";const t=e(import.meta.url),i=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;export{_ as default};
@@ -0,0 +1,4 @@
1
+ var $e=Object.defineProperty;var y=(e,t)=>$e(e,"name",{value:t,configurable:!0});import{createRequire as je}from"node:module";import{topo as Te}from"@semrel-extra/topo";import{transform as De,isEqual as Ee,isObject as Z,pickBy as ee,castArray as L,sortBy as Ce,template as Se}from"lodash-es";import Me from"semantic-release";import Ne from"semantic-release/package.json"with{type:"json"};import{execa as oe}from"execa";import{getTagHead as Ae}from"semantic-release/lib/git.js";import te from"git-log-parser";import F from"debug";import ie from"signale";import{WritableStreamBuffer as le}from"stream-buffers";import $,{gt as He,prerelease as Le,rcompare as qe}from"semver";import Be from"detect-indent";import{detectNewline as ze}from"detect-newline";import{isAccessibleSync as pe,readJson as We}from"@visulima/fs";import{readYamlSync as Ie}from"@visulima/fs/yaml";import{resolve as de}from"@visulima/path";import{cosmiconfig as ue}from"cosmiconfig";import Ue from"resolve-from";import Ge from"semantic-release/lib/get-config.js";const _e=je(import.meta.url),A=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,B=y(e=>{if(typeof A<"u"&&A.versions&&A.versions.node){const[t,r]=A.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return A.getBuiltinModule(e)}return _e(e)},"__cjs_getBuiltinModule"),{isAbsolute:Y,normalize:ke,join:Oe,parse:Re,relative:xe,dirname:Pe}=B("node:path"),{existsSync:Q,lstatSync:X,readFileSync:Ve,writeFileSync:Fe}=B("node:fs"),{Writable:ce}=B("node:stream"),{createRequire:Je}=B("node:module");var Ke="3.0.0-alpha.4";const Ye={version:Ke};var Qe=Object.defineProperty,Xe=y((e,t)=>Qe(e,"name",{value:t,configurable:!0}),"g$3");const{Signale:Ze}=ie,U=["error","warn","info","debug","trace"],W=Xe((e,t)=>{const r=U.indexOf(e),a=U.indexOf(t);return r!==-1&&a!==-1&&r<=a},"assertLevel"),re={complete:"info",failure:"error",log:"info",success:"info"},j={config:{_level:"info",_signale:{},_stderr:process.stderr,_stdout:process.stdout,set level(e){e&&(W(e,"debug")&&F.enable("msr:"),W(e,"trace")&&F.enable("msr:,semantic-release:"),this._level=e)},get level(){return this._level},set stdio([e,t]){this._stdout=t,this._stderr=e,this._signale=new Ze({config:{displayLabel:!1,displayTimestamp:!0},stream:t,types:{complete:{badge:"🎉",color:"green",label:"",stream:[t]},error:{badge:"✖",color:"red",label:"",stream:[e]},log:{badge:"•",color:"magenta",label:"",stream:[t]},success:{badge:"✔",color:"green",label:"",stream:[t]}}})},get stdio(){return[this._stderr,this._stdout]}},prefix:"msr:",withScope(e){return{...this,debug:F(e||this.prefix),prefix:e}},...[...U,...Object.keys(re)].reduce((e,t)=>(e[t]=function(...r){W(re[t]||t,this.config.level)&&(this.config._signale[t]||console[t]||(()=>{}))(this.prefix,...r)},e),{}),debug:F("msr:")};var et=Object.defineProperty,tt=y((e,t)=>et(e,"name",{value:t,configurable:!0}),"t$3");class Sr extends Error{static{y(this,"ValueError")}static{tt(this,"ValueError")}constructor(t){super(t),this.name="ValueError"}}var rt=Object.defineProperty,T=y((e,t)=>rt(e,"name",{value:t,configurable:!0}),"t$2");const nt=T(e=>Y(e)&&Q(e)&&X(e).isDirectory(),"isDirectory"),at=T(e=>e instanceof ce||e instanceof le,"isStream"),st=T(e=>Y(e),"isAbsolute"),ot=T(e=>typeof e=="string"&&e.length>0,"isPath"),it=T(e=>e!==null&&typeof e=="object"&&!Array.isArray(e),"isObjectLike"),ct=T(e=>e===void 0?!0:typeof e=="string"&&/^[a-f0-9]{40}$/i.test(e),"isAlphanumeric40"),lt=T(e=>typeof e=="string"&&e.length>0,"isStringPlus"),pt=T(e=>typeof e=="string"&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(e),"isKebab"),dt=T(e=>typeof e=="string"&&e===e.toLowerCase(),"isLower"),ut=T(e=>Number.isInteger(e),"isInteger"),k=T((e,t)=>{const[r,a]=t.split(":").map(i=>i.trim()),s=a?.endsWith("?"),o=s&&a?a.slice(0,-1):a;if(!(s&&e==null)){if(o?.endsWith("[]")){const i=o.slice(0,-2);if(!Array.isArray(e))throw new TypeError(`${r}: Must be an array`);for(const p of e)k(p,`${r}[item]: ${i}`);return}switch(o){case"absolute":{if(!(typeof e=="string"&&st(e)))throw new TypeError(`${r}: Must be an absolute path`);break}case"alphanumeric{40}":{if(!ct(e))throw new TypeError(`${r}: Must be alphanumeric string with size 40 or empty`);break}case"directory":{if(!(typeof e=="string"&&nt(e)))throw new TypeError(`${r}: Must be directory that exists in the filesystem`);break}case"integer":{if(!(typeof e=="number"&&ut(e)))throw new TypeError(`${r}: Must be an integer`);break}case"kebab":{if(!(typeof e=="string"&&pt(e)))throw new TypeError(`${r}: Must be a kebab-case string`);break}case"lower":{if(!(typeof e=="string"&&dt(e)))throw new TypeError(`${r}: Must be a lowercase string`);break}case"objectlike":{if(!it(e))throw new TypeError(`${r}: Must be an object`);break}case"path":{if(!(typeof e=="string"&&ot(e)))throw new TypeError(`${r}: Must be valid path`);break}case"stream":{if(!at(e))throw new TypeError(`${r}: Must be an instance of stream.Writable or WritableStreamBuffer`);break}case"string":{if(typeof e!="string")throw new TypeError(`${r}: Must be a string`);break}case"string+":{if(!lt(e))throw new TypeError(`${r}: Must be a non-empty string`);break}default:if(e==null)throw new TypeError(`${r}: Must not be null or undefined`)}}},"validate");var gt=Object.defineProperty,ft=y((e,t)=>gt(e,"name",{value:t,configurable:!0}),"r$3");const S=ft((e,t=process.cwd())=>{k(e,"path: path"),k(t,"cwd: absolute");const r=ke(Y(e)?e:Oe(t,e)),{root:a}=Re(r);let s=r.length;for(;s>a.length&&(r[s-1]==="/"||r[s-1]==="\\");)s-=1;return s===r.length?r:r.slice(0,s)},"cleanPath");var mt=Object.defineProperty,M=y((e,t)=>mt(e,"name",{value:t,configurable:!0}),"n");const ht=M(e=>e.readable?new Promise((t,r)=>{if(!e.readable){t([]);return}let a=[];const s=M(()=>{a=[],e.removeListener("data",o),e.removeListener("end",i),e.removeListener("error",p),e.removeListener("close",l)},"cleanup"),o=M(d=>{a.push(d)},"onData"),i=M(()=>{t(a),s()},"onEnd"),p=M(d=>{r(d),s()},"onError"),l=M(()=>{t(a),s()},"onClose");e.on("data",o),e.on("end",i),e.on("error",p),e.on("close",l)}):Promise.resolve([]),"streamToArray");var bt=Object.defineProperty,yt=y((e,t)=>bt(e,"name",{value:t,configurable:!0}),"f");const{debug:ne}=j.withScope("msr:commitsFilter"),I=yt(async(e,t,r,a,s)=>{if(k(e,"cwd: directory"),e=S(e),k(t,"dir: path"),t=S(t,e),!Q(t)||!X(t).isDirectory())throw new TypeError("dir: Must be a path to an existing directory");if(k(r,"lastRelease: alphanumeric{40}?"),k(a,"nextRelease: alphanumeric{40}?"),t.indexOf(e)!==0)throw new TypeError("dir: Must be inside cwd");if(t===e)throw new TypeError("dir: Must not be equal to cwd");const o=await oe("git",["rev-parse","--show-toplevel"],{cwd:e}),i=S(o.stdout);Object.assign(te.fields,{committerDate:{key:"ci",type:Date},gitTags:"d",hash:"H",message:"B"});const p=xe(i,t),l=s?["--first-parent",s]:[],d=(r?`${r}..`:"")+(a||"HEAD"),c=[...l,d,"--",p],f=te.parse({_:c},{cwd:i,env:process.env}),g=await ht(f);return g.forEach(n=>{n.message=n.message.trim(),n.gitTags=n.gitTags.trim()}),ne("git log filter query: %o",c),ne("filtered commits: %O",g),g},"getCommitsFiltered");var vt=Object.defineProperty,G=y((e,t)=>vt(e,"name",{value:t,configurable:!0}),"a$2");const wt=G(e=>{if(!Q(e))throw new ReferenceError(`package.json file not found: "${e}"`);let t;try{t=X(e)}catch{throw new ReferenceError(`package.json cannot be read: "${e}"`)}if(!t.isFile())throw new ReferenceError(`package.json is not a file: "${e}"`);try{return Ve(e,"utf8")}catch{throw new ReferenceError(`package.json cannot be read: "${e}"`)}},"readManifest"),ge=G(e=>{const t=wt(e);let r;try{r=JSON.parse(t)}catch{throw new SyntaxError(`package.json could not be parsed: "${e}"`)}if(typeof r!="object"||r===null)throw new SyntaxError(`package.json was not an object: "${e}"`);const a=r;if(typeof a.name!="string"||a.name.length===0)throw new SyntaxError(`Package name must be non-empty string: "${e}"`);const s=G(o=>{if(Object.prototype.hasOwnProperty.call(a,o)&&typeof a[o]!="object")throw new SyntaxError(`Package ${o} must be object: "${e}"`)},"checkDeps");return s("dependencies"),s("devDependencies"),s("peerDependencies"),s("optionalDependencies"),Object.defineProperty(a,"__contents__",{enumerable:!1,value:t}),a},"getManifest");var $t=Object.defineProperty,fe=y((e,t)=>$t(e,"name",{value:t,configurable:!0}),"r$2");const jt=fe((e,t,r)=>e&&t&&r?e(t,r)?t:r:t||r,"selectVersionBy"),_t=jt.bind(null,He),kt=fe((e,t)=>e.filter(r=>t||!Le(r)).toSorted(qe)[0],"getLatestVersion");var Ot=Object.defineProperty,Rt=y((e,t)=>Ot(e,"name",{value:t,configurable:!0}),"e$1");const xt=Rt(e=>({indent:Be(e).indent,trailingWhitespace:ze(e)||""}),"recognizeFormat");var Pt=Object.defineProperty,R=y((e,t)=>Pt(e,"name",{value:t,configurable:!0}),"o$2");const{debug:J}=j.withScope("msr:updateDeps"),Tt=R((e,t,r)=>{const a=e?$.inc(e,"prerelease",r):void 0,s=$.inc(t,"prerelease",r)||void 0;return a?_t(s,a):s},"nextPreHighestVersion"),Dt=R((e,t,r,a)=>{if(!$.prerelease(t)){if(!$.parse(t))return;const o=$.inc(t,r||"patch");return o?`${o}-${a}.1`:void 0}const s=kt(e,!0);return Tt(s,t,a)},"nextPreVersionCases"),K=R((e,t,r,a,s)=>{const o=["patch","minor","major"],{localDeps:i,manifest:p={}}=e,l=e._lastRelease?.version,{dependencies:d={},devDependencies:c={},optionalDependencies:f={},peerDependencies:g={}}=p,n=[d,c,g,f],v=R((m,h,w)=>{const O=m[h];if(!w||!O)return!1;const V=At(O,w,t,s);return O!==V?(m[h]=V,!0):!1},"bumpDependency");let b;const u=i.filter(m=>!a.includes(m)).reduce((m,h)=>{const w=he(h,t,r,[...a,e],s);let O;if(w?O=(h._preRelease?Nt(h):St(h))||void 0:O=h._lastRelease?.version,!w&&h.localDeps&&h.localDeps.length>0){const N=K(h,t,r,[...a,e],s);if(N){const z=o.indexOf(N),we=b?o.indexOf(b):-1;z>we&&(b=N)}}if(!n.reduce((N,z)=>v(z,h.name,O)||N,!l)||!w)return m;if(!m)return w;const V=o.indexOf(w),ve=o.indexOf(m);return V>ve?w:m},void 0);return!u&&b?b:u},"getDependentRelease"),Et=R((e,t)=>{if(e.startsWith("workspace:")){const r=/^workspace:(([\^~*])?.*)$/u.exec(e);if(!r)return e;const[,a,s]=r;return s===a?s==="*"?t:s+t:a}return e},"substituteWorkspaceVersion"),me=R((e,t)=>De(e,(r,a,s)=>{Ee(a,t[s])||(r[s]=Z(a)&&Z(t[s])?JSON.stringify(me(a,t[s])):`${t[s]} → ${a}`)})||{},"difference"),Ct=R((e,t)=>{const r=`[${e.name}]`,a=ge(t),s=["dependencies","devDependencies","peerDependencies","optionalDependencies"].reduce((o,i)=>{const p=me(e[i],a[i]);return Object.keys(p).length>0&&(o[i]=p),o},{});return J(r,"package.json path=",t),Object.keys(s).length>0?(J(r,"changes=",s),!0):(J(r,"no deps changes"),!1)},"auditManifestChanges"),St=R(e=>{const t=e._lastRelease?.version;return t&&typeof e._nextType=="string"?$.inc(t,e._nextType):t||"1.0.0"},"getNextVersion"),Mt=R(e=>{const t=$.parse(e);if(!t)return null;const r=t.prerelease[0];return r==null?null:String(r)},"getPreReleaseTag"),Nt=R(e=>{const t=e._lastRelease?.version,r=Mt(t||"");return r!==null&&r!==e._preRelease||!t?`1.0.0-${e._preRelease}.1`:Dt([],t||"",e._nextType||"patch",e._preRelease||"")},"getNextPreVersion"),he=R((e,t="override",r="patch",a=[],s="")=>{const o=K(e,t,r,a,s);if(e._nextType)return e._nextType;if(!o&&e.localDeps&&e.localDeps.length>0&&e.manifest){const i=e.manifest,{dependencies:p={},devDependencies:l={},optionalDependencies:d={},peerDependencies:c={}}=i,f={...p,...l,...d,...c};if(e.localDeps.some(g=>!g.name||f[g.name]===void 0?!1:g._nextType?!0:g.localDeps&&g.localDeps.length>0?K(g,t,r,[...a,e],s)!==void 0:!1)&&r!=="inherit")return e._nextType=r,e._nextType}if(o)return e._nextType=r==="inherit"?o:r,e._nextType},"resolveReleaseType"),At=R((e,t,r="override",a="")=>{if(e=Et(e,t),r==="ignore"||e===t||(r==="satisfy"||r==="inherit")&&$.satisfies(t,e))return e;if(r==="inherit"){const s=t.split(".");return e.split(".").map((o,i)=>s[i]?o.replace(/\d+/u,s[i]):o).join(".")}return a+t},"resolveNextVersion"),Vt=R(e=>{const{manifest:t,path:r}=e,{indent:a,trailingWhitespace:s}=xt(t.__contents__);t.version=e?._nextRelease?.version||t.version,e.localDeps.forEach(o=>{const i=o._nextRelease||o._lastRelease;if(!i||!i.version)throw new Error(`Cannot release ${e.name} because dependency ${o.name} has not been released yet`)}),Ct(t,r)&&Fe(r,JSON.stringify(t,null,a)+s)},"updateManifestDeps");var Ft=Object.defineProperty,D=y((e,t)=>Ft(e,"name",{value:t,configurable:!0}),"c$2");const{debug:C}=j.withScope("msr:catalogChanges"),Ht=D(e=>{const t=de(e,"pnpm-workspace.yaml");if(!pe(t))return null;try{return Ie(t).catalogs||null}catch(r){return C("Failed to parse pnpm-workspace.yaml:",r),null}},"parsePnpmCatalog"),Lt=D(async e=>{const t=de(e,"package.json");if(!pe(t))return null;try{return(await We(t)).catalogs||null}catch(r){return C("Failed to parse package.json for yarn catalog:",r),null}},"parseYarnCatalog"),qt=D(async e=>Ht(e)||Lt(e),"getCatalogDefinitions"),Bt=D(async(e,t)=>{const{execa:r}=await import("execa");try{try{const a=await r("git",["show",`${t}:pnpm-workspace.yaml`],{cwd:e,reject:!1});if(a.exitCode===0&&a.stdout){const{parse:s}=await import("yaml"),o=s(a.stdout);if(o?.catalogs)return o.catalogs}}catch{}try{const a=await r("git",["show",`${t}:package.json`],{cwd:e,reject:!1});if(a.exitCode===0&&a.stdout)return JSON.parse(a.stdout).catalogs||null}catch{}}catch(a){C(`Failed to get catalog definitions at commit ${t}:`,a)}return null},"getCatalogDefinitionsAtCommit"),zt=D((e,t)=>{const r=D(o=>o.replace(/^[\^~]/,"").trim(),"extractVersion"),a=r(e),s=r(t);return!$.valid(a)||!$.valid(s)||$.eq(a,s)?null:$.major(a)!==$.major(s)?"major":$.minor(a)!==$.minor(s)?"minor":$.patch(a)!==$.patch(s)?"patch":null},"getReleaseTypeFromVersionChange"),Wt=D(async(e,t,r)=>{e=S(e);const a=await qt(e);if(!a)return C("No catalog definitions found"),{};if(!t)return C("No last release found, skipping catalog change detection"),{};const s=await Bt(e,t);if(!s)return C("No old catalog definitions found at last release"),{};const o={};for(const[i,p]of Object.entries(a)){const l=s[i];if(l)for(const[d,c]of Object.entries(p)){const f=l[d];if(f&&f!==c){const g=zt(f,c);g&&(o[i]||(o[i]={}),o[i][d]={newVersion:c,oldVersion:f,releaseType:g},C(`Catalog change detected: ${i}:${d} ${f} -> ${c} (${g})`))}}}return o},"detectCatalogChanges"),It=D((e,t,r)=>{const a=`catalog:${t}`,s=[];for(const o of e){const{manifest:i}=o,p=[i.dependencies,i.devDependencies,i.peerDependencies,i.optionalDependencies].filter(Boolean);for(const l of p)for(const[d,c]of Object.entries(l))if(c===a){if(r&&d!==r)continue;s.push(o);break}}return s},"findPackagesUsingCatalog"),Jt=D((e,t)=>{const r=new Map;for(const[a,s]of Object.entries(t))for(const[o,i]of Object.entries(s)){const p=It(e,a,o);for(const l of p){const d=r.get(l.name),c=i.releaseType;if(c)if(d){const f={major:3,minor:2,patch:1},g=f[d];f[c]>g&&r.set(l.name,c)}else r.set(l.name,c)}}return r},"getAffectedPackagesFromCatalogChanges");var Ut=Object.defineProperty,E=y((e,t)=>Ut(e,"name",{value:t,configurable:!0}),"p$2");const{debug:_}=j.withScope("msr:inlinePlugin"),Gt=E((e,t,r)=>{const{cwd:a}=t;let s=null,o=!1;return E(i=>{const{dir:p,name:l,plugins:d}=i,c=`[${l}]`,f={analyzeCommits:E(async(g,n)=>{if(!n.branch)throw new Error("context.branch is required");n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),i._preRelease=n.branch.prerelease||null,i._branch=n.branch.name,n.branch.channel&&_(c,`Branch channel: ${n.branch.channel}`),n.cwd=p;const v=r.firstParent?n.branch.name:void 0;if(n.commits=await I(a,p,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,v),i._lastRelease=n.lastRelease,!o&&n.lastRelease?.gitHead)try{const m=await Wt(a,n.lastRelease.gitHead,n.nextRelease?.gitHead);Object.keys(m).length>0?(s=Jt(e,m),o=!0,_(c,`Detected catalog changes affecting ${s.size} packages`)):o=!0}catch(m){_(c,"Failed to detect catalog changes:",m),o=!0}let b;s&&s.has(i.name)&&(b=s.get(i.name),_(c,`Catalog change triggers ${b} release`));let u;if(d.analyzeCommits&&(u=await d.analyzeCommits(n)||void 0),!u&&b)u=b;else if(u&&b){const m={major:3,minor:2,patch:1},h=m[u]||0;(m[b]||0)>h&&(u=b)}return i._nextType=u,i._analyzed=!0,r.deps&&(i._nextType=he(i,r.deps.bump,r.deps.release,[],r.deps.prefix)),_(c,"commits analyzed"),_(c,`release type: ${i._nextType}`),i._nextType??null},"analyzeCommits"),generateNotes:E(async(g,n)=>{n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),n.cwd=p,i._nextRelease=n.nextRelease,n.nextRelease?.channel&&_(c,`Release channel: ${n.nextRelease.channel}`);const v=[];if(n.lastRelease&&n.lastRelease.gitTag&&(!n.lastRelease.gitHead||n.lastRelease.gitHead===n.lastRelease.gitTag)){const h=await oe("git",["rev-parse","--show-toplevel"],{cwd:n.cwd}),w=S(h.stdout);n.lastRelease.gitHead=await Ae(n.lastRelease.gitTag,{cwd:w,env:n.env})}if(!n.branch)throw new Error("context.branch is required");const b=r.firstParent?n.branch.name:void 0;n.commits=await I(a,p,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,b);let u;d.generateNotes&&(u=await d.generateNotes(n)),u&&v.push(u.replace(/^(#+) (\[?\d+\.\d+\.\d+\]?)/u,`$1 ${l} $2`));const m=i.localDeps.filter(h=>h._nextRelease);if(m.length>0){v.push("### Dependencies");const h=m.map(w=>{const O=w._nextRelease;return O?`* **${w.name}:** upgraded to ${O.version}`:""}).filter(Boolean);v.push(h.join(`
2
+ `))}return _(c,"notes generated"),v.join(`
3
+
4
+ `)},"generateNotes"),prepare:E(async(g,n)=>{if(n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),r.dryRun){_(c,"skipping prepare in dry-run mode");return}if(Vt(i),i._depsUpdated=!0,n.cwd=p,!n.branch)throw new Error("context.branch is required");const v=r.firstParent?n.branch.name:void 0;n.commits=await I(a,p,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,v),d.prepare&&await d.prepare(n),i._prepared=!0,_(c,"prepared")},"prepare"),publish:E(async(g,n)=>{if(n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),r.dryRun)return _(c,"skipping publish in dry-run mode"),[];n.cwd=p;let v=[];if(d.publish){const b=await d.publish?.(n);b!==void 0&&(v=Array.isArray(b)?b:[b])}return i._published=!0,_(c,"published"),v.length>0?v[0]:{}},"publish"),verifyConditions:E(async(g,n)=>{n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),Object.assign(i.fakeLogger,n.logger||{}),n.cwd=p,d.verifyConditions&&await d.verifyConditions(n),i._ready=!0,_(c,"verified conditions")},"verifyConditions"),verifyRelease:E(async(g,n)=>{n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),n.cwd=p,await d?.verifyRelease?.(n),_(c,"release verified")},"verifyRelease")};return Object.keys(f).forEach(g=>Reflect.defineProperty(f[g],"pluginName",{enumerable:!0,value:"Inline plugin",writable:!1})),_(c,"inlinePlugin created"),f},"createInlinePlugin")},"createInlinePluginCreator");var Kt=Object.defineProperty,Yt=y((e,t)=>Kt(e,"name",{value:t,configurable:!0}),"o$1");const x="release",Qt=["package.json",`.${x}rc`,`.${x}rc.json`,`.${x}rc.yaml`,`.${x}rc.yml`,`.${x}rc.js`,`.${x}rc.cjs`,`.${x}rc.mjs`,`${x}.config.js`,`${x}.config.cjs`,`${x}.config.mjs`],be=Yt(async e=>(await ue(x,{mergeSearchPlaces:!1,searchPlaces:Qt}).search(e))?.config??{},"getConfig");var Xt=Object.defineProperty,ye=y((e,t)=>Xt(e,"name",{value:t,configurable:!0}),"r");const ae=ye(e=>e==null,"isNil"),H=ye((e={},t={})=>({...e,...ee(t,r=>!ae(r)),deps:{...e.deps,...ee(t.deps,r=>!ae(r))},ignorePackages:[...new Set([...L(e.ignorePackages||[]),...L(t.ignorePackages||[])])]}),"mergeConfig");var Zt=Object.defineProperty,er=y((e,t)=>Zt(e,"name",{value:t,configurable:!0}),"o");const P="multi-release",tr=["package.json",`.${P}rc`,`.${P}rc.json`,`.${P}rc.yaml`,`.${P}rc.yml`,`.${P}rc.js`,`.${P}rc.cjs`,`.${P}rc.mjs`,`${P}.config.js`,`${P}.config.cjs`,`${P}.config.mjs`],rr=er(async(e,t)=>{const{config:r}=await ue(P,{searchPlaces:tr}).search(e)||{},{extends:a,...s}={...r};let o=s;if(a){const i=Je(import.meta.url),p=L(a).reduce((l,d)=>{const c=i(Ue(e,d));return H(l,c)},{});o=H(o,p)}return o=H({branches:void 0,ci:void 0,debug:!1,deps:{bump:"override",prefix:"",release:"patch"},dryRun:void 0,firstParent:!1,ignorePackages:[],ignorePrivate:!0,sequentialInit:!1,sequentialPrepare:!0,silent:!1,tagFormat:"${name}@${version}"},o),H(o,t)},"getConfigMultiSemrel");var nr=Object.defineProperty,ar=y((e,t)=>nr(e,"name",{value:t,configurable:!0}),"t");const{Signale:sr}=ie,or=ar(async({cwd:e,env:t,stderr:r,stdout:a},s)=>{try{const o=new le,i=new sr({stream:o});return await Ge({cwd:e,env:t,logger:i,stderr:r,stdout:a},s)}catch(o){throw j.failure("Error in semantic-release getConfig(): %0",o),o}},"getConfigSemantic");var ir=Object.defineProperty,cr=y((e,t)=>ir(e,"name",{value:t,configurable:!0}),"s");class se extends ce{static{y(this,"p")}static{cr(this,"RescopedStream")}_stream;_scope;constructor(t,r){super(),k(r,"scope: string"),k(t,"stream: stream"),this._stream=t,this._scope=r}write(t){return k(t,"msg: string"),this._stream.write(t.replace("[semantic-release]",`[${this._scope}]`))}}var lr=Object.defineProperty,q=y((e,t)=>lr(e,"name",{value:t,configurable:!0}),"v");const pr=q(async(e,{cwd:t,env:r,globalOptions:a,inputOptions:s,stderr:o,stdout:i})=>{e=S(e,t);const p=Pe(e),l=ge(e),{name:d}=l,c=Object.keys({...l.dependencies,...l.devDependencies,...l.peerDependencies,...l.optionalDependencies}),f=await be(p),g={...a,...f,...s},n={error(){},log(){}},v=Object.fromEntries(Object.entries(r).filter(([,m])=>m!==void 0).map(([m,h])=>[m,String(h)])),{options:b,plugins:u}=await or({cwd:p,env:v,stderr:o,stdout:i},g);return{deps:c,dir:p,fakeLogger:n,localDeps:[],manifest:l,name:d,options:b,path:e,plugins:u}},"getPackage"),dr=q(async(e,t,r,a)=>{const{dir:s,name:o,options:i}=e,{env:p,stderr:l,stdout:d}=r,c=t(e),f={...i,...c},g={name:o,version:"${version}"},n="${name}@${version}";return f.tagFormat=Se(a.tagFormat||n)(g),f.debug=a.debug,f.dryRun=a.dryRun===void 0?f.dryRun:a.dryRun,f.ci=a.ci===void 0?f.ci:a.ci,f.branches=a.branches?L(a.branches):f.branches,f._pkgOptions=i,e.result=await Me(f,{cwd:s,env:p,stderr:new se(l,o),stdout:new se(d,o)}),e},"releasePackage"),Mr=q(async(e,t={},{cwd:r=process.cwd(),env:a=process.env,stderr:s=process.stderr,stdout:o=process.stdout}={},i={})=>{e&&k(e,"paths: string[]"),k(r,"cwd: directory"),k(a,"env: objectlike"),k(o,"stdout: stream"),k(s,"stderr: stream"),r=S(r);const p=await rr(r,i),l={deps:{},...p,...i};j.config.stdio=[s,o],j.config.level=l.logLevel,l.silent&&(j.config.level="silent"),l.debug&&(j.config.level="debug"),j.info(`multi-semantic-release version: ${Ye.version}`),j.info(`semantic-release version: ${Ne.version}`),l.debug&&j.info(`flags: ${JSON.stringify(l,null,2)}`);const d=await be(r),c={cwd:r,env:a,globalOptions:d,inputOptions:t,stderr:s,stdout:o},{packages:f,queue:g}=await Te({cwd:r,filter:q((u=>{const m=u.manifest;return(!l.ignorePrivate||!m.private)&&(e?e.includes(u.manifestAbsPath)||e.includes(u.manifestRelPath):!0)}),"filter"),workspacesExtra:Array.isArray(l.ignorePackages)?l.ignorePackages.map(u=>`!${u}`):[]});e=e||Object.values(f).map(u=>u.manifestPath),j.complete(`Started multirelease! Loading ${e.length} packages...`);let n=await Promise.all(e.map(u=>pr(u,c)));n=n.filter(u=>u!==void 0),n.forEach(u=>{u.localDeps=[...new Set(u.deps.map(m=>n.find(h=>m===h.name)).filter(Boolean))],j.success(`Loaded package ${u.name}`)}),j.complete(`Queued ${g.length} packages! Starting release...`);const v=Gt(n,c,l),b=await g.reduce(async(u,m)=>{const h=await u,w=n.find(({name:O})=>O===m);if(w){const{result:O}=await dr(w,v,c,l);if(O)return h+1}return h},Promise.resolve(0));return j.complete(`Released ${b} of ${g.length} packages, semantically!`),Ce(n,({name:u})=>g.indexOf(u))},"multiSemanticRelease");export{Mr as q,j as u};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anolilab/multi-semantic-release",
3
- "version": "3.0.0-alpha.4",
3
+ "version": "3.0.0",
4
4
  "description": "A multi semantic release tool for a monorepo.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,4 +0,0 @@
1
- var $e=Object.defineProperty;var y=(e,t)=>$e(e,"name",{value:t,configurable:!0});import{createRequire as je}from"node:module";import{topo as Te}from"@semrel-extra/topo";import{transform as De,isEqual as Ee,isObject as Z,pickBy as ee,castArray as L,sortBy as Ce,template as Se}from"lodash-es";import Me from"semantic-release";import Ne from"semantic-release/package.json"with{type:"json"};import{execa as oe}from"execa";import{getTagHead as Ae}from"semantic-release/lib/git.js";import te from"git-log-parser";import F from"debug";import ie from"signale";import{WritableStreamBuffer as le}from"stream-buffers";import $,{gt as He,prerelease as Le,rcompare as qe}from"semver";import Be from"detect-indent";import{detectNewline as ze}from"detect-newline";import{isAccessibleSync as pe,readJson as We}from"@visulima/fs";import{readYamlSync as Ie}from"@visulima/fs/yaml";import{resolve as de}from"@visulima/path";import{cosmiconfig as ue}from"cosmiconfig";import Ue from"resolve-from";import Ge from"semantic-release/lib/get-config.js";const _e=je(import.meta.url),A=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,B=y(e=>{if(typeof A<"u"&&A.versions&&A.versions.node){const[t,r]=A.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return A.getBuiltinModule(e)}return _e(e)},"__cjs_getBuiltinModule"),{isAbsolute:Y,normalize:ke,join:Oe,parse:Re,relative:xe,dirname:Pe}=B("node:path"),{existsSync:Q,lstatSync:X,readFileSync:Ve,writeFileSync:Fe}=B("node:fs"),{Writable:ce}=B("node:stream"),{createRequire:Je}=B("node:module");var Ke="3.0.0-alpha.3";const Ye={version:Ke};var Qe=Object.defineProperty,Xe=y((e,t)=>Qe(e,"name",{value:t,configurable:!0}),"g$3");const{Signale:Ze}=ie,U=["error","warn","info","debug","trace"],W=Xe((e,t)=>{const r=U.indexOf(e),a=U.indexOf(t);return r!==-1&&a!==-1&&r<=a},"assertLevel"),re={complete:"info",failure:"error",log:"info",success:"info"},j={config:{_level:"info",_signale:{},_stderr:process.stderr,_stdout:process.stdout,set level(e){e&&(W(e,"debug")&&F.enable("msr:"),W(e,"trace")&&F.enable("semantic-release:"),this._level=e)},get level(){return this._level},set stdio([e,t]){this._stdout=t,this._stderr=e,this._signale=new Ze({config:{displayLabel:!1,displayTimestamp:!0},stream:t,types:{complete:{badge:"🎉",color:"green",label:"",stream:[t]},error:{badge:"✖",color:"red",label:"",stream:[e]},log:{badge:"•",color:"magenta",label:"",stream:[t]},success:{badge:"✔",color:"green",label:"",stream:[t]}}})},get stdio(){return[this._stderr,this._stdout]}},prefix:"msr:",withScope(e){return{...this,debug:F(e||this.prefix),prefix:e}},...[...U,...Object.keys(re)].reduce((e,t)=>(e[t]=function(...r){W(re[t]||t,this.config.level)&&(this.config._signale[t]||console[t]||(()=>{}))(this.prefix,...r)},e),{}),debug:F("msr:")};var et=Object.defineProperty,tt=y((e,t)=>et(e,"name",{value:t,configurable:!0}),"t$3");class Sr extends Error{static{y(this,"ValueError")}static{tt(this,"ValueError")}constructor(t){super(t),this.name="ValueError"}}var rt=Object.defineProperty,T=y((e,t)=>rt(e,"name",{value:t,configurable:!0}),"t$2");const nt=T(e=>Y(e)&&Q(e)&&X(e).isDirectory(),"isDirectory"),at=T(e=>e instanceof ce||e instanceof le,"isStream"),st=T(e=>Y(e),"isAbsolute"),ot=T(e=>typeof e=="string"&&e.length>0,"isPath"),it=T(e=>e!==null&&typeof e=="object"&&!Array.isArray(e),"isObjectLike"),ct=T(e=>e===void 0?!0:typeof e=="string"&&/^[a-f0-9]{40}$/i.test(e),"isAlphanumeric40"),lt=T(e=>typeof e=="string"&&e.length>0,"isStringPlus"),pt=T(e=>typeof e=="string"&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(e),"isKebab"),dt=T(e=>typeof e=="string"&&e===e.toLowerCase(),"isLower"),ut=T(e=>Number.isInteger(e),"isInteger"),k=T((e,t)=>{const[r,a]=t.split(":").map(i=>i.trim()),s=a?.endsWith("?"),o=s&&a?a.slice(0,-1):a;if(!(s&&e==null)){if(o?.endsWith("[]")){const i=o.slice(0,-2);if(!Array.isArray(e))throw new TypeError(`${r}: Must be an array`);for(const p of e)k(p,`${r}[item]: ${i}`);return}switch(o){case"absolute":{if(!(typeof e=="string"&&st(e)))throw new TypeError(`${r}: Must be an absolute path`);break}case"alphanumeric{40}":{if(!ct(e))throw new TypeError(`${r}: Must be alphanumeric string with size 40 or empty`);break}case"directory":{if(!(typeof e=="string"&&nt(e)))throw new TypeError(`${r}: Must be directory that exists in the filesystem`);break}case"integer":{if(!(typeof e=="number"&&ut(e)))throw new TypeError(`${r}: Must be an integer`);break}case"kebab":{if(!(typeof e=="string"&&pt(e)))throw new TypeError(`${r}: Must be a kebab-case string`);break}case"lower":{if(!(typeof e=="string"&&dt(e)))throw new TypeError(`${r}: Must be a lowercase string`);break}case"objectlike":{if(!it(e))throw new TypeError(`${r}: Must be an object`);break}case"path":{if(!(typeof e=="string"&&ot(e)))throw new TypeError(`${r}: Must be valid path`);break}case"stream":{if(!at(e))throw new TypeError(`${r}: Must be an instance of stream.Writable or WritableStreamBuffer`);break}case"string":{if(typeof e!="string")throw new TypeError(`${r}: Must be a string`);break}case"string+":{if(!lt(e))throw new TypeError(`${r}: Must be a non-empty string`);break}default:if(e==null)throw new TypeError(`${r}: Must not be null or undefined`)}}},"validate");var gt=Object.defineProperty,ft=y((e,t)=>gt(e,"name",{value:t,configurable:!0}),"r$3");const S=ft((e,t=process.cwd())=>{k(e,"path: path"),k(t,"cwd: absolute");const r=ke(Y(e)?e:Oe(t,e)),{root:a}=Re(r);let s=r.length;for(;s>a.length&&(r[s-1]==="/"||r[s-1]==="\\");)s-=1;return s===r.length?r:r.slice(0,s)},"cleanPath");var mt=Object.defineProperty,M=y((e,t)=>mt(e,"name",{value:t,configurable:!0}),"n");const ht=M(e=>e.readable?new Promise((t,r)=>{if(!e.readable){t([]);return}let a=[];const s=M(()=>{a=[],e.removeListener("data",o),e.removeListener("end",i),e.removeListener("error",p),e.removeListener("close",l)},"cleanup"),o=M(d=>{a.push(d)},"onData"),i=M(()=>{t(a),s()},"onEnd"),p=M(d=>{r(d),s()},"onError"),l=M(()=>{t(a),s()},"onClose");e.on("data",o),e.on("end",i),e.on("error",p),e.on("close",l)}):Promise.resolve([]),"streamToArray");var bt=Object.defineProperty,yt=y((e,t)=>bt(e,"name",{value:t,configurable:!0}),"f");const{debug:ne}=j.withScope("msr:commitsFilter"),I=yt(async(e,t,r,a,s)=>{if(k(e,"cwd: directory"),e=S(e),k(t,"dir: path"),t=S(t,e),!Q(t)||!X(t).isDirectory())throw new TypeError("dir: Must be a path to an existing directory");if(k(r,"lastRelease: alphanumeric{40}?"),k(a,"nextRelease: alphanumeric{40}?"),t.indexOf(e)!==0)throw new TypeError("dir: Must be inside cwd");if(t===e)throw new TypeError("dir: Must not be equal to cwd");const o=await oe("git",["rev-parse","--show-toplevel"],{cwd:e}),i=S(o.stdout);Object.assign(te.fields,{committerDate:{key:"ci",type:Date},gitTags:"d",hash:"H",message:"B"});const p=xe(i,t),l=s?["--first-parent",s]:[],d=(r?`${r}..`:"")+(a||"HEAD"),c=[...l,d,"--",p],f=te.parse({_:c},{cwd:i,env:process.env}),g=await ht(f);return g.forEach(n=>{n.message=n.message.trim(),n.gitTags=n.gitTags.trim()}),ne("git log filter query: %o",c),ne("filtered commits: %O",g),g},"getCommitsFiltered");var vt=Object.defineProperty,G=y((e,t)=>vt(e,"name",{value:t,configurable:!0}),"a$2");const wt=G(e=>{if(!Q(e))throw new ReferenceError(`package.json file not found: "${e}"`);let t;try{t=X(e)}catch{throw new ReferenceError(`package.json cannot be read: "${e}"`)}if(!t.isFile())throw new ReferenceError(`package.json is not a file: "${e}"`);try{return Ve(e,"utf8")}catch{throw new ReferenceError(`package.json cannot be read: "${e}"`)}},"readManifest"),ge=G(e=>{const t=wt(e);let r;try{r=JSON.parse(t)}catch{throw new SyntaxError(`package.json could not be parsed: "${e}"`)}if(typeof r!="object"||r===null)throw new SyntaxError(`package.json was not an object: "${e}"`);const a=r;if(typeof a.name!="string"||a.name.length===0)throw new SyntaxError(`Package name must be non-empty string: "${e}"`);const s=G(o=>{if(Object.prototype.hasOwnProperty.call(a,o)&&typeof a[o]!="object")throw new SyntaxError(`Package ${o} must be object: "${e}"`)},"checkDeps");return s("dependencies"),s("devDependencies"),s("peerDependencies"),s("optionalDependencies"),Object.defineProperty(a,"__contents__",{enumerable:!1,value:t}),a},"getManifest");var $t=Object.defineProperty,fe=y((e,t)=>$t(e,"name",{value:t,configurable:!0}),"r$2");const jt=fe((e,t,r)=>e&&t&&r?e(t,r)?t:r:t||r,"selectVersionBy"),_t=jt.bind(null,He),kt=fe((e,t)=>e.filter(r=>t||!Le(r)).toSorted(qe)[0],"getLatestVersion");var Ot=Object.defineProperty,Rt=y((e,t)=>Ot(e,"name",{value:t,configurable:!0}),"e$1");const xt=Rt(e=>({indent:Be(e).indent,trailingWhitespace:ze(e)||""}),"recognizeFormat");var Pt=Object.defineProperty,R=y((e,t)=>Pt(e,"name",{value:t,configurable:!0}),"o$2");const{debug:J}=j.withScope("msr:updateDeps"),Tt=R((e,t,r)=>{const a=e?$.inc(e,"prerelease",r):void 0,s=$.inc(t,"prerelease",r)||void 0;return a?_t(s,a):s},"nextPreHighestVersion"),Dt=R((e,t,r,a)=>{if(!$.prerelease(t)){if(!$.parse(t))return;const o=$.inc(t,r||"patch");return o?`${o}-${a}.1`:void 0}const s=kt(e,!0);return Tt(s,t,a)},"nextPreVersionCases"),K=R((e,t,r,a,s)=>{const o=["patch","minor","major"],{localDeps:i,manifest:p={}}=e,l=e._lastRelease?.version,{dependencies:d={},devDependencies:c={},optionalDependencies:f={},peerDependencies:g={}}=p,n=[d,c,g,f],v=R((m,h,w)=>{const O=m[h];if(!w||!O)return!1;const V=At(O,w,t,s);return O!==V?(m[h]=V,!0):!1},"bumpDependency");let b;const u=i.filter(m=>!a.includes(m)).reduce((m,h)=>{const w=he(h,t,r,[...a,e],s);let O;if(w?O=(h._preRelease?Nt(h):St(h))||void 0:O=h._lastRelease?.version,!w&&h.localDeps&&h.localDeps.length>0){const N=K(h,t,r,[...a,e],s);if(N){const z=o.indexOf(N),we=b?o.indexOf(b):-1;z>we&&(b=N)}}if(!n.reduce((N,z)=>v(z,h.name,O)||N,!l)||!w)return m;if(!m)return w;const V=o.indexOf(w),ve=o.indexOf(m);return V>ve?w:m},void 0);return!u&&b?b:u},"getDependentRelease"),Et=R((e,t)=>{if(e.startsWith("workspace:")){const r=/^workspace:(([\^~*])?.*)$/u.exec(e);if(!r)return e;const[,a,s]=r;return s===a?s==="*"?t:s+t:a}return e},"substituteWorkspaceVersion"),me=R((e,t)=>De(e,(r,a,s)=>{Ee(a,t[s])||(r[s]=Z(a)&&Z(t[s])?JSON.stringify(me(a,t[s])):`${t[s]} → ${a}`)})||{},"difference"),Ct=R((e,t)=>{const r=`[${e.name}]`,a=ge(t),s=["dependencies","devDependencies","peerDependencies","optionalDependencies"].reduce((o,i)=>{const p=me(e[i],a[i]);return Object.keys(p).length>0&&(o[i]=p),o},{});return J(r,"package.json path=",t),Object.keys(s).length>0?(J(r,"changes=",s),!0):(J(r,"no deps changes"),!1)},"auditManifestChanges"),St=R(e=>{const t=e._lastRelease?.version;return t&&typeof e._nextType=="string"?$.inc(t,e._nextType):t||"1.0.0"},"getNextVersion"),Mt=R(e=>{const t=$.parse(e);if(!t)return null;const r=t.prerelease[0];return r==null?null:String(r)},"getPreReleaseTag"),Nt=R(e=>{const t=e._lastRelease?.version,r=Mt(t||"");return r!==null&&r!==e._preRelease||!t?`1.0.0-${e._preRelease}.1`:Dt([],t||"",e._nextType||"patch",e._preRelease||"")},"getNextPreVersion"),he=R((e,t="override",r="patch",a=[],s="")=>{const o=K(e,t,r,a,s);if(e._nextType)return e._nextType;if(!o&&e.localDeps&&e.localDeps.length>0&&e.manifest){const i=e.manifest,{dependencies:p={},devDependencies:l={},optionalDependencies:d={},peerDependencies:c={}}=i,f={...p,...l,...d,...c};if(e.localDeps.some(g=>!g.name||f[g.name]===void 0?!1:g._nextType?!0:g.localDeps&&g.localDeps.length>0?K(g,t,r,[...a,e],s)!==void 0:!1)&&r!=="inherit")return e._nextType=r,e._nextType}if(o)return e._nextType=r==="inherit"?o:r,e._nextType},"resolveReleaseType"),At=R((e,t,r="override",a="")=>{if(e=Et(e,t),r==="ignore"||e===t||(r==="satisfy"||r==="inherit")&&$.satisfies(t,e))return e;if(r==="inherit"){const s=t.split(".");return e.split(".").map((o,i)=>s[i]?o.replace(/\d+/u,s[i]):o).join(".")}return a+t},"resolveNextVersion"),Vt=R(e=>{const{manifest:t,path:r}=e,{indent:a,trailingWhitespace:s}=xt(t.__contents__);t.version=e?._nextRelease?.version||t.version,e.localDeps.forEach(o=>{const i=o._nextRelease||o._lastRelease;if(!i||!i.version)throw new Error(`Cannot release ${e.name} because dependency ${o.name} has not been released yet`)}),Ct(t,r)&&Fe(r,JSON.stringify(t,null,a)+s)},"updateManifestDeps");var Ft=Object.defineProperty,D=y((e,t)=>Ft(e,"name",{value:t,configurable:!0}),"c$2");const{debug:C}=j.withScope("msr:catalogChanges"),Ht=D(e=>{const t=de(e,"pnpm-workspace.yaml");if(!pe(t))return null;try{return Ie(t).catalogs||null}catch(r){return C("Failed to parse pnpm-workspace.yaml:",r),null}},"parsePnpmCatalog"),Lt=D(async e=>{const t=de(e,"package.json");if(!pe(t))return null;try{return(await We(t)).catalogs||null}catch(r){return C("Failed to parse package.json for yarn catalog:",r),null}},"parseYarnCatalog"),qt=D(async e=>Ht(e)||Lt(e),"getCatalogDefinitions"),Bt=D(async(e,t)=>{const{execa:r}=await import("execa");try{try{const a=await r("git",["show",`${t}:pnpm-workspace.yaml`],{cwd:e,reject:!1});if(a.exitCode===0&&a.stdout){const{parse:s}=await import("yaml"),o=s(a.stdout);if(o?.catalogs)return o.catalogs}}catch{}try{const a=await r("git",["show",`${t}:package.json`],{cwd:e,reject:!1});if(a.exitCode===0&&a.stdout)return JSON.parse(a.stdout).catalogs||null}catch{}}catch(a){C(`Failed to get catalog definitions at commit ${t}:`,a)}return null},"getCatalogDefinitionsAtCommit"),zt=D((e,t)=>{const r=D(o=>o.replace(/^[\^~]/,"").trim(),"extractVersion"),a=r(e),s=r(t);return!$.valid(a)||!$.valid(s)||$.eq(a,s)?null:$.major(a)!==$.major(s)?"major":$.minor(a)!==$.minor(s)?"minor":$.patch(a)!==$.patch(s)?"patch":null},"getReleaseTypeFromVersionChange"),Wt=D(async(e,t,r)=>{e=S(e);const a=await qt(e);if(!a)return C("No catalog definitions found"),{};if(!t)return C("No last release found, skipping catalog change detection"),{};const s=await Bt(e,t);if(!s)return C("No old catalog definitions found at last release"),{};const o={};for(const[i,p]of Object.entries(a)){const l=s[i];if(l)for(const[d,c]of Object.entries(p)){const f=l[d];if(f&&f!==c){const g=zt(f,c);g&&(o[i]||(o[i]={}),o[i][d]={newVersion:c,oldVersion:f,releaseType:g},C(`Catalog change detected: ${i}:${d} ${f} -> ${c} (${g})`))}}}return o},"detectCatalogChanges"),It=D((e,t,r)=>{const a=`catalog:${t}`,s=[];for(const o of e){const{manifest:i}=o,p=[i.dependencies,i.devDependencies,i.peerDependencies,i.optionalDependencies].filter(Boolean);for(const l of p)for(const[d,c]of Object.entries(l))if(c===a){if(r&&d!==r)continue;s.push(o);break}}return s},"findPackagesUsingCatalog"),Jt=D((e,t)=>{const r=new Map;for(const[a,s]of Object.entries(t))for(const[o,i]of Object.entries(s)){const p=It(e,a,o);for(const l of p){const d=r.get(l.name),c=i.releaseType;if(c)if(d){const f={major:3,minor:2,patch:1},g=f[d];f[c]>g&&r.set(l.name,c)}else r.set(l.name,c)}}return r},"getAffectedPackagesFromCatalogChanges");var Ut=Object.defineProperty,E=y((e,t)=>Ut(e,"name",{value:t,configurable:!0}),"p$2");const{debug:_}=j.withScope("msr:inlinePlugin"),Gt=E((e,t,r)=>{const{cwd:a}=t;let s=null,o=!1;return E(i=>{const{dir:p,name:l,plugins:d}=i,c=`[${l}]`,f={analyzeCommits:E(async(g,n)=>{if(!n.branch)throw new Error("context.branch is required");n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),i._preRelease=n.branch.prerelease||null,i._branch=n.branch.name,n.branch.channel&&_(c,`Branch channel: ${n.branch.channel}`),n.cwd=p;const v=r.firstParent?n.branch.name:void 0;if(n.commits=await I(a,p,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,v),i._lastRelease=n.lastRelease,!o&&n.lastRelease?.gitHead)try{const m=await Wt(a,n.lastRelease.gitHead,n.nextRelease?.gitHead);Object.keys(m).length>0?(s=Jt(e,m),o=!0,_(c,`Detected catalog changes affecting ${s.size} packages`)):o=!0}catch(m){_(c,"Failed to detect catalog changes:",m),o=!0}let b;s&&s.has(i.name)&&(b=s.get(i.name),_(c,`Catalog change triggers ${b} release`));let u;if(d.analyzeCommits&&(u=await d.analyzeCommits(n)||void 0),!u&&b)u=b;else if(u&&b){const m={major:3,minor:2,patch:1},h=m[u]||0;(m[b]||0)>h&&(u=b)}return i._nextType=u,i._analyzed=!0,r.deps&&(i._nextType=he(i,r.deps.bump,r.deps.release,[],r.deps.prefix)),_(c,"commits analyzed"),_(c,`release type: ${i._nextType}`),i._nextType},"analyzeCommits"),generateNotes:E(async(g,n)=>{n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),n.cwd=p,i._nextRelease=n.nextRelease,n.nextRelease?.channel&&_(c,`Release channel: ${n.nextRelease.channel}`);const v=[];if(n.lastRelease&&n.lastRelease.gitTag&&(!n.lastRelease.gitHead||n.lastRelease.gitHead===n.lastRelease.gitTag)){const h=await oe("git",["rev-parse","--show-toplevel"],{cwd:n.cwd}),w=S(h.stdout);n.lastRelease.gitHead=await Ae(n.lastRelease.gitTag,{cwd:w,env:n.env})}if(!n.branch)throw new Error("context.branch is required");const b=r.firstParent?n.branch.name:void 0;n.commits=await I(a,p,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,b);let u;d.generateNotes&&(u=await d.generateNotes(n)),u&&v.push(u.replace(/^(#+) (\[?\d+\.\d+\.\d+\]?)/u,`$1 ${l} $2`));const m=i.localDeps.filter(h=>h._nextRelease);if(m.length>0){v.push("### Dependencies");const h=m.map(w=>{const O=w._nextRelease;return O?`* **${w.name}:** upgraded to ${O.version}`:""}).filter(Boolean);v.push(h.join(`
2
- `))}return _(c,"notes generated"),v.join(`
3
-
4
- `)},"generateNotes"),prepare:E(async(g,n)=>{if(n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),r.dryRun){_(c,"skipping prepare in dry-run mode");return}if(Vt(i),i._depsUpdated=!0,n.cwd=p,!n.branch)throw new Error("context.branch is required");const v=r.firstParent?n.branch.name:void 0;n.commits=await I(a,p,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,v),d.prepare&&await d.prepare(n),i._prepared=!0,_(c,"prepared")},"prepare"),publish:E(async(g,n)=>{if(n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),r.dryRun)return _(c,"skipping publish in dry-run mode"),[];n.cwd=p;let v=[];if(d.publish){const b=await d.publish?.(n);b!==void 0&&(v=Array.isArray(b)?b:[b])}return i._published=!0,_(c,"published"),v.length>0?v[0]:{}},"publish"),verifyConditions:E(async(g,n)=>{n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),Object.assign(i.fakeLogger,n.logger||{}),n.cwd=p,d.verifyConditions&&await d.verifyConditions(n),i._ready=!0,_(c,"verified conditions")},"verifyConditions"),verifyRelease:E(async(g,n)=>{n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),n.cwd=p,await d?.verifyRelease?.(n),_(c,"release verified")},"verifyRelease")};return Object.keys(f).forEach(g=>Reflect.defineProperty(f[g],"pluginName",{enumerable:!0,value:"Inline plugin",writable:!1})),_(c,"inlinePlugin created"),f},"createInlinePlugin")},"createInlinePluginCreator");var Kt=Object.defineProperty,Yt=y((e,t)=>Kt(e,"name",{value:t,configurable:!0}),"o$1");const x="release",Qt=["package.json",`.${x}rc`,`.${x}rc.json`,`.${x}rc.yaml`,`.${x}rc.yml`,`.${x}rc.js`,`.${x}rc.cjs`,`.${x}rc.mjs`,`${x}.config.js`,`${x}.config.cjs`,`${x}.config.mjs`],be=Yt(async e=>(await ue(x,{mergeSearchPlaces:!1,searchPlaces:Qt}).search(e))?.config??{},"getConfig");var Xt=Object.defineProperty,ye=y((e,t)=>Xt(e,"name",{value:t,configurable:!0}),"r");const ae=ye(e=>e==null,"isNil"),H=ye((e={},t={})=>({...e,...ee(t,r=>!ae(r)),deps:{...e.deps,...ee(t.deps,r=>!ae(r))},ignorePackages:[...new Set([...L(e.ignorePackages||[]),...L(t.ignorePackages||[])])]}),"mergeConfig");var Zt=Object.defineProperty,er=y((e,t)=>Zt(e,"name",{value:t,configurable:!0}),"o");const P="multi-release",tr=["package.json",`.${P}rc`,`.${P}rc.json`,`.${P}rc.yaml`,`.${P}rc.yml`,`.${P}rc.js`,`.${P}rc.cjs`,`.${P}rc.mjs`,`${P}.config.js`,`${P}.config.cjs`,`${P}.config.mjs`],rr=er(async(e,t)=>{const{config:r}=await ue(P,{searchPlaces:tr}).search(e)||{},{extends:a,...s}={...r};let o=s;if(a){const i=Je(import.meta.url),p=L(a).reduce((l,d)=>{const c=i(Ue(e,d));return H(l,c)},{});o=H(o,p)}return o=H({branches:void 0,ci:void 0,debug:!1,deps:{bump:"override",prefix:"",release:"patch"},dryRun:void 0,firstParent:!1,ignorePackages:[],ignorePrivate:!0,sequentialInit:!1,sequentialPrepare:!0,silent:!1,tagFormat:"${name}@${version}"},o),H(o,t)},"getConfigMultiSemrel");var nr=Object.defineProperty,ar=y((e,t)=>nr(e,"name",{value:t,configurable:!0}),"t");const{Signale:sr}=ie,or=ar(async({cwd:e,env:t,stderr:r,stdout:a},s)=>{try{const o=new le,i=new sr({stream:o});return await Ge({cwd:e,env:t,logger:i,stderr:r,stdout:a},s)}catch(o){throw j.failure("Error in semantic-release getConfig(): %0",o),o}},"getConfigSemantic");var ir=Object.defineProperty,cr=y((e,t)=>ir(e,"name",{value:t,configurable:!0}),"s");class se extends ce{static{y(this,"p")}static{cr(this,"RescopedStream")}_stream;_scope;constructor(t,r){super(),k(r,"scope: string"),k(t,"stream: stream"),this._stream=t,this._scope=r}write(t){return k(t,"msg: string"),this._stream.write(t.replace("[semantic-release]",`[${this._scope}]`))}}var lr=Object.defineProperty,q=y((e,t)=>lr(e,"name",{value:t,configurable:!0}),"v");const pr=q(async(e,{cwd:t,env:r,globalOptions:a,inputOptions:s,stderr:o,stdout:i})=>{e=S(e,t);const p=Pe(e),l=ge(e),{name:d}=l,c=Object.keys({...l.dependencies,...l.devDependencies,...l.peerDependencies,...l.optionalDependencies}),f=await be(p),g={...a,...f,...s},n={error(){},log(){}},v=Object.fromEntries(Object.entries(r).filter(([,m])=>m!==void 0).map(([m,h])=>[m,String(h)])),{options:b,plugins:u}=await or({cwd:p,env:v,stderr:o,stdout:i},g);return{deps:c,dir:p,fakeLogger:n,localDeps:[],manifest:l,name:d,options:b,path:e,plugins:u}},"getPackage"),dr=q(async(e,t,r,a)=>{const{dir:s,name:o,options:i}=e,{env:p,stderr:l,stdout:d}=r,c=t(e),f={...i,...c},g={name:o,version:"${version}"},n="${name}@${version}";return f.tagFormat=Se(a.tagFormat||n)(g),f.debug=a.debug,f.dryRun=a.dryRun===void 0?f.dryRun:a.dryRun,f.ci=a.ci===void 0?f.ci:a.ci,f.branches=a.branches?L(a.branches):f.branches,f._pkgOptions=i,e.result=await Me(f,{cwd:s,env:p,stderr:new se(l,o),stdout:new se(d,o)}),e},"releasePackage"),Mr=q(async(e,t={},{cwd:r=process.cwd(),env:a=process.env,stderr:s=process.stderr,stdout:o=process.stdout}={},i={})=>{e&&k(e,"paths: string[]"),k(r,"cwd: directory"),k(a,"env: objectlike"),k(o,"stdout: stream"),k(s,"stderr: stream"),r=S(r);const p=await rr(r,i),l={deps:{},...p,...i};j.config.stdio=[s,o],j.config.level=l.logLevel,l.silent&&(j.config.level="silent"),l.debug&&(j.config.level="debug"),j.info(`multi-semantic-release version: ${Ye.version}`),j.info(`semantic-release version: ${Ne.version}`),l.debug&&j.info(`flags: ${JSON.stringify(l,null,2)}`);const d=await be(r),c={cwd:r,env:a,globalOptions:d,inputOptions:t,stderr:s,stdout:o},{packages:f,queue:g}=await Te({cwd:r,filter:q((u=>{const m=u.manifest;return(!l.ignorePrivate||!m.private)&&(e?e.includes(u.manifestAbsPath)||e.includes(u.manifestRelPath):!0)}),"filter"),workspacesExtra:Array.isArray(l.ignorePackages)?l.ignorePackages.map(u=>`!${u}`):[]});e=e||Object.values(f).map(u=>u.manifestPath),j.complete(`Started multirelease! Loading ${e.length} packages...`);let n=await Promise.all(e.map(u=>pr(u,c)));n=n.filter(u=>u!==void 0),n.forEach(u=>{u.localDeps=[...new Set(u.deps.map(m=>n.find(h=>m===h.name)).filter(Boolean))],j.success(`Loaded package ${u.name}`)}),j.complete(`Queued ${g.length} packages! Starting release...`);const v=Gt(n,c,l),b=await g.reduce(async(u,m)=>{const h=await u,w=n.find(({name:O})=>O===m);if(w){const{result:O}=await dr(w,v,c,l);if(O)return h+1}return h},Promise.resolve(0));return j.complete(`Released ${b} of ${g.length} packages, semantically!`),Ce(n,({name:u})=>g.indexOf(u))},"multiSemanticRelease");export{Mr as q,j as u};