@anolilab/multi-semantic-release 4.4.4 → 4.4.6
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 +22 -0
- package/dist/bin/cli.js +1 -1
- package/dist/multi-semantic-release.d.ts +99 -97
- package/dist/multi-semantic-release.js +1 -1
- package/dist/packem_shared/multi-semantic-release-BGnIyoaf.js +4 -0
- package/package.json +7 -7
- package/dist/packem_shared/multi-semantic-release-ChWmDTR5.js +0 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
## @anolilab/multi-semantic-release [4.4.6](https://github.com/anolilab/semantic-release/compare/%40anolilab%2Fmulti-semantic-release%404.4.5...%40anolilab%2Fmulti-semantic-release%404.4.6) (2026-07-23)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Dependencies
|
|
5
|
+
|
|
6
|
+
* **@anolilab/semantic-release-clean-package-json:** upgraded to 5.5.15
|
|
7
|
+
* **@anolilab/semantic-release-pnpm:** upgraded to 8.1.17
|
|
8
|
+
|
|
9
|
+
## @anolilab/multi-semantic-release [4.4.5](https://github.com/anolilab/semantic-release/compare/@anolilab/multi-semantic-release@4.4.4...@anolilab/multi-semantic-release@4.4.5) (2026-06-20)
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **build:** add @visulima/pail devDependency to satisfy cerebro peer ([a440c7d](https://github.com/anolilab/semantic-release/commit/a440c7dc61ca5ae69b4931e7ba751c43fdc8159b))
|
|
14
|
+
* **deps:** bump vitest, lodash override, ckeditor typedoc-plugins, semantic-release peer, workflow pins ([3119947](https://github.com/anolilab/semantic-release/commit/3119947b999cd21425dc9d851b07b5fb92f73008)), closes [#328](https://github.com/anolilab/semantic-release/issues/328) [#329](https://github.com/anolilab/semantic-release/issues/329) [#330](https://github.com/anolilab/semantic-release/issues/330) [#331](https://github.com/anolilab/semantic-release/issues/331) [#324](https://github.com/anolilab/semantic-release/issues/324)
|
|
15
|
+
* **lint:** satisfy eslint-config v27 rules and make codecov upload non-blocking ([da69704](https://github.com/anolilab/semantic-release/commit/da69704ad8158cd82a4eab1259164fbbb6c82999))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Dependencies
|
|
19
|
+
|
|
20
|
+
* **@anolilab/semantic-release-clean-package-json:** upgraded to 5.5.14
|
|
21
|
+
* **@anolilab/semantic-release-pnpm:** upgraded to 8.1.16
|
|
22
|
+
|
|
1
23
|
## @anolilab/multi-semantic-release [4.4.4](https://github.com/anolilab/semantic-release/compare/@anolilab/multi-semantic-release@4.4.3...@anolilab/multi-semantic-release@4.4.4) (2026-05-26)
|
|
2
24
|
|
|
3
25
|
### Miscellaneous Chores
|
package/dist/bin/cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
import{createRequire as p}from"node:module";import l from"yargs";import{hideBin as d}from"yargs/helpers";import{q as u,d as s}from"../packem_shared/multi-semantic-release-BGnIyoaf.js";const f=p(import.meta.url),c=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,{exit:i}=c,n={array:!0,coerce:e=>{if(e.length===1&&e[0]?.trim()==="false")return[];const o=[];for(const t of e)o.push(...t.split(",").map(r=>r.trim()));return o},type:"array"},g=l(d(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",...n,group:"Options"}).option("ci",{describe:"Toggle CI verifications",group:"Options",type:"boolean"}).option("ignore-packages",{...n,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=g.parse(process.argv.slice(2)),{help:o,version:t,...r}=e;(o||t)&&i(0);try{await u(null,{},{},r),i(0)}catch(a){s.error("[multi-semantic-release]:",a),i(1)}}catch(e){s.error("[multi-semantic-release]:",e),i(1)}
|
|
@@ -1,125 +1,127 @@
|
|
|
1
1
|
import { Writable } from 'node:stream';
|
|
2
2
|
import { ReleaseType } from 'semver';
|
|
3
|
-
|
|
4
3
|
interface PackageManifest {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
dependencies?: Record<string, string>;
|
|
6
|
+
devDependencies?: Record<string, string>;
|
|
7
|
+
name: string;
|
|
8
|
+
optionalDependencies?: Record<string, string>;
|
|
9
|
+
peerDependencies?: Record<string, string>;
|
|
10
|
+
private?: boolean;
|
|
11
|
+
version: string;
|
|
13
12
|
}
|
|
14
13
|
interface Commit {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
committerDate: Date;
|
|
16
|
+
gitTags: string;
|
|
17
|
+
hash: string;
|
|
18
|
+
message: string;
|
|
19
|
+
subject: string;
|
|
21
20
|
}
|
|
22
21
|
interface Package {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
22
|
+
_analyzed?: boolean;
|
|
23
|
+
_branch?: string;
|
|
24
|
+
_depsUpdated?: boolean;
|
|
25
|
+
_lastRelease?: Release;
|
|
26
|
+
_nextRelease?: Release;
|
|
27
|
+
_nextType?: ReleaseType | null;
|
|
28
|
+
_prepared?: boolean;
|
|
29
|
+
_preRelease?: string | null;
|
|
30
|
+
_published?: boolean;
|
|
31
|
+
_ready?: boolean;
|
|
32
|
+
deps: string[];
|
|
33
|
+
dir: string;
|
|
34
|
+
localDeps: Package[];
|
|
35
|
+
manifest: PackageManifest;
|
|
36
|
+
name: string;
|
|
37
|
+
options: Record<string, unknown>;
|
|
38
|
+
path: string;
|
|
39
|
+
plugins: PluginFunctions;
|
|
40
|
+
result?: ReleaseResult | false;
|
|
42
41
|
}
|
|
43
42
|
interface Release {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
[key: string]: unknown;
|
|
44
|
+
channel?: string;
|
|
45
|
+
gitHead?: string;
|
|
46
|
+
gitTag?: string;
|
|
47
|
+
notes?: string;
|
|
48
|
+
version: string;
|
|
50
49
|
}
|
|
51
50
|
interface ReleaseResult {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
[key: string]: unknown;
|
|
52
|
+
commits?: Commit[];
|
|
53
|
+
lastRelease?: Release;
|
|
54
|
+
nextRelease?: Release;
|
|
55
|
+
releases?: Release[];
|
|
57
56
|
}
|
|
58
57
|
interface PluginFunctions {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
58
|
+
analyzeCommits?: (context: SemanticReleaseContext) => Promise<string | null | undefined>;
|
|
59
|
+
generateNotes?: (context: SemanticReleaseContext) => Promise<string>;
|
|
60
|
+
prepare?: (context: SemanticReleaseContext) => Promise<void>;
|
|
61
|
+
publish?: (context: SemanticReleaseContext) => Promise<unknown>;
|
|
62
|
+
verifyConditions?: (context: SemanticReleaseContext) => Promise<void>;
|
|
63
|
+
verifyRelease?: (context: SemanticReleaseContext) => Promise<void>;
|
|
65
64
|
}
|
|
66
65
|
interface SemanticReleaseContext {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
66
|
+
[key: string]: unknown;
|
|
67
|
+
branch?: Branch;
|
|
68
|
+
commits?: Commit[];
|
|
69
|
+
cwd: string;
|
|
70
|
+
env: Record<string, string>;
|
|
71
|
+
lastRelease?: Release;
|
|
72
|
+
logger?: Record<string, unknown>;
|
|
73
|
+
nextRelease?: Release;
|
|
74
|
+
options: Record<string, unknown> & {
|
|
75
|
+
_pkgOptions?: Record<string, unknown>;
|
|
76
|
+
};
|
|
77
|
+
stderr: Writable;
|
|
78
|
+
stdout: Writable;
|
|
80
79
|
}
|
|
81
80
|
interface Branch {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
[key: string]: unknown;
|
|
82
|
+
name: string;
|
|
83
|
+
prerelease?: string | null;
|
|
85
84
|
}
|
|
86
85
|
type ReleaseStrategy = "patch" | "minor" | "major" | "inherit";
|
|
87
86
|
interface MultiReleaseConfig {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
};
|
|
87
|
+
[key: string]: unknown;
|
|
88
|
+
branches?: string[] | string;
|
|
89
|
+
ci?: boolean;
|
|
90
|
+
debug?: boolean;
|
|
91
|
+
deps?: {
|
|
92
|
+
bump?: "override" | "satisfy" | "inherit";
|
|
93
|
+
prefix?: string;
|
|
94
|
+
release?: ReleaseStrategy | {
|
|
95
|
+
major?: Omit<ReleaseStrategy, "inherit">;
|
|
96
|
+
minor?: Omit<ReleaseStrategy, "inherit">;
|
|
97
|
+
patch?: Omit<ReleaseStrategy, "inherit">;
|
|
100
98
|
};
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
99
|
+
};
|
|
100
|
+
dryRun?: boolean;
|
|
101
|
+
firstParent?: boolean;
|
|
102
|
+
ignorePackages?: string[];
|
|
103
|
+
ignorePrivate?: boolean;
|
|
104
|
+
sequentialInit?: boolean;
|
|
105
|
+
sequentialPrepare?: boolean;
|
|
106
|
+
silent?: boolean;
|
|
107
|
+
tagFormat?: string;
|
|
109
108
|
}
|
|
110
109
|
interface InputOptions {
|
|
111
|
-
|
|
110
|
+
[key: string]: unknown;
|
|
112
111
|
}
|
|
113
112
|
interface Flags extends MultiReleaseConfig {
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
[key: string]: unknown;
|
|
114
|
+
logLevel?: string;
|
|
116
115
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
116
|
+
declare const multiSemanticRelease: (paths?: string[] | null, inputOptions?: InputOptions, {
|
|
117
|
+
cwd,
|
|
118
|
+
env: environment,
|
|
119
|
+
stderr,
|
|
120
|
+
stdout
|
|
121
|
+
}?: {
|
|
122
|
+
cwd?: string;
|
|
123
|
+
env?: NodeJS.ProcessEnv;
|
|
124
|
+
stderr?: NodeJS.WriteStream;
|
|
125
|
+
stdout?: NodeJS.WriteStream;
|
|
123
126
|
}, flags?: Flags) => Promise<Package[]>;
|
|
124
|
-
|
|
125
127
|
export { multiSemanticRelease as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire as e}from"node:module";import"@semrel-extra/topo";import"debug";import"lodash-es";import"semantic-release";import"semantic-release/package.json"with{type:"json"};import{
|
|
1
|
+
import{createRequire as e}from"node:module";import"@semrel-extra/topo";import"debug";import"lodash-es";import"semantic-release";import"semantic-release/package.json"with{type:"json"};import{q as l}from"./packem_shared/multi-semantic-release-BGnIyoaf.js";const r=e(import.meta.url),s=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;export{l as default};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{createRequire as ve}from"node:module";import{topo as Te}from"@semrel-extra/topo";import V from"debug";import{transform as Se,isEqual as Ee,isObject as K,castArray as H,pickBy as X,sortBy as De,template as Pe}from"lodash-es";import Me from"semantic-release";import Ce from"semantic-release/package.json"with{type:"json"};import{execa as ie}from"execa";import{getTagHead as Ne}from"semantic-release/lib/git.js";import Z from"git-log-parser";import ce from"signale";import{WritableStreamBuffer as pe}from"stream-buffers";import $,{gt as Be,rcompare as He}from"semver";import Fe from"detect-indent";import{detectNewline as Le}from"detect-newline";import{isAccessibleSync as de,readJson as We}from"@visulima/fs";import{readYamlSync as ze}from"@visulima/fs/yaml";import{resolve as ue}from"@visulima/path";import{cosmiconfig as fe}from"cosmiconfig";import Ve from"resolve-from";import Je from"semantic-release/lib/get-config.js";const _e=ve(import.meta.url),M=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,L=e=>{if(typeof M<"u"&&M.versions&&M.versions.node){const[t,r]=M.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return M.getBuiltinModule(e)}return _e(e)},{isAbsolute:I,normalize:je,join:ke,parse:xe,relative:Re,dirname:Oe}=L("node:path"),{existsSync:G,lstatSync:Q,readFileSync:qe,writeFileSync:Ae}=L("node:fs"),{Writable:le}=L("node:stream"),{createRequire:Ue}=L("node:module"),{Signale:Ie}=ce,J=["error","warn","info","debug","trace"],Ge=(e,t)=>{const r=J.indexOf(e),s=J.indexOf(t);return r!==-1&&s!==-1&&r<=s},ee={complete:"info",failure:"error",log:"info",success:"info"},v={config:{_level:"info",_signale:{},_stderr:process.stderr,_stdout:process.stdout,set level(e){e&&(this._level=e)},get level(){return this._level},set stdio([e,t]){this._stdout=t,this._stderr=e,this._signale=new Ie({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:V(e||this.prefix),prefix:e}},...[...J,...Object.keys(ee)].reduce((e,t)=>(e[t]=function(...r){Ge(ee[t]??t,this.config.level)&&(this.config._signale[t]??console[t]??(()=>{}))(this.prefix,...r)},e),{}),debug:V("msr:")};var Qe="4.4.5";const Ye={version:Qe},Ke=/^[a-f0-9]{40}$/i,Xe=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,Ze=e=>I(e)&&G(e)&&Q(e).isDirectory(),et=e=>e instanceof le||e instanceof pe,tt=e=>I(e),rt=e=>typeof e=="string"&&e.length>0,st=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),nt=e=>e===void 0?!0:typeof e=="string"&&Ke.test(e),at=e=>typeof e=="string"&&e.length>0,ot=e=>typeof e=="string"&&Xe.test(e),it=e=>typeof e=="string"&&e===e.toLowerCase(),ct=e=>Number.isSafeInteger(e),k=(e,t)=>{const[r,s]=t.split(":").map(p=>p.trim()),a=r??"value",o=s?.endsWith("?"),i=o&&s?s.slice(0,-1):s;if(!(o&&e==null)){if(i?.endsWith("[]")){if(!Array.isArray(e))throw new TypeError(`${a}: Must be an array`);const p=i.slice(0,-2);for(const l of e)k(l,`${a}[item]: ${p}`);return}switch(i){case"absolute":{if(!(typeof e=="string"&&tt(e)))throw new TypeError(`${a}: Must be an absolute path`);break}case"alphanumeric{40}":{if(!nt(e))throw new TypeError(`${a}: Must be alphanumeric string with size 40 or empty`);break}case"directory":{if(!(typeof e=="string"&&Ze(e)))throw new TypeError(`${a}: Must be directory that exists in the filesystem`);break}case"integer":{if(!(typeof e=="number"&&ct(e)))throw new TypeError(`${a}: Must be an integer`);break}case"kebab":{if(!(typeof e=="string"&&ot(e)))throw new TypeError(`${a}: Must be a kebab-case string`);break}case"lower":{if(!(typeof e=="string"&&it(e)))throw new TypeError(`${a}: Must be a lowercase string`);break}case"objectlike":{if(!st(e))throw new TypeError(`${a}: Must be an object`);break}case"path":{if(!(typeof e=="string"&&rt(e)))throw new TypeError(`${a}: Must be valid path`);break}case"stream":{if(!et(e))throw new TypeError(`${a}: Must be an instance of stream.Writable or WritableStreamBuffer`);break}case"string":{if(typeof e!="string")throw new TypeError(`${a}: Must be a string`);break}case"string+":{if(!at(e))throw new TypeError(`${a}: Must be a non-empty string`);break}default:if(e==null)throw new TypeError(`${a}: Must not be null or undefined`)}}},D=(e,t=process.cwd())=>{k(e,"path: path"),k(t,"cwd: absolute");const r=je(I(e)?e:ke(t,e)),{root:s}=xe(r);let a=r.length;for(;a>s.length&&(r[a-1]==="/"||r[a-1]==="\\");)a-=1;return a===r.length?r:r.slice(0,a)},lt=e=>e.readable?new Promise((t,r)=>{if(!e.readable){t([]);return}let s=[];const a=()=>{s=[],e.removeListener("data",o),e.removeListener("end",i),e.removeListener("error",p),e.removeListener("close",l)},o=g=>{s.push(g)},i=()=>{t(s),a()},p=g=>{r(g),a()},l=()=>{t(s),a()};e.on("data",o),e.on("end",i),e.on("error",p),e.on("close",l)}):Promise.resolve([]),{debug:te}=v.withScope("msr:commitsFilter"),z=async(e,t,r,s,a)=>{if(k(e,"cwd: directory"),e=D(e),k(t,"dir: path"),t=D(t,e),!G(t)||!Q(t).isDirectory())throw new TypeError("dir: Must be a path to an existing directory");if(k(r,"lastRelease: alphanumeric{40}?"),k(s,"nextRelease: alphanumeric{40}?"),!t.startsWith(e))throw new TypeError("dir: Must be inside cwd");if(t===e)throw new TypeError("dir: Must not be equal to cwd");const o=await ie("git",["rev-parse","--show-toplevel"],{cwd:e}),i=D(o.stdout);Object.assign(Z.fields,{committerDate:{key:"ci",type:Date},gitTags:"d",hash:"H",message:"B"});const p=Re(i,t),l=a?["--first-parent",a]:[],g=(r?`${r}..`:"")+(s??"HEAD"),u=[...l,g,"--",p],f=Z.parse({_:u},{cwd:i,env:process.env}),d=await lt(f);return d.forEach(n=>{n.message=n.message.trim(),n.gitTags=n.gitTags.trim()}),te("git log filter query: %o",u),te("filtered commits: %O",d),d},pt=e=>{if(!G(e))throw new ReferenceError(`package.json file not found: "${e}"`);let t;try{t=Q(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 qe(e,"utf8")}catch{throw new ReferenceError(`package.json cannot be read: "${e}"`)}},ge=e=>{const t=pt(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 s=r;if(typeof s.name!="string"||s.name.length===0)throw new SyntaxError(`Package name must be non-empty string: "${e}"`);const a=o=>{if(Object.hasOwn(s,o)&&typeof s[o]!="object")throw new SyntaxError(`Package ${o} must be object: "${e}"`)};return a("dependencies"),a("devDependencies"),a("peerDependencies"),a("optionalDependencies"),Object.defineProperty(s,"__contents__",{enumerable:!1,value:t}),s},dt=(e,t,r)=>e&&t&&r?e(t,r)?t:r:t??r,ut=dt.bind(null,Be),ft=(e,t)=>e.filter(r=>t).toSorted(He)[0],gt=e=>({indent:Fe(e).indent,trailingWhitespace:Le(e)??""}),{debug:U}=v.withScope("msr:updateDeps"),mt=/^workspace:(([\^~*])?.*)$/u,ht=/\d+/u,F=(e,t)=>{if(typeof e=="string")return e==="inherit"?t:e;if(t){const r=t;if(Object.hasOwn(e,r))return e[r]}},yt=(e,t,r)=>{const s=e?$.inc(e,"prerelease",r):void 0,a=$.inc(t,"prerelease",r)??void 0;return s?ut(a,s):a},wt=(e,t,r,s)=>{if(!$.prerelease(t)){if(!$.parse(t))return;const o=$.inc(t,r||"patch");return o?`${o}-${s}.1`:void 0}const a=ft(e,!0);return yt(a,t,s)},B=(e,t,r,s,a)=>{const o=["patch","minor","major"],{localDeps:i,manifest:p}=e,l=e._lastRelease?.version,{dependencies:g={},devDependencies:u={},optionalDependencies:f={},peerDependencies:d={}}=p,n=[g,u,d,f],b=[g,d,f],w=(y,m,_)=>{const O=y[m];if(!_||!O)return!1;const T=ne(O,_,t,a);return O!==T?(y[m]=T,!0):!1};let c;const h=i.filter(y=>!s.includes(y)).reduce((y,m)=>{const _=he(m,t,r,[...s,e],a);let O;_?O=(m._preRelease?se(m):re(m))??void 0:O=m._lastRelease?.version;let T=_,C=O;if(!_&&m.localDeps&&m.localDeps.length>0){const S=B(m,t,r,[...s,e],a);if(S){const P=o.indexOf(S),q=c?o.indexOf(c):-1;if(P>q&&(c=S),T=S,T&&m._lastRelease?.version){const W=m._nextType;m._nextType=T,C=(m._preRelease?se(m):re(m))??void 0,m._nextType=W}}}if(n.forEach(S=>w(S,m.name,C??O)),!(b.some(S=>{const P=S[m.name],q=C??O;if(!P||!q||!C&&!O)return!1;const W=ne(P,q,t,a);return P!==W})||!l||T&&T!==_))return y;const Y=T??_;if(!Y)return y;const N=F(r,Y);if(!N)return y;if(!y)return N;const be=o.indexOf(N),$e=o.indexOf(y);return be>$e?N:y},void 0);return!h&&c?F(r,c)??c:h},bt=(e,t)=>{if(e.startsWith("workspace:")){const r=mt.exec(e);if(!r)return e;const[,s,a]=r;return a===s?a==="*"?t:(a??"")+t:s}return e},me=(e,t)=>Se(e,(r,s,a)=>{Ee(s,t[a])||(r[a]=K(s)&&K(t[a])?JSON.stringify(me(s,t[a])):`${String(t[a])} → ${String(s)}`)})??{},$t=(e,t)=>{const r=`[${e.name}]`,s=ge(t),a=["dependencies","devDependencies","peerDependencies","optionalDependencies"].reduce((o,i)=>{const p=me(e[i],s[i]);return Object.keys(p).length>0&&(o[i]=p),o},{});return U(r,"package.json path=",t),Object.keys(a).length>0?(U(r,"changes=",a),!0):(U(r,"no deps changes"),!1)},re=e=>{const t=e._lastRelease?.version;return t&&typeof e._nextType=="string"?$.inc(t,e._nextType):t??"1.0.0"},vt=e=>{const t=$.parse(e);if(!t)return null;const r=t.prerelease[0];return r===void 0?null:String(r)},se=e=>{const t=e._lastRelease?.version,r=vt(t??"");return r!==null&&r!==e._preRelease||!t?`1.0.0-${e._preRelease??""}.1`:wt([],t,e._nextType??"patch",e._preRelease??"")},he=(e,t="override",r="patch",s=[],a="")=>{const o=B(e,t,r,s,a);if(e._nextType)return e._nextType;if(!o&&e.localDeps&&e.localDeps.length>0&&e.manifest){const{manifest:p}=e,{dependencies:l={},optionalDependencies:g={},peerDependencies:u={}}=p,f={...l,...g,...u};if(e.localDeps.some(d=>!d.name||f[d.name]===void 0?!1:d._nextType?!0:d.localDeps&&d.localDeps.length>0?B(d,t,r,[...s,e],a)!==void 0:!1)){if(typeof r=="string"&&r==="inherit"){const n=B(e,t,r,s,a);if(n)return e._nextType=n,e._nextType}const d=typeof r=="string"&&r!=="inherit"?r:"patch";return e._nextType=d,e._nextType}}if(!o)return;const i=F(r,o);if(i)return e._nextType=i,e._nextType},ne=(e,t,r="override",s="")=>{if(e=bt(e,t),r==="ignore"||e===t||(r==="satisfy"||r==="inherit")&&$.satisfies(t,e))return e;if(r==="inherit"){const a=t.split(".");return e.split(".").map((o,i)=>i<a.length&&a[i]!==void 0?o.replace(ht,a[i]):o).join(".")}return s+t},_t=e=>{const{manifest:t,path:r}=e,{indent:s,trailingWhitespace:a}=gt(t.__contents__);t.version=e._nextRelease?.version??t.version,e.localDeps.forEach(o=>{if(!(o._nextRelease??o._lastRelease)?.version)throw new Error(`Cannot release ${e.name} because dependency ${o.name} has not been released yet`)}),$t(t,r)&&Ae(r,JSON.stringify(t,null,s)+a)},{debug:E}=v.withScope("msr:catalogChanges"),jt=/^[\^~]/,kt=e=>{const t=ue(e,"pnpm-workspace.yaml");if(!de(t))return null;try{return ze(t).catalogs??null}catch(r){return E("Failed to parse pnpm-workspace.yaml:",r),null}},xt=async e=>{const t=ue(e,"package.json");if(!de(t))return null;try{return(await We(t)).catalogs??null}catch(r){return E("Failed to parse package.json for yarn catalog:",r),null}},Rt=async e=>kt(e)||xt(e),Ot=async(e,t)=>{const{execa:r}=await import("execa");try{try{const s=await r("git",["show",`${t}:pnpm-workspace.yaml`],{cwd:e,reject:!1});if(s.exitCode===0&&s.stdout){const{parse:a}=await import("yaml"),o=a(s.stdout);if(o.catalogs)return o.catalogs}}catch{}try{const s=await r("git",["show",`${t}:package.json`],{cwd:e,reject:!1});if(s.exitCode===0&&s.stdout)return JSON.parse(s.stdout).catalogs??null}catch{}}catch(s){E(`Failed to get catalog definitions at commit ${t}:`,s)}return null},Tt=(e,t)=>{const r=o=>o.replace(jt,"").trim(),s=r(e),a=r(t);return!$.valid(s)||!$.valid(a)||$.eq(s,a)?null:$.major(s)!==$.major(a)?"major":$.minor(s)!==$.minor(a)?"minor":$.patch(s)!==$.patch(a)?"patch":null},St=async(e,t,r)=>{e=D(e);const s=await Rt(e);if(!s)return E("No catalog definitions found"),{};if(!t)return E("No last release found, skipping catalog change detection"),{};const a=await Ot(e,t);if(!a)return E("No old catalog definitions found at last release"),{};const o={};for(const[i,p]of Object.entries(s)){const l=a[i];if(l)for(const[g,u]of Object.entries(p)){const f=l[g];if(f&&f!==u){const d=Tt(f,u);d&&(o[i]??={},o[i][g]={newVersion:u,oldVersion:f,releaseType:d},E(`Catalog change detected: ${i}:${g} ${f} -> ${u} (${d})`))}}}return o},Et=(e,t,r)=>{const{manifest:s}=e,a=[s.dependencies,s.peerDependencies,s.optionalDependencies].filter(Boolean);for(const o of a)for(const[i,p]of Object.entries(o))if(p===t){if(r&&i!==r)continue;return!0}return!1},Dt=(e,t,r)=>{const s=`catalog:${t}`;return e.filter(a=>Et(a,s,r))},Pt=(e,t,r)=>{const s=e.get(t);if(s){const a={major:3,minor:2,patch:1},o=a[s];a[r]>o&&e.set(t,r)}else e.set(t,r)},Mt=(e,t)=>{const r=new Map;for(const[s,a]of Object.entries(t))for(const[o,i]of Object.entries(a)){const p=Dt(e,s,o);for(const l of p)i.releaseType&&Pt(r,l.name,i.releaseType)}return r},{debug:j}=v.withScope("msr:inlinePlugin"),Ct=/^(#+) (\[?\d+\.\d+\.\d+\]?)/u,Nt=(e,t,r)=>{const{cwd:s}=t;let a=null,o=!1;return i=>{const{dir:p,name:l,plugins:g}=i,u=`[${l}]`,f={analyzeCommits:async(d,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&&j(u,`Branch channel: ${String(n.branch.channel)}`),n.cwd=p;const b=r.firstParent?n.branch.name:void 0;if(n.commits=await z(s,p,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,b),i._lastRelease=n.lastRelease,!o&&n.lastRelease?.gitHead)try{const h=await St(s,n.lastRelease.gitHead);Object.keys(h).length>0?(a=Mt(e,h),o=!0,j(u,`Detected catalog changes affecting ${String(a.size)} packages`)):o=!0}catch(h){j(u,"Failed to detect catalog changes:",h),o=!0}let w;if(a?.has(i.name)){const h=a.get(i.name);w=r.deps?.release?F(r.deps.release,h):h,j(u,`Catalog change triggers ${w??""} release (raw: ${h??""})`)}let c;if(g.analyzeCommits&&(c=await g.analyzeCommits(n)??void 0),!c&&w)c=w;else if(c&&w){const h={major:3,minor:2,patch:1},y=h[c]||0;(h[w]||0)>y&&(c=w)}return i._nextType=c,i._analyzed=!0,r.deps&&(i._nextType=he(i,r.deps.bump,r.deps.release,[],r.deps.prefix)),j(u,"commits analyzed"),j(u,`release type: ${i._nextType??"none"}`),i._nextType??null},generateNotes:async(d,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&&j(u,`Release channel: ${n.nextRelease.channel}`);const b=[];if(n.lastRelease?.gitTag&&(!n.lastRelease.gitHead||n.lastRelease.gitHead===n.lastRelease.gitTag)){const y=await ie("git",["rev-parse","--show-toplevel"],{cwd:n.cwd}),m=D(y.stdout);n.lastRelease.gitHead=await Ne(n.lastRelease.gitTag,{cwd:m,env:n.env})}if(!n.branch)throw new Error("context.branch is required");const w=r.firstParent?n.branch.name:void 0;n.commits=await z(s,p,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,w);let c;g.generateNotes&&(c=await g.generateNotes(n)),c&&b.push(c.replace(Ct,`$1 ${l} $2`));const h=i.localDeps.filter(y=>y._nextRelease);if(h.length>0){b.push("### Dependencies");const y=h.map(m=>{const _=m._nextRelease;return _?`* **${m.name}:** upgraded to ${_.version}`:""}).filter(Boolean);b.push(y.join(`
|
|
2
|
+
`))}return j(u,"notes generated"),b.join(`
|
|
3
|
+
|
|
4
|
+
`)},prepare:async(d,n)=>{if(n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions??{}),r.dryRun){j(u,"skipping prepare in dry-run mode");return}if(_t(i),i._depsUpdated=!0,n.cwd=p,!n.branch)throw new Error("context.branch is required");const b=r.firstParent?n.branch.name:void 0;n.commits=await z(s,p,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,b),g.prepare&&await g.prepare(n),i._prepared=!0,j(u,"prepared")},publish:async(d,n)=>{if(n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions??{}),r.dryRun)return j(u,"skipping publish in dry-run mode"),[];n.cwd=p;let b=[];if(g.publish){const w=await g.publish(n);w!==void 0&&(b=Array.isArray(w)?w:[w])}return i._published=!0,j(u,"published"),b.length>0?b[0]:{}},verifyConditions:async(d,n)=>{n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions??{}),n.cwd=p,g.verifyConditions&&await g.verifyConditions(n),i._ready=!0,j(u,"verified conditions")},verifyRelease:async(d,n)=>{n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions??{}),n.cwd=p,await g.verifyRelease?.(n),j(u,"release verified")}};return Object.keys(f).forEach(d=>Reflect.defineProperty(f[d],"pluginName",{enumerable:!0,value:"Inline plugin",writable:!1})),j(u,"inlinePlugin created"),f}},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`],ye=async e=>(await fe(x,{mergeSearchPlaces:!1,searchPlaces:qt}).search(e))?.config??{},ae=e=>e==null,A=(e={},t={})=>({...e,...X(t,r=>!ae(r)),deps:{...e.deps,...X(t.deps,r=>!ae(r))},ignorePackages:[...new Set([...H(e.ignorePackages??[]),...H(t.ignorePackages??[])])]}),R="multi-release",At=["package.json",`.${R}rc`,`.${R}rc.json`,`.${R}rc.yaml`,`.${R}rc.yml`,`.${R}rc.js`,`.${R}rc.cjs`,`.${R}rc.mjs`,`${R}.config.js`,`${R}.config.cjs`,`${R}.config.mjs`],Bt=async(e,t)=>{const r=(await fe(R,{searchPlaces:At}).search(e))?.config??{},{extends:s,...a}=r;let o=a;if(s){const i=Ue(import.meta.url),p=H(s).reduce((l,g)=>{const u=i(Ve(e,g));return A(l,u)},{});o=A(o,p)}return o=A({branches:void 0,ci:void 0,debug:!1,deps:{bump:"override",prefix:"",release:"patch"},dryRun:void 0,firstParent:!1,ignorePackages:[],ignorePrivate:!0,logLevel:"info",sequentialInit:!1,sequentialPrepare:!0,silent:!1,tagFormat:"${name}@${version}"},o),A(o,t)},{Signale:Ht}=ce,Ft=async({cwd:e,env:t,stderr:r,stdout:s},a)=>{try{const o=new pe,i=new Ht({stream:o});return await Je({cwd:e,env:t,logger:i,stderr:r,stdout:s},a)}catch(o){throw v.failure("Error in semantic-release getConfig(): %0",o),o}};class oe extends le{_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}]`))}}const Lt=/^git:\/\//u,we=e=>e&&(e.startsWith("git+")?e.slice(4):e.startsWith("git://")?e.replace(Lt,"https://"):e),Wt=async(e,{cwd:t,env:r,globalOptions:s,inputOptions:a,stderr:o,stdout:i})=>{e=D(e,t);const p=Oe(e),l=ge(e),{name:g}=l,u=Object.keys({...l.dependencies,...l.devDependencies,...l.peerDependencies,...l.optionalDependencies}),f=await ye(p),d={...s,...f,...a};if(!d.repositoryUrl&&l.repository){let c;typeof l.repository=="string"?c=l.repository:typeof l.repository=="object"&&l.repository!==null&&"url"in l.repository&&(c=l.repository.url),c&&(d.repositoryUrl=we(c))}const n=Object.fromEntries(Object.entries(r).filter(([,c])=>c!==void 0).map(([c,h])=>[c,String(h)])),{options:b,plugins:w}=await Ft({cwd:p,env:n,stderr:o,stdout:i},d);return{deps:u,dir:p,localDeps:[],manifest:l,name:g,options:b,path:e,plugins:w}},zt=async(e,t,r,s)=>{const{dir:a,name:o,options:i}=e,{env:p,stderr:l,stdout:g}=r,u=t(e),f={...i,...u},d={name:o,version:"${version}"},n="${name}@${version}";return f.tagFormat=Pe(s.tagFormat??n)(d),f.debug=s.debug,f.dryRun=s.dryRun??f.dryRun,f.ci=s.ci??f.ci,f.branches=s.branches?H(s.branches):f.branches,f._pkgOptions=i,f.repositoryUrl&&typeof f.repositoryUrl=="string"&&(f.repositoryUrl=we(f.repositoryUrl)),e.result=await Me(f,{cwd:a,env:p,stderr:new oe(l,o),stdout:new oe(g,o)}),e},pr=async(e,t={},{cwd:r=process.cwd(),env:s=process.env,stderr:a=process.stderr,stdout:o=process.stdout}={},i={})=>{e&&k(e,"paths: string[]"),k(r,"cwd: directory"),k(s,"env: objectlike"),k(o,"stdout: stream"),k(a,"stderr: stream"),r=D(r);const p=await Bt(r,i),l={deps:{},...p,...i};if(v.config.stdio=[a,o],v.config.level=l.logLevel,l.silent&&(v.config.level="silent"),l.debug){v.config.level="debug";const c=s.DEBUG?`,${s.DEBUG}`:"";V.enable(`msr:*,semantic-release:*${c}`)}v.info(`multi-semantic-release version: ${Ye.version}`),v.info(`semantic-release version: ${Ce.version}`),l.debug&&v.info(`flags: ${JSON.stringify(l,null,2)}`);const g=await ye(r),u={cwd:r,env:s,globalOptions:g,inputOptions:t,stderr:a,stdout:o},{packages:f,queue:d}=await Te({cwd:r,filter:(c=>{const{manifest:h}=c;return(!l.ignorePrivate||!h.private)&&(e?e.includes(c.manifestAbsPath)||e.includes(c.manifestRelPath):!0)}),workspacesExtra:Array.isArray(l.ignorePackages)?l.ignorePackages.map(c=>`!${c}`):[]});e??=Object.values(f).map(c=>c.manifestPath),v.complete(`Started multirelease! Loading ${String(e.length)} packages...`);const n=(await Promise.all(e.map(c=>Wt(c,u)))).filter(c=>c!==void 0);n.forEach(c=>{c.localDeps=[...new Set(c.deps.map(h=>n.find(y=>h===y.name)).filter(Boolean))],v.success(`Loaded package ${c.name}`)}),v.complete(`Queued ${String(d.length)} packages! Starting release...`);const b=Nt(n,u,l),w=await d.reduce(async(c,h)=>{const y=await c,m=n.find(({name:_})=>_===h);if(m){const{result:_}=await zt(m,b,u,l);if(_)return y+1}return y},Promise.resolve(0));return v.complete(`Released ${String(w)} of ${String(d.length)} packages, semantically!`),De(n,({name:c})=>d.indexOf(c))};export{v as d,pr as q};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anolilab/multi-semantic-release",
|
|
3
|
-
"version": "4.4.
|
|
3
|
+
"version": "4.4.6",
|
|
4
4
|
"description": "A multi semantic release tool for a monorepo.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"anolilab",
|
|
@@ -56,24 +56,24 @@
|
|
|
56
56
|
],
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@semrel-extra/topo": "^1.14.1",
|
|
59
|
-
"@visulima/fs": "^
|
|
60
|
-
"@visulima/path": "^
|
|
61
|
-
"cosmiconfig": "9.0.
|
|
59
|
+
"@visulima/fs": "^5.0.5",
|
|
60
|
+
"@visulima/path": "^3.0.0",
|
|
61
|
+
"cosmiconfig": "9.0.2",
|
|
62
62
|
"debug": "^4.4.3",
|
|
63
63
|
"detect-indent": "^7.0.2",
|
|
64
64
|
"detect-newline": "^4.0.1",
|
|
65
|
-
"execa": "^
|
|
65
|
+
"execa": "^10.0.0",
|
|
66
66
|
"git-log-parser": "^1.2.1",
|
|
67
67
|
"lodash-es": "4.18.1",
|
|
68
68
|
"resolve-from": "^5.0.0",
|
|
69
|
-
"semver": "7.8.
|
|
69
|
+
"semver": "7.8.5",
|
|
70
70
|
"signale": "^1.4.0",
|
|
71
71
|
"stream-buffers": "^3.0.3",
|
|
72
72
|
"yaml": "2.9.0",
|
|
73
73
|
"yargs": "18.0.0"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
|
-
"semantic-release": ">=24"
|
|
76
|
+
"semantic-release": ">=24.2.9"
|
|
77
77
|
},
|
|
78
78
|
"engines": {
|
|
79
79
|
"node": "^22.14.0 || >=24.10.0"
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
var Ee=Object.defineProperty;var b=(e,t)=>Ee(e,"name",{value:t,configurable:!0});import{createRequire as De}from"node:module";import{topo as He}from"@semrel-extra/topo";import Z from"debug";import{transform as qe,isEqual as Le,isObject as ae,castArray as U,pickBy as ie,sortBy as ze,template as Be}from"lodash-es";import We from"semantic-release";import Ue from"semantic-release/package.json"with{type:"json"};import{execa as me}from"execa";import{getTagHead as Ie}from"semantic-release/lib/git.js";import oe from"git-log-parser";import ye from"signale";import{WritableStreamBuffer as be}from"stream-buffers";import w,{gt as Qe,prerelease as Ye,rcompare as Ke}from"semver";import Ze from"detect-indent";import{detectNewline as Xe}from"detect-newline";import{isAccessibleSync as ve,readJson as et}from"@visulima/fs";import{readYamlSync as tt}from"@visulima/fs/yaml";import{resolve as $e}from"@visulima/path";import{cosmiconfig as we}from"cosmiconfig";import nt from"resolve-from";import st from"semantic-release/lib/get-config.js";const Ce=De(import.meta.url),H=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,G=b(e=>{if(typeof H<"u"&&H.versions&&H.versions.node){const[t,r]=H.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return H.getBuiltinModule(e)}return Ce(e)},"__cjs_getBuiltinModule"),{isAbsolute:te,normalize:Me,join:Ne,parse:Ae,relative:Ve,dirname:Fe}=G("node:path"),{existsSync:re,lstatSync:ne,readFileSync:Je,writeFileSync:Ge}=G("node:fs"),{Writable:he}=G("node:stream"),{createRequire:rt}=G("node:module");var at="4.4.3";const it={version:at};var ot=Object.defineProperty,ct=b((e,t)=>ot(e,"name",{value:t,configurable:!0}),"t$4");const{Signale:lt}=ye,X=["error","warn","info","debug","trace"],pt=ct((e,t)=>{const r=X.indexOf(e),s=X.indexOf(t);return r!==-1&&s!==-1&&r<=s},"assertLevel"),ce={complete:"info",failure:"error",log:"info",success:"info"},j={config:{_level:"info",_signale:{},_stderr:process.stderr,_stdout:process.stdout,set level(e){e&&(this._level=e)},get level(){return this._level},set stdio([e,t]){this._stdout=t,this._stderr=e,this._signale=new lt({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:Z(e||this.prefix),prefix:e}},...[...X,...Object.keys(ce)].reduce((e,t)=>(e[t]=function(...r){pt(ce[t]??t,this.config.level)&&(this.config._signale[t]??console[t]??(()=>{}))(this.prefix,...r)},e),{}),debug:Z("msr:")};var ut=Object.defineProperty,dt=b((e,t)=>ut(e,"name",{value:t,configurable:!0}),"t$3");class Yr extends Error{static{b(this,"ValueError")}static{dt(this,"ValueError")}constructor(t){super(t),this.name="ValueError"}}var gt=Object.defineProperty,T=b((e,t)=>gt(e,"name",{value:t,configurable:!0}),"t$2");const ft=/^[a-f0-9]{40}$/i,mt=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,yt=T(e=>te(e)&&re(e)&&ne(e).isDirectory(),"isDirectory"),ht=T(e=>e instanceof he||e instanceof be,"isStream"),bt=T(e=>te(e),"isAbsolute"),vt=T(e=>typeof e=="string"&&e.length>0,"isPath"),$t=T(e=>e!==null&&typeof e=="object"&&!Array.isArray(e),"isObjectLike"),wt=T(e=>e===void 0?!0:typeof e=="string"&&ft.test(e),"isAlphanumeric40"),jt=T(e=>typeof e=="string"&&e.length>0,"isStringPlus"),_t=T(e=>typeof e=="string"&&mt.test(e),"isKebab"),xt=T(e=>typeof e=="string"&&e===e.toLowerCase(),"isLower"),kt=T(e=>Number.isInteger(e),"isInteger"),k=T((e,t)=>{const[r,s]=t.split(":").map(u=>u.trim()),a=r??"value",i=s?.endsWith("?"),o=i&&s?s.slice(0,-1):s;if(!(i&&e==null)){if(o?.endsWith("[]")){const u=o.slice(0,-2);if(!Array.isArray(e))throw new TypeError(`${a}: Must be an array`);for(const c of e)k(c,`${a}[item]: ${u}`);return}switch(o){case"absolute":{if(!(typeof e=="string"&&bt(e)))throw new TypeError(`${a}: Must be an absolute path`);break}case"alphanumeric{40}":{if(!wt(e))throw new TypeError(`${a}: Must be alphanumeric string with size 40 or empty`);break}case"directory":{if(!(typeof e=="string"&&yt(e)))throw new TypeError(`${a}: Must be directory that exists in the filesystem`);break}case"integer":{if(!(typeof e=="number"&&kt(e)))throw new TypeError(`${a}: Must be an integer`);break}case"kebab":{if(!(typeof e=="string"&&_t(e)))throw new TypeError(`${a}: Must be a kebab-case string`);break}case"lower":{if(!(typeof e=="string"&&xt(e)))throw new TypeError(`${a}: Must be a lowercase string`);break}case"objectlike":{if(!$t(e))throw new TypeError(`${a}: Must be an object`);break}case"path":{if(!(typeof e=="string"&&vt(e)))throw new TypeError(`${a}: Must be valid path`);break}case"stream":{if(!ht(e))throw new TypeError(`${a}: Must be an instance of stream.Writable or WritableStreamBuffer`);break}case"string":{if(typeof e!="string")throw new TypeError(`${a}: Must be a string`);break}case"string+":{if(!jt(e))throw new TypeError(`${a}: Must be a non-empty string`);break}default:if(e==null)throw new TypeError(`${a}: Must not be null or undefined`)}}},"validate");var Ot=Object.defineProperty,Rt=b((e,t)=>Ot(e,"name",{value:t,configurable:!0}),"r$4");const A=Rt((e,t=process.cwd())=>{k(e,"path: path"),k(t,"cwd: absolute");const r=Me(te(e)?e:Ne(t,e)),{root:s}=Ae(r);let a=r.length;for(;a>s.length&&(r[a-1]==="/"||r[a-1]==="\\");)a-=1;return a===r.length?r:r.slice(0,a)},"cleanPath");var Pt=Object.defineProperty,V=b((e,t)=>Pt(e,"name",{value:t,configurable:!0}),"n$1");const Tt=V(e=>e.readable?new Promise((t,r)=>{if(!e.readable){t([]);return}let s=[];const a=V(()=>{s=[],e.removeListener("data",i),e.removeListener("end",o),e.removeListener("error",u),e.removeListener("close",c)},"cleanup"),i=V(g=>{s.push(g)},"onData"),o=V(()=>{t(s),a()},"onEnd"),u=V(g=>{r(g),a()},"onError"),c=V(()=>{t(s),a()},"onClose");e.on("data",i),e.on("end",o),e.on("error",u),e.on("close",c)}):Promise.resolve([]),"streamToArray");var St=Object.defineProperty,Et=b((e,t)=>St(e,"name",{value:t,configurable:!0}),"f");const{debug:le}=j.withScope("msr:commitsFilter"),Y=Et(async(e,t,r,s,a)=>{if(k(e,"cwd: directory"),e=A(e),k(t,"dir: path"),t=A(t,e),!re(t)||!ne(t).isDirectory())throw new TypeError("dir: Must be a path to an existing directory");if(k(r,"lastRelease: alphanumeric{40}?"),k(s,"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 i=await me("git",["rev-parse","--show-toplevel"],{cwd:e}),o=A(i.stdout);Object.assign(oe.fields,{committerDate:{key:"ci",type:Date},gitTags:"d",hash:"H",message:"B"});const u=Ve(o,t),c=a?["--first-parent",a]:[],g=(r?`${r}..`:"")+(s??"HEAD"),p=[...c,g,"--",u],f=oe.parse({_:p},{cwd:o,env:process.env}),d=await Tt(f);return d.forEach(n=>{n.message=n.message.trim(),n.gitTags=n.gitTags.trim()}),le("git log filter query: %o",p),le("filtered commits: %O",d),d},"getCommitsFiltered");var Dt=Object.defineProperty,ee=b((e,t)=>Dt(e,"name",{value:t,configurable:!0}),"o$2");const Ct=ee(e=>{if(!re(e))throw new ReferenceError(`package.json file not found: "${e}"`);let t;try{t=ne(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 Je(e,"utf8")}catch{throw new ReferenceError(`package.json cannot be read: "${e}"`)}},"readManifest"),je=ee(e=>{const t=Ct(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 s=r;if(typeof s.name!="string"||s.name.length===0)throw new SyntaxError(`Package name must be non-empty string: "${e}"`);const a=ee(i=>{if(Object.hasOwn(s,i)&&typeof s[i]!="object")throw new SyntaxError(`Package ${i} must be object: "${e}"`)},"checkDeps");return a("dependencies"),a("devDependencies"),a("peerDependencies"),a("optionalDependencies"),Object.defineProperty(s,"__contents__",{enumerable:!1,value:t}),s},"getManifest");var Mt=Object.defineProperty,_e=b((e,t)=>Mt(e,"name",{value:t,configurable:!0}),"r$3");const Nt=_e((e,t,r)=>e&&t&&r?e(t,r)?t:r:t??r,"selectVersionBy"),At=Nt.bind(null,Qe),Vt=_e((e,t)=>e.filter(r=>t||!Ye(r)).toSorted(Ke)[0],"getLatestVersion");var Ft=Object.defineProperty,Ht=b((e,t)=>Ft(e,"name",{value:t,configurable:!0}),"e$2");const qt=Ht(e=>({indent:Ze(e).indent,trailingWhitespace:Xe(e)??""}),"recognizeFormat");var Lt=Object.defineProperty,O=b((e,t)=>Lt(e,"name",{value:t,configurable:!0}),"d$1");const{debug:K}=j.withScope("msr:updateDeps"),zt=/^workspace:(([\^~*])?.*)$/u,Bt=/\d+/u,I=O((e,t)=>{if(typeof e=="string")return e==="inherit"?t:e;if(t&&e[t])return e[t]},"resolveReleaseTypeFromStrategy"),Wt=O((e,t,r)=>{const s=e?w.inc(e,"prerelease",r):void 0,a=w.inc(t,"prerelease",r)??void 0;return s?At(a,s):a},"nextPreHighestVersion"),Ut=O((e,t,r,s)=>{if(!w.prerelease(t)){if(!w.parse(t))return;const i=w.inc(t,r||"patch");return i?`${i}-${s}.1`:void 0}const a=Vt(e,!0);return Wt(a,t,s)},"nextPreVersionCases"),W=O((e,t,r,s,a)=>{const i=["patch","minor","major"],{localDeps:o,manifest:u}=e,c=e._lastRelease?.version,{dependencies:g={},devDependencies:p={},optionalDependencies:f={},peerDependencies:d={}}=u,n=[g,p,d,f],$=[g,d,f],v=O((h,m,_)=>{const S=h[m];if(!_||!S)return!1;const E=de(S,_,t,a);return S!==E?(h[m]=E,!0):!1},"bumpDependency");let l;const y=o.filter(h=>!s.includes(h)).reduce((h,m)=>{const _=ke(m,t,r,[...s,e],a);let S;_?S=(m._preRelease?ue(m):pe(m))??void 0:S=m._lastRelease?.version;let E=_,q=S;if(!_&&m.localDeps&&m.localDeps.length>0){const C=W(m,t,r,[...s,e],a);if(C){const F=i.indexOf(C),z=l?i.indexOf(l):-1;if(F>z&&(l=C),E=C,E&&m._lastRelease?.version){const Q=m._nextType;m._nextType=E,q=(m._preRelease?ue(m):pe(m))??void 0,m._nextType=Q}}}if(n.forEach(C=>v(C,m.name,q??S)),!($.some(C=>{const F=C[m.name],z=q??S;if(!q&&!S||!F||!z)return!1;const Q=de(F,z,t,a);return F!==Q})||!c||E&&E!==_))return h;const se=E??_;if(!se)return h;const L=I(r,se);if(!L)return h;if(!h)return L;const Te=i.indexOf(L),Se=i.indexOf(h);return Te>Se?L:h},void 0);return!y&&l?I(r,l)??l:y},"getDependentRelease"),It=O((e,t)=>{if(e.startsWith("workspace:")){const r=zt.exec(e);if(!r)return e;const[,s,a]=r;return a===s?a==="*"?t:(a??"")+t:s}return e},"substituteWorkspaceVersion"),xe=O((e,t)=>qe(e,(r,s,a)=>{Le(s,t[a])||(r[a]=ae(s)&&ae(t[a])?JSON.stringify(xe(s,t[a])):`${String(t[a])} → ${String(s)}`)})??{},"difference"),Jt=O((e,t)=>{const r=`[${e.name}]`,s=je(t),a=["dependencies","devDependencies","peerDependencies","optionalDependencies"].reduce((i,o)=>{const u=xe(e[o],s[o]);return Object.keys(u).length>0&&(i[o]=u),i},{});return K(r,"package.json path=",t),Object.keys(a).length>0?(K(r,"changes=",a),!0):(K(r,"no deps changes"),!1)},"auditManifestChanges"),pe=O(e=>{const t=e._lastRelease?.version;return t&&typeof e._nextType=="string"?w.inc(t,e._nextType):t??"1.0.0"},"getNextVersion"),Gt=O(e=>{const t=w.parse(e);if(!t)return null;const r=t.prerelease[0];return r===void 0?null:String(r)},"getPreReleaseTag"),ue=O(e=>{const t=e._lastRelease?.version,r=Gt(t??"");return r!==null&&r!==e._preRelease||!t?`1.0.0-${e._preRelease??""}.1`:Ut([],t,e._nextType??"patch",e._preRelease??"")},"getNextPreVersion"),ke=O((e,t="override",r="patch",s=[],a="")=>{const i=W(e,t,r,s,a);if(e._nextType)return e._nextType;if(!i&&e.localDeps&&e.localDeps.length>0&&e.manifest){const{manifest:u}=e,{dependencies:c={},optionalDependencies:g={},peerDependencies:p={}}=u,f={...c,...g,...p};if(e.localDeps.some(d=>!d.name||f[d.name]===void 0?!1:d._nextType?!0:d.localDeps&&d.localDeps.length>0?W(d,t,r,[...s,e],a)!==void 0:!1)){if(typeof r=="string"&&r==="inherit"){const n=W(e,t,r,s,a);if(n)return e._nextType=n,e._nextType}const d=typeof r=="string"&&r!=="inherit"?r:"patch";return e._nextType=d,e._nextType}}if(!i)return;const o=I(r,i);if(o)return e._nextType=o,e._nextType},"resolveReleaseType"),de=O((e,t,r="override",s="")=>{if(e=It(e,t),r==="ignore"||e===t||(r==="satisfy"||r==="inherit")&&w.satisfies(t,e))return e;if(r==="inherit"){const a=t.split(".");return e.split(".").map((i,o)=>a[o]?i.replace(Bt,a[o]):i).join(".")}return s+t},"resolveNextVersion"),Qt=O(e=>{const{manifest:t,path:r}=e,{indent:s,trailingWhitespace:a}=qt(t.__contents__);t.version=e._nextRelease?.version??t.version,e.localDeps.forEach(i=>{if(!(i._nextRelease??i._lastRelease)?.version)throw new Error(`Cannot release ${e.name} because dependency ${i.name} has not been released yet`)}),Jt(t,r)&&Ge(r,JSON.stringify(t,null,s)+a)},"updateManifestDeps");var Yt=Object.defineProperty,D=b((e,t)=>Yt(e,"name",{value:t,configurable:!0}),"c$2");const{debug:N}=j.withScope("msr:catalogChanges"),Kt=/^[\^~]/,Zt=D(e=>{const t=$e(e,"pnpm-workspace.yaml");if(!ve(t))return null;try{return tt(t).catalogs??null}catch(r){return N("Failed to parse pnpm-workspace.yaml:",r),null}},"parsePnpmCatalog"),Xt=D(async e=>{const t=$e(e,"package.json");if(!ve(t))return null;try{return(await et(t)).catalogs??null}catch(r){return N("Failed to parse package.json for yarn catalog:",r),null}},"parseYarnCatalog"),er=D(async e=>Zt(e)||Xt(e),"getCatalogDefinitions"),tr=D(async(e,t)=>{const{execa:r}=await import("execa");try{try{const s=await r("git",["show",`${t}:pnpm-workspace.yaml`],{cwd:e,reject:!1});if(s.exitCode===0&&s.stdout){const{parse:a}=await import("yaml"),i=a(s.stdout);if(i.catalogs)return i.catalogs}}catch{}try{const s=await r("git",["show",`${t}:package.json`],{cwd:e,reject:!1});if(s.exitCode===0&&s.stdout)return JSON.parse(s.stdout).catalogs??null}catch{}}catch(s){N(`Failed to get catalog definitions at commit ${t}:`,s)}return null},"getCatalogDefinitionsAtCommit"),rr=D((e,t)=>{const r=D(i=>i.replace(Kt,"").trim(),"extractVersion"),s=r(e),a=r(t);return!w.valid(s)||!w.valid(a)||w.eq(s,a)?null:w.major(s)!==w.major(a)?"major":w.minor(s)!==w.minor(a)?"minor":w.patch(s)!==w.patch(a)?"patch":null},"getReleaseTypeFromVersionChange"),nr=D(async(e,t,r)=>{e=A(e);const s=await er(e);if(!s)return N("No catalog definitions found"),{};if(!t)return N("No last release found, skipping catalog change detection"),{};const a=await tr(e,t);if(!a)return N("No old catalog definitions found at last release"),{};const i={};for(const[o,u]of Object.entries(s)){const c=a[o];if(c)for(const[g,p]of Object.entries(u)){const f=c[g];if(f&&f!==p){const d=rr(f,p);d&&(i[o]??={},i[o][g]={newVersion:p,oldVersion:f,releaseType:d},N(`Catalog change detected: ${o}:${g} ${f} -> ${p} (${d})`))}}}return i},"detectCatalogChanges"),sr=D((e,t,r)=>{const s=`catalog:${t}`,a=[];for(const i of e){const{manifest:o}=i,u=[o.dependencies,o.peerDependencies,o.optionalDependencies].filter(Boolean);for(const c of u)for(const[g,p]of Object.entries(c))if(p===s){if(r&&g!==r)continue;a.push(i);break}}return a},"findPackagesUsingCatalog"),ar=D((e,t)=>{const r=new Map;for(const[s,a]of Object.entries(t))for(const[i,o]of Object.entries(a)){const u=sr(e,s,i);for(const c of u){const g=r.get(c.name),p=o.releaseType;if(p)if(g){const f={major:3,minor:2,patch:1},d=f[g];f[p]>d&&r.set(c.name,p)}else r.set(c.name,p)}}return r},"getAffectedPackagesFromCatalogChanges");var ir=Object.defineProperty,M=b((e,t)=>ir(e,"name",{value:t,configurable:!0}),"u");const{debug:x}=j.withScope("msr:inlinePlugin"),or=/^(#+) (\[?\d+\.\d+\.\d+\]?)/u,cr=M((e,t,r)=>{const{cwd:s}=t;let a=null,i=!1;return M(o=>{const{dir:u,name:c,plugins:g}=o,p=`[${c}]`,f={analyzeCommits:M(async(d,n)=>{if(!n.branch)throw new Error("context.branch is required");n.options||(n.options={}),Object.assign(n.options,o.options),Object.assign(n.options,n.options._pkgOptions??{}),o._preRelease=n.branch.prerelease??null,o._branch=n.branch.name,n.branch.channel&&x(p,`Branch channel: ${String(n.branch.channel)}`),n.cwd=u;const $=r.firstParent?n.branch.name:void 0;if(n.commits=await Y(s,u,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,$),o._lastRelease=n.lastRelease,!i&&n.lastRelease?.gitHead)try{const y=await nr(s,n.lastRelease.gitHead,n.nextRelease?.gitHead);Object.keys(y).length>0?(a=ar(e,y),i=!0,x(p,`Detected catalog changes affecting ${String(a.size)} packages`)):i=!0}catch(y){x(p,"Failed to detect catalog changes:",y),i=!0}let v;if(a?.has(o.name)){const y=a.get(o.name);v=r.deps?.release?I(r.deps.release,y):y,x(p,`Catalog change triggers ${v??""} release (raw: ${y??""})`)}let l;if(g.analyzeCommits&&(l=await g.analyzeCommits(n)??void 0),!l&&v)l=v;else if(l&&v){const y={major:3,minor:2,patch:1},h=y[l]||0;(y[v]||0)>h&&(l=v)}return o._nextType=l,o._analyzed=!0,r.deps&&(o._nextType=ke(o,r.deps.bump,r.deps.release,[],r.deps.prefix)),x(p,"commits analyzed"),x(p,`release type: ${o._nextType??"none"}`),o._nextType??null},"analyzeCommits"),generateNotes:M(async(d,n)=>{n.options||(n.options={}),Object.assign(n.options,o.options),Object.assign(n.options,n.options._pkgOptions??{}),n.cwd=u,o._nextRelease=n.nextRelease,n.nextRelease?.channel&&x(p,`Release channel: ${n.nextRelease.channel}`);const $=[];if(n.lastRelease?.gitTag&&(!n.lastRelease.gitHead||n.lastRelease.gitHead===n.lastRelease.gitTag)){const h=await me("git",["rev-parse","--show-toplevel"],{cwd:n.cwd}),m=A(h.stdout);n.lastRelease.gitHead=await Ie(n.lastRelease.gitTag,{cwd:m,env:n.env})}if(!n.branch)throw new Error("context.branch is required");const v=r.firstParent?n.branch.name:void 0;n.commits=await Y(s,u,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,v);let l;g.generateNotes&&(l=await g.generateNotes(n)),l&&$.push(l.replace(or,`$1 ${c} $2`));const y=o.localDeps.filter(h=>h._nextRelease);if(y.length>0){$.push("### Dependencies");const h=y.map(m=>{const _=m._nextRelease;return _?`* **${m.name}:** upgraded to ${_.version}`:""}).filter(Boolean);$.push(h.join(`
|
|
2
|
-
`))}return x(p,"notes generated"),$.join(`
|
|
3
|
-
|
|
4
|
-
`)},"generateNotes"),prepare:M(async(d,n)=>{if(n.options||(n.options={}),Object.assign(n.options,o.options),Object.assign(n.options,n.options._pkgOptions??{}),r.dryRun){x(p,"skipping prepare in dry-run mode");return}if(Qt(o),o._depsUpdated=!0,n.cwd=u,!n.branch)throw new Error("context.branch is required");const $=r.firstParent?n.branch.name:void 0;n.commits=await Y(s,u,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,$),g.prepare&&await g.prepare(n),o._prepared=!0,x(p,"prepared")},"prepare"),publish:M(async(d,n)=>{if(n.options||(n.options={}),Object.assign(n.options,o.options),Object.assign(n.options,n.options._pkgOptions??{}),r.dryRun)return x(p,"skipping publish in dry-run mode"),[];n.cwd=u;let $=[];if(g.publish){const v=await g.publish(n);v!==void 0&&($=Array.isArray(v)?v:[v])}return o._published=!0,x(p,"published"),$.length>0?$[0]:{}},"publish"),verifyConditions:M(async(d,n)=>{n.options||(n.options={}),Object.assign(n.options,o.options),Object.assign(n.options,n.options._pkgOptions??{}),n.cwd=u,g.verifyConditions&&await g.verifyConditions(n),o._ready=!0,x(p,"verified conditions")},"verifyConditions"),verifyRelease:M(async(d,n)=>{n.options||(n.options={}),Object.assign(n.options,o.options),Object.assign(n.options,n.options._pkgOptions??{}),n.cwd=u,await g.verifyRelease?.(n),x(p,"release verified")},"verifyRelease")};return Object.keys(f).forEach(d=>Reflect.defineProperty(f[d],"pluginName",{enumerable:!0,value:"Inline plugin",writable:!1})),x(p,"inlinePlugin created"),f},"createInlinePlugin")},"createInlinePluginCreator");var lr=Object.defineProperty,pr=b((e,t)=>lr(e,"name",{value:t,configurable:!0}),"o$1");const R="release",ur=["package.json",`.${R}rc`,`.${R}rc.json`,`.${R}rc.yaml`,`.${R}rc.yml`,`.${R}rc.js`,`.${R}rc.cjs`,`.${R}rc.mjs`,`${R}.config.js`,`${R}.config.cjs`,`${R}.config.mjs`],Oe=pr(async e=>(await we(R,{mergeSearchPlaces:!1,searchPlaces:ur}).search(e))?.config??{},"getConfig");var dr=Object.defineProperty,Re=b((e,t)=>dr(e,"name",{value:t,configurable:!0}),"r$1");const ge=Re(e=>e==null,"isNil"),B=Re((e={},t={})=>({...e,...ie(t,r=>!ge(r)),deps:{...e.deps,...ie(t.deps,r=>!ge(r))},ignorePackages:[...new Set([...U(e.ignorePackages??[]),...U(t.ignorePackages??[])])]}),"mergeConfig");var gr=Object.defineProperty,fr=b((e,t)=>gr(e,"name",{value:t,configurable:!0}),"o");const P="multi-release",mr=["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`],yr=fr(async(e,t)=>{const r=(await we(P,{searchPlaces:mr}).search(e))?.config??{},{extends:s,...a}=r;let i=a;if(s){const o=rt(import.meta.url),u=U(s).reduce((c,g)=>{const p=o(nt(e,g));return B(c,p)},{});i=B(i,u)}return i=B({branches:void 0,ci:void 0,debug:!1,deps:{bump:"override",prefix:"",release:"patch"},dryRun:void 0,firstParent:!1,ignorePackages:[],ignorePrivate:!0,logLevel:"info",sequentialInit:!1,sequentialPrepare:!0,silent:!1,tagFormat:"${name}@${version}"},i),B(i,t)},"getConfigMultiSemrel");var hr=Object.defineProperty,br=b((e,t)=>hr(e,"name",{value:t,configurable:!0}),"t");const{Signale:vr}=ye,$r=br(async({cwd:e,env:t,stderr:r,stdout:s},a)=>{try{const i=new be,o=new vr({stream:i});return await st({cwd:e,env:t,logger:o,stderr:r,stdout:s},a)}catch(i){throw j.failure("Error in semantic-release getConfig(): %0",i),i}},"getConfigSemantic");var wr=Object.defineProperty,jr=b((e,t)=>wr(e,"name",{value:t,configurable:!0}),"s$1");class fe extends he{static{b(this,"p")}static{jr(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 _r=Object.defineProperty,xr=b((e,t)=>_r(e,"name",{value:t,configurable:!0}),"e");const kr=/^git:\/\//u,Pe=xr(e=>e&&(e.startsWith("git+")?e.slice(4):e.startsWith("git://")?e.replace(kr,"https://"):e),"normalizeRepositoryUrl");var Or=Object.defineProperty,J=b((e,t)=>Or(e,"name",{value:t,configurable:!0}),"y");const Rr=J(async(e,{cwd:t,env:r,globalOptions:s,inputOptions:a,stderr:i,stdout:o})=>{e=A(e,t);const u=Fe(e),c=je(e),{name:g}=c,p=Object.keys({...c.dependencies,...c.devDependencies,...c.peerDependencies,...c.optionalDependencies}),f=await Oe(u),d={...s,...f,...a};if(!d.repositoryUrl&&c.repository){let l;typeof c.repository=="string"?l=c.repository:typeof c.repository=="object"&&c.repository!==null&&"url"in c.repository&&(l=c.repository.url),l&&(d.repositoryUrl=Pe(l))}const n=Object.fromEntries(Object.entries(r).filter(([,l])=>l!==void 0).map(([l,y])=>[l,String(y)])),{options:$,plugins:v}=await $r({cwd:u,env:n,stderr:i,stdout:o},d);return{deps:p,dir:u,localDeps:[],manifest:c,name:g,options:$,path:e,plugins:v}},"getPackage"),Pr=J(async(e,t,r,s)=>{const{dir:a,name:i,options:o}=e,{env:u,stderr:c,stdout:g}=r,p=t(e),f={...o,...p},d={name:i,version:"${version}"},n="${name}@${version}";return f.tagFormat=Be(s.tagFormat??n)(d),f.debug=s.debug,f.dryRun=s.dryRun??f.dryRun,f.ci=s.ci??f.ci,f.branches=s.branches?U(s.branches):f.branches,f._pkgOptions=o,f.repositoryUrl&&typeof f.repositoryUrl=="string"&&(f.repositoryUrl=Pe(f.repositoryUrl)),e.result=await We(f,{cwd:a,env:u,stderr:new fe(c,i),stdout:new fe(g,i)}),e},"releasePackage"),Kr=J(async(e,t={},{cwd:r=process.cwd(),env:s=process.env,stderr:a=process.stderr,stdout:i=process.stdout}={},o={})=>{e&&k(e,"paths: string[]"),k(r,"cwd: directory"),k(s,"env: objectlike"),k(i,"stdout: stream"),k(a,"stderr: stream"),r=A(r);const u=await yr(r,o),c={deps:{},...u,...o};if(j.config.stdio=[a,i],j.config.level=c.logLevel,c.silent&&(j.config.level="silent"),c.debug){j.config.level="debug";let l="";s.DEBUG&&(l=`,${s.DEBUG}`),Z.enable(`msr:*,semantic-release:*${l}`)}j.info(`multi-semantic-release version: ${it.version}`),j.info(`semantic-release version: ${Ue.version}`),c.debug&&j.info(`flags: ${JSON.stringify(c,null,2)}`);const g=await Oe(r),p={cwd:r,env:s,globalOptions:g,inputOptions:t,stderr:a,stdout:i},{packages:f,queue:d}=await He({cwd:r,filter:J((l=>{const{manifest:y}=l;return(!c.ignorePrivate||!y.private)&&(e?e.includes(l.manifestAbsPath)||e.includes(l.manifestRelPath):!0)}),"filter"),workspacesExtra:Array.isArray(c.ignorePackages)?c.ignorePackages.map(l=>`!${l}`):[]});e=e??Object.values(f).map(l=>l.manifestPath),j.complete(`Started multirelease! Loading ${String(e.length)} packages...`);const n=(await Promise.all(e.map(l=>Rr(l,p)))).filter(l=>l!==void 0);n.forEach(l=>{l.localDeps=[...new Set(l.deps.map(y=>n.find(h=>y===h.name)).filter(Boolean))],j.success(`Loaded package ${l.name}`)}),j.complete(`Queued ${String(d.length)} packages! Starting release...`);const $=cr(n,p,c),v=await d.reduce(async(l,y)=>{const h=await l,m=n.find(({name:_})=>_===y);if(m){const{result:_}=await Pr(m,$,p,c);if(_)return h+1}return h},Promise.resolve(0));return j.complete(`Released ${String(v)} of ${String(d.length)} packages, semantically!`),ze(n,({name:l})=>d.indexOf(l))},"multiSemanticRelease");export{Kr as Q,j as u};
|