@anolilab/multi-semantic-release 3.2.3-alpha.3 → 4.1.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 +11 -14
- package/README.md +41 -6
- package/dist/bin/cli.js +1 -1
- package/dist/multi-semantic-release.d.ts +6 -1
- package/dist/multi-semantic-release.js +1 -1
- package/dist/packem_shared/multi-semantic-release-DJz_aNep.js +4 -0
- package/package.json +1 -1
- package/dist/packem_shared/multi-semantic-release-CSnRPVo-.js +0 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,33 +1,30 @@
|
|
|
1
|
-
## @anolilab/multi-semantic-release [
|
|
1
|
+
## @anolilab/multi-semantic-release [4.1.0](https://github.com/anolilab/semantic-release/compare/@anolilab/multi-semantic-release@4.0.0...@anolilab/multi-semantic-release@4.1.0) (2026-01-13)
|
|
2
2
|
|
|
3
|
-
###
|
|
4
|
-
|
|
5
|
-
* fixed discord link ([af624ef](https://github.com/anolilab/semantic-release/commit/af624ef616ebd84b84932f8f1bf5c978b7a8349d))
|
|
3
|
+
### Features
|
|
6
4
|
|
|
5
|
+
* update README and types to clarify devDependencies handling and release strategies ([e598b08](https://github.com/anolilab/semantic-release/commit/e598b0865da5e2cd80893e240513cc4689956a1e))
|
|
7
6
|
|
|
8
|
-
###
|
|
7
|
+
### Bug Fixes
|
|
9
8
|
|
|
10
|
-
*
|
|
11
|
-
* **@anolilab/semantic-release-pnpm:** upgraded to 4.0.0-alpha.2
|
|
9
|
+
* **tests:** update assertions and comments to reflect changes in release behavior for devDependencies ([879968c](https://github.com/anolilab/semantic-release/commit/879968c1ca2a80214197e1ca51effb7ba4612cc1))
|
|
12
10
|
|
|
13
|
-
## @anolilab/multi-semantic-release [3.2.3-alpha.2](https://github.com/anolilab/semantic-release/compare/@anolilab/multi-semantic-release@3.2.3-alpha.1...@anolilab/multi-semantic-release@3.2.3-alpha.2) (2025-12-10)
|
|
14
11
|
|
|
15
|
-
###
|
|
12
|
+
### Dependencies
|
|
16
13
|
|
|
17
|
-
*
|
|
14
|
+
* **@anolilab/semantic-release-clean-package-json:** upgraded to 5.1.0
|
|
15
|
+
* **@anolilab/semantic-release-pnpm:** upgraded to 4.1.0
|
|
18
16
|
|
|
19
|
-
## @anolilab/multi-semantic-release [
|
|
17
|
+
## @anolilab/multi-semantic-release [4.0.0](https://github.com/anolilab/semantic-release/compare/@anolilab/multi-semantic-release@3.2.2...@anolilab/multi-semantic-release@4.0.0) (2026-01-08)
|
|
20
18
|
|
|
21
19
|
### Bug Fixes
|
|
22
20
|
|
|
23
21
|
* add GitHub labeler configuration and update package metadata ([dce9314](https://github.com/anolilab/semantic-release/commit/dce9314ca6aefaf86e75c6d065cdac8ad7a60717))
|
|
24
|
-
* enhance repository URL normalization to support authentication tokens ([709f762](https://github.com/anolilab/semantic-release/commit/709f76259a4b795d07572872eb27f95a7051fbe2))
|
|
25
22
|
|
|
26
23
|
|
|
27
24
|
### Dependencies
|
|
28
25
|
|
|
29
|
-
* **@anolilab/semantic-release-clean-package-json:** upgraded to
|
|
30
|
-
* **@anolilab/semantic-release-pnpm:** upgraded to 4.0.0
|
|
26
|
+
* **@anolilab/semantic-release-clean-package-json:** upgraded to 5.0.0
|
|
27
|
+
* **@anolilab/semantic-release-pnpm:** upgraded to 4.0.0
|
|
31
28
|
|
|
32
29
|
## @anolilab/multi-semantic-release [3.2.2](https://github.com/anolilab/semantic-release/compare/@anolilab/multi-semantic-release@3.2.1...@anolilab/multi-semantic-release@3.2.2) (2025-12-05)
|
|
33
30
|
|
package/README.md
CHANGED
|
@@ -50,6 +50,8 @@ or `devDependencies` or `peerDependencies`). However in multi-semantic-release t
|
|
|
50
50
|
written into `package.json` at release time. This means there's no need to hard-code versions any more
|
|
51
51
|
(we recommend just using `*` asterisk instead in your repo code).
|
|
52
52
|
|
|
53
|
+
**Note:** While `devDependencies` are updated in `package.json`, they do not trigger version bumps for the package itself. Only runtime dependencies (`dependencies`, `peerDependencies`, `optionalDependencies`) can trigger version bumps when they change.
|
|
54
|
+
|
|
53
55
|
### Key features
|
|
54
56
|
|
|
55
57
|
- CLI & JS API
|
|
@@ -150,6 +152,8 @@ When you update a catalog version (e.g., `lodash-es: ^4.17.0` → `^4.17.1`), an
|
|
|
150
152
|
- **Minor change** (e.g., `^1.0.0` → `^1.1.0`) triggers a minor release
|
|
151
153
|
- **Patch change** (e.g., `^1.0.0` → `^1.0.1`) triggers a patch release
|
|
152
154
|
|
|
155
|
+
**Note:** Catalog references in `devDependencies` are updated but do not trigger version bumps. Only catalog references in `dependencies`, `peerDependencies`, and `optionalDependencies` can trigger releases.
|
|
156
|
+
|
|
153
157
|
Catalog changes are combined with commit-based releases - if both trigger a release, the highest severity is used.
|
|
154
158
|
|
|
155
159
|
### bolt
|
|
@@ -291,11 +295,11 @@ The first configuration file found will be used, and the search stops there.
|
|
|
291
295
|
|
|
292
296
|
### `deps` Options
|
|
293
297
|
|
|
294
|
-
| Option | Type
|
|
295
|
-
| ------- |
|
|
296
|
-
| bump | `override \| satisfy \| inherit`
|
|
297
|
-
| release | `patch \| minor \| major \| inherit` | `--deps.release` | Define release type for dependent package if any of its deps changes. <ul><li>`patch`, `minor`, `major` — strictly declare the release type that occurs when any dependency is updated;</li><li> `inherit` — applies the "highest" release of updated deps to the package. <br/> _For example, if any dep has a breaking change, `major` release will be applied to the all dependants up the chain._</li></ul>
|
|
298
|
-
| prefix | `'^' \| '~' \| ''`
|
|
298
|
+
| Option | Type | CLI Flag | Description |
|
|
299
|
+
| ------- | ---------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
300
|
+
| bump | `override \| satisfy \| inherit` | `--deps.bump` | Define deps version update rule. <ul><li>`override` — replace any prev version with the next one</li><li>`satisfy` — check the next pkg version against its current references. If it matches (`*` matches to any, `1.1.0` matches `1.1.x`, `1.5.0` matches to `^1.0.0` and so on) release will not be triggered, if not `override` strategy will be applied instead; `inherit` will try to follow the current declaration version/range. `~1.0.0` + `minor` turns into `~1.1.0`, `1.x` + `major` gives `2.x`, but `1.x` + `minor` gives `1.x` so there will be no release, etc. +;</li><li>`ignore` prevent dependencies from being bumped by MSR</li></ul> |
|
|
301
|
+
| release | `patch \| minor \| major \| inherit \| Object` | `--deps.release` | Define release type for dependent package if any of its deps changes. <ul><li>`patch`, `minor`, `major` — strictly declare the release type that occurs when any dependency is updated;</li><li> `inherit` — applies the "highest" release of updated deps to the package. <br/> _For example, if any dep has a breaking change, `major` release will be applied to the all dependants up the chain._</li><li> **Object mapping** — configure different release types based on dependency severity: <br/> `{ major: "minor", minor: "patch", patch: "patch" }` <br/> This allows fine-grained control, e.g., major dependency bumps can trigger minor bumps instead of major bumps.</li></ul> **Note:** Only `dependencies`, `peerDependencies`, and `optionalDependencies` trigger version bumps. `devDependencies` are updated but do not trigger releases. |
|
|
302
|
+
| prefix | `'^' \| '~' \| ''` | `--deps.prefix` | Optional prefix to be attached to the next version if `bump` is set to `override`. Supported values: `^` \| `~` \| `''` (empty string) ; **`''` by default**. |
|
|
299
303
|
|
|
300
304
|
### Examples
|
|
301
305
|
|
|
@@ -305,6 +309,30 @@ The first configuration file found will be used, and the search stops there.
|
|
|
305
309
|
$ multi-semantic-release --ignore-packages=packages/a/**,packages/b/** --deps.bump=inherit
|
|
306
310
|
```
|
|
307
311
|
|
|
312
|
+
- Using release mapping to control how dependency bumps trigger releases:
|
|
313
|
+
|
|
314
|
+
```json
|
|
315
|
+
{
|
|
316
|
+
"multi-release": {
|
|
317
|
+
"deps": {
|
|
318
|
+
"release": {
|
|
319
|
+
"major": "minor",
|
|
320
|
+
"minor": "patch",
|
|
321
|
+
"patch": "patch"
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
This configuration means:
|
|
329
|
+
|
|
330
|
+
- When a dependency has a **major** bump → trigger a **minor** bump for the dependent package
|
|
331
|
+
- When a dependency has a **minor** bump → trigger a **patch** bump for the dependent package
|
|
332
|
+
- When a dependency has a **patch** bump → trigger a **patch** bump for the dependent package
|
|
333
|
+
|
|
334
|
+
This is useful when you want to be more conservative about version bumps, e.g., major dependency changes don't necessarily require major bumps in your package.
|
|
335
|
+
|
|
308
336
|
## Configuring Semantic-Release
|
|
309
337
|
|
|
310
338
|
**MSR** requires **semrel** config to be added [in any supported format](https://github.com/semantic-release/semantic-release/blob/master/docs/usage/configuration.md#configuration) for each package or/and declared in repo root (`globalConfig` is extremely useful if all the modules have the same strategy of release).
|
|
@@ -413,6 +441,13 @@ A key requirement is handling local dep version numbers elegantly. multi-semanti
|
|
|
413
441
|
- Before packages are released (in semantic-release's prepare step), the correct current/next version number of _all_ local dependencies is written into the `package.json` file (overwriting any existing value)
|
|
414
442
|
- This ensures the package at the time of publishing will be atomically correct with all other packages in the monorepo.
|
|
415
443
|
|
|
444
|
+
**Important:** `devDependencies` are handled differently from runtime dependencies:
|
|
445
|
+
|
|
446
|
+
- `devDependencies` are **updated** in `package.json` when their versions change
|
|
447
|
+
- However, `devDependencies` **do not trigger version bumps** for the package itself
|
|
448
|
+
- Only `dependencies`, `peerDependencies`, and `optionalDependencies` can trigger version bumps when they change
|
|
449
|
+
- This aligns with semantic versioning principles, as `devDependencies` don't affect the published package's runtime behavior
|
|
450
|
+
|
|
416
451
|
The above means that, possibly, if someone upgrades dependencies and pulls down a package from NPM _during the multirelease_ (before all its deps have been published at their next versions), then their `npm install` will fail (it will work if they try again in a few minutes). On balance I thought it was more important to be atomically correct (this situation should be fairly rare assuming projects commit their lockfiles).
|
|
417
452
|
|
|
418
453
|
### Integration with semantic-release
|
|
@@ -521,7 +556,7 @@ This is an open source project and will always remain free to use. If you think
|
|
|
521
556
|
[prs-welcome-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge
|
|
522
557
|
[prs-welcome]: https://github.com/anolilab/multi-semantic-release/blob/main/.github/CONTRIBUTING.md
|
|
523
558
|
[chat-badge]: https://img.shields.io/discord/902465130518949899.svg?style=for-the-badge
|
|
524
|
-
[chat]: https://discord.gg/
|
|
559
|
+
[chat]: https://discord.gg/TtFJY8xkFK
|
|
525
560
|
[typescript-badge]: https://img.shields.io/badge/Typescript-294E80.svg?style=for-the-badge&logo=typescript
|
|
526
561
|
[typescript-url]: https://www.typescriptlang.org/
|
|
527
562
|
[license-url]: LICENSE.md
|
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{
|
|
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{z as f,u as s}from"../packem_shared/multi-semantic-release-DJz_aNep.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)}})();
|
|
@@ -83,6 +83,7 @@ interface Branch {
|
|
|
83
83
|
name: string;
|
|
84
84
|
prerelease?: string | null;
|
|
85
85
|
}
|
|
86
|
+
type ReleaseStrategy = "patch" | "minor" | "major" | "inherit";
|
|
86
87
|
interface MultiReleaseConfig {
|
|
87
88
|
[key: string]: unknown;
|
|
88
89
|
branches?: string[] | string;
|
|
@@ -91,7 +92,11 @@ interface MultiReleaseConfig {
|
|
|
91
92
|
deps?: {
|
|
92
93
|
bump?: "override" | "satisfy" | "inherit";
|
|
93
94
|
prefix?: string;
|
|
94
|
-
release?:
|
|
95
|
+
release?: ReleaseStrategy | {
|
|
96
|
+
major?: Omit<ReleaseStrategy, "inherit">;
|
|
97
|
+
minor?: Omit<ReleaseStrategy, "inherit">;
|
|
98
|
+
patch?: Omit<ReleaseStrategy, "inherit">;
|
|
99
|
+
};
|
|
95
100
|
};
|
|
96
101
|
dryRun?: boolean;
|
|
97
102
|
firstParent?: boolean;
|
|
@@ -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{z as a}from"./packem_shared/multi-semantic-release-DJz_aNep.js";const t=e(import.meta.url),i=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;export{a as default};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var Ee=Object.defineProperty;var h=(e,t)=>Ee(e,"name",{value:t,configurable:!0});import{createRequire as Ce}from"node:module";import{topo as He}from"@semrel-extra/topo";import Q from"debug";import{transform as Le,isEqual as qe,isObject as ae,pickBy as oe,castArray as W,sortBy as ze,template as Be}from"lodash-es";import Ue from"semantic-release";import We 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 ie from"git-log-parser";import ye from"signale";import{WritableStreamBuffer as be}from"stream-buffers";import $,{gt as Ge,prerelease as Ke,rcompare as Qe}from"semver";import Xe from"detect-indent";import{detectNewline as Ze}from"detect-newline";import{isAccessibleSync as ve,readJson as et}from"@visulima/fs";import{readYamlSync as tt}from"@visulima/fs/yaml";import{resolve as we}from"@visulima/path";import{cosmiconfig as $e}from"cosmiconfig";import nt from"resolve-from";import st from"semantic-release/lib/get-config.js";const Se=Ce(import.meta.url),H=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,J=h(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 Se(e)},"__cjs_getBuiltinModule"),{isAbsolute:te,normalize:Me,join:Ne,parse:Ve,relative:Ae,dirname:Fe}=J("node:path"),{existsSync:re,lstatSync:ne,readFileSync:Je,writeFileSync:Ye}=J("node:fs"),{Writable:he}=J("node:stream"),{createRequire:rt}=J("node:module");var at="4.0.0";const ot={version:at};var it=Object.defineProperty,ct=h((e,t)=>it(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:Q(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:Q("msr:")};var ut=Object.defineProperty,dt=h((e,t)=>ut(e,"name",{value:t,configurable:!0}),"t$3");class Br extends Error{static{h(this,"ValueError")}static{dt(this,"ValueError")}constructor(t){super(t),this.name="ValueError"}}var ft=Object.defineProperty,T=h((e,t)=>ft(e,"name",{value:t,configurable:!0}),"t$2");const gt=T(e=>te(e)&&re(e)&&ne(e).isDirectory(),"isDirectory"),mt=T(e=>e instanceof he||e instanceof be,"isStream"),yt=T(e=>te(e),"isAbsolute"),ht=T(e=>typeof e=="string"&&e.length>0,"isPath"),bt=T(e=>e!==null&&typeof e=="object"&&!Array.isArray(e),"isObjectLike"),vt=T(e=>e===void 0?!0:typeof e=="string"&&/^[a-f0-9]{40}$/i.test(e),"isAlphanumeric40"),wt=T(e=>typeof e=="string"&&e.length>0,"isStringPlus"),$t=T(e=>typeof e=="string"&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(e),"isKebab"),jt=T(e=>typeof e=="string"&&e===e.toLowerCase(),"isLower"),_t=T(e=>Number.isInteger(e),"isInteger"),x=T((e,t)=>{const[r,s]=t.split(":").map(i=>i.trim()),a=s?.endsWith("?"),o=a&&s?s.slice(0,-1):s;if(!(a&&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 d of e)x(d,`${r}[item]: ${i}`);return}switch(o){case"absolute":{if(!(typeof e=="string"&&yt(e)))throw new TypeError(`${r}: Must be an absolute path`);break}case"alphanumeric{40}":{if(!vt(e))throw new TypeError(`${r}: Must be alphanumeric string with size 40 or empty`);break}case"directory":{if(!(typeof e=="string"&>(e)))throw new TypeError(`${r}: Must be directory that exists in the filesystem`);break}case"integer":{if(!(typeof e=="number"&&_t(e)))throw new TypeError(`${r}: Must be an integer`);break}case"kebab":{if(!(typeof e=="string"&&$t(e)))throw new TypeError(`${r}: Must be a kebab-case string`);break}case"lower":{if(!(typeof e=="string"&&jt(e)))throw new TypeError(`${r}: Must be a lowercase string`);break}case"objectlike":{if(!bt(e))throw new TypeError(`${r}: Must be an object`);break}case"path":{if(!(typeof e=="string"&&ht(e)))throw new TypeError(`${r}: Must be valid path`);break}case"stream":{if(!mt(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(!wt(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 kt=Object.defineProperty,xt=h((e,t)=>kt(e,"name",{value:t,configurable:!0}),"r$4");const V=xt((e,t=process.cwd())=>{x(e,"path: path"),x(t,"cwd: absolute");const r=Me(te(e)?e:Ne(t,e)),{root:s}=Ve(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 Ot=Object.defineProperty,A=h((e,t)=>Ot(e,"name",{value:t,configurable:!0}),"n$1");const Rt=A(e=>e.readable?new Promise((t,r)=>{if(!e.readable){t([]);return}let s=[];const a=A(()=>{s=[],e.removeListener("data",o),e.removeListener("end",i),e.removeListener("error",d),e.removeListener("close",l)},"cleanup"),o=A(f=>{s.push(f)},"onData"),i=A(()=>{t(s),a()},"onEnd"),d=A(f=>{r(f),a()},"onError"),l=A(()=>{t(s),a()},"onClose");e.on("data",o),e.on("end",i),e.on("error",d),e.on("close",l)}):Promise.resolve([]),"streamToArray");var Pt=Object.defineProperty,Tt=h((e,t)=>Pt(e,"name",{value:t,configurable:!0}),"f");const{debug:le}=j.withScope("msr:commitsFilter"),G=Tt(async(e,t,r,s,a)=>{if(x(e,"cwd: directory"),e=V(e),x(t,"dir: path"),t=V(t,e),!re(t)||!ne(t).isDirectory())throw new TypeError("dir: Must be a path to an existing directory");if(x(r,"lastRelease: alphanumeric{40}?"),x(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 o=await me("git",["rev-parse","--show-toplevel"],{cwd:e}),i=V(o.stdout);Object.assign(ie.fields,{committerDate:{key:"ci",type:Date},gitTags:"d",hash:"H",message:"B"});const d=Ae(i,t),l=a?["--first-parent",a]:[],f=(r?`${r}..`:"")+(s||"HEAD"),p=[...l,f,"--",d],g=ie.parse({_:p},{cwd:i,env:process.env}),u=await Rt(g);return u.forEach(n=>{n.message=n.message.trim(),n.gitTags=n.gitTags.trim()}),le("git log filter query: %o",p),le("filtered commits: %O",u),u},"getCommitsFiltered");var Dt=Object.defineProperty,Z=h((e,t)=>Dt(e,"name",{value:t,configurable:!0}),"a$3");const Et=Z(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=Z(e=>{const t=Et(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=Z(o=>{if(Object.prototype.hasOwnProperty.call(s,o)&&typeof s[o]!="object")throw new SyntaxError(`Package ${o} 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 Ct=Object.defineProperty,_e=h((e,t)=>Ct(e,"name",{value:t,configurable:!0}),"r$3");const St=_e((e,t,r)=>e&&t&&r?e(t,r)?t:r:t||r,"selectVersionBy"),Mt=St.bind(null,Ge),Nt=_e((e,t)=>e.filter(r=>t||!Ke(r)).toSorted(Qe)[0],"getLatestVersion");var Vt=Object.defineProperty,At=h((e,t)=>Vt(e,"name",{value:t,configurable:!0}),"e$2");const Ft=At(e=>({indent:Xe(e).indent,trailingWhitespace:Ze(e)||""}),"recognizeFormat");var Ht=Object.defineProperty,O=h((e,t)=>Ht(e,"name",{value:t,configurable:!0}),"a$2");const{debug:K}=j.withScope("msr:updateDeps"),ee=O((e,t)=>{if(typeof e=="string")return e==="inherit"?t:e;if(t&&e[t])return e[t]},"resolveReleaseTypeFromStrategy"),Lt=O((e,t,r)=>{const s=e?$.inc(e,"prerelease",r):void 0,a=$.inc(t,"prerelease",r)||void 0;return s?Mt(a,s):a},"nextPreHighestVersion"),qt=O((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=Nt(e,!0);return Lt(a,t,s)},"nextPreVersionCases"),U=O((e,t,r,s,a)=>{const o=["patch","minor","major"],{localDeps:i,manifest:d={}}=e,l=e._lastRelease?.version,{dependencies:f={},devDependencies:p={},optionalDependencies:g={},peerDependencies:u={}}=d,n=[f,p,u,g],w=[f,u,g],v=O((y,m,_)=>{const D=y[m];if(!_||!D)return!1;const E=de(D,_,t,a);return D!==E?(y[m]=E,!0):!1},"bumpDependency");let c;const b=i.filter(y=>!s.includes(y)).reduce((y,m)=>{const _=xe(m,t,r,[...s,e],a);let D;_?D=(m._preRelease?ue(m):pe(m))||void 0:D=m._lastRelease?.version;let E=_,L=D;if(!_&&m.localDeps&&m.localDeps.length>0){const S=U(m,t,r,[...s,e],a);if(S){const F=o.indexOf(S),z=c?o.indexOf(c):-1;if(F>z&&(c=S),E=S,E&&m._lastRelease?.version){const Y=m._nextType;m._nextType=E,L=(m._preRelease?ue(m):pe(m))||void 0,m._nextType=Y}}}if(n.forEach(S=>v(S,m.name,L||D)),!(w.some(S=>{const F=S[m.name],z=L||D;if(!L&&!D||!F||!z)return!1;const Y=de(F,z,t,a);return F!==Y})||!l||E&&E!==_))return y;const se=E||_;if(!se)return y;const q=ee(r,se);if(!q)return y;if(!y)return q;const Te=o.indexOf(q),De=o.indexOf(y);return Te>De?q:y},void 0);return!b&&c?ee(r,c)||c:b},"getDependentRelease"),zt=O((e,t)=>{if(e.startsWith("workspace:")){const r=/^workspace:(([\^~*])?.*)$/u.exec(e);if(!r)return e;const[,s,a]=r;return a===s?a==="*"?t:a+t:s}return e},"substituteWorkspaceVersion"),ke=O((e,t)=>Le(e,(r,s,a)=>{qe(s,t[a])||(r[a]=ae(s)&&ae(t[a])?JSON.stringify(ke(s,t[a])):`${t[a]} → ${s}`)})||{},"difference"),Bt=O((e,t)=>{const r=`[${e.name}]`,s=je(t),a=["dependencies","devDependencies","peerDependencies","optionalDependencies"].reduce((o,i)=>{const d=ke(e[i],s[i]);return Object.keys(d).length>0&&(o[i]=d),o},{});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"?$.inc(t,e._nextType):t||"1.0.0"},"getNextVersion"),Ut=O(e=>{const t=$.parse(e);if(!t)return null;const r=t.prerelease[0];return r==null?null:String(r)},"getPreReleaseTag"),ue=O(e=>{const t=e._lastRelease?.version,r=Ut(t||"");return r!==null&&r!==e._preRelease||!t?`1.0.0-${e._preRelease}.1`:qt([],t||"",e._nextType||"patch",e._preRelease||"")},"getNextPreVersion"),xe=O((e,t="override",r="patch",s=[],a="")=>{const o=U(e,t,r,s,a);if(e._nextType)return e._nextType;if(!o&&e.localDeps&&e.localDeps.length>0&&e.manifest){const d=e.manifest,{dependencies:l={},optionalDependencies:f={},peerDependencies:p={}}=d,g={...l,...f,...p};if(e.localDeps.some(u=>!u.name||g[u.name]===void 0?!1:u._nextType?!0:u.localDeps&&u.localDeps.length>0?U(u,t,r,[...s,e],a)!==void 0:!1)){if(typeof r=="string"&&r==="inherit"){const n=U(e,t,r,s,a);if(n)return e._nextType=n,e._nextType}const u=typeof r=="string"&&r!=="inherit"?r:"patch";return e._nextType=u,e._nextType}}if(!o)return;const i=ee(r,o);if(i)return e._nextType=i,e._nextType},"resolveReleaseType"),de=O((e,t,r="override",s="")=>{if(e=zt(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)=>a[i]?o.replace(/\d+/u,a[i]):o).join(".")}return s+t},"resolveNextVersion"),Wt=O(e=>{const{manifest:t,path:r}=e,{indent:s,trailingWhitespace:a}=Ft(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`)}),Bt(t,r)&&Ye(r,JSON.stringify(t,null,s)+a)},"updateManifestDeps");var It=Object.defineProperty,C=h((e,t)=>It(e,"name",{value:t,configurable:!0}),"c$2");const{debug:N}=j.withScope("msr:catalogChanges"),Jt=C(e=>{const t=we(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"),Yt=C(async e=>{const t=we(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"),Gt=C(async e=>Jt(e)||Yt(e),"getCatalogDefinitions"),Kt=C(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){N(`Failed to get catalog definitions at commit ${t}:`,s)}return null},"getCatalogDefinitionsAtCommit"),Qt=C((e,t)=>{const r=C(o=>o.replace(/^[\^~]/,"").trim(),"extractVersion"),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},"getReleaseTypeFromVersionChange"),Xt=C(async(e,t,r)=>{e=V(e);const s=await Gt(e);if(!s)return N("No catalog definitions found"),{};if(!t)return N("No last release found, skipping catalog change detection"),{};const a=await Kt(e,t);if(!a)return N("No old catalog definitions found at last release"),{};const o={};for(const[i,d]of Object.entries(s)){const l=a[i];if(l)for(const[f,p]of Object.entries(d)){const g=l[f];if(g&&g!==p){const u=Qt(g,p);u&&(o[i]||(o[i]={}),o[i][f]={newVersion:p,oldVersion:g,releaseType:u},N(`Catalog change detected: ${i}:${f} ${g} -> ${p} (${u})`))}}}return o},"detectCatalogChanges"),Zt=C((e,t,r)=>{const s=`catalog:${t}`,a=[];for(const o of e){const{manifest:i}=o,d=[i.dependencies,i.peerDependencies,i.optionalDependencies].filter(Boolean);for(const l of d)for(const[f,p]of Object.entries(l))if(p===s){if(r&&f!==r)continue;a.push(o);break}}return a},"findPackagesUsingCatalog"),er=C((e,t)=>{const r=new Map;for(const[s,a]of Object.entries(t))for(const[o,i]of Object.entries(a)){const d=Zt(e,s,o);for(const l of d){const f=r.get(l.name),p=i.releaseType;if(p)if(f){const g={major:3,minor:2,patch:1},u=g[f];g[p]>u&&r.set(l.name,p)}else r.set(l.name,p)}}return r},"getAffectedPackagesFromCatalogChanges");var tr=Object.defineProperty,M=h((e,t)=>tr(e,"name",{value:t,configurable:!0}),"p$2");const{debug:k}=j.withScope("msr:inlinePlugin"),rr=M((e,t,r)=>{const{cwd:s}=t;let a=null,o=!1;return M(i=>{const{dir:d,name:l,plugins:f}=i,p=`[${l}]`,g={analyzeCommits:M(async(u,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&&k(p,`Branch channel: ${n.branch.channel}`),n.cwd=d;const w=r.firstParent?n.branch.name:void 0;if(n.commits=await G(s,d,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,w),i._lastRelease=n.lastRelease,!o&&n.lastRelease?.gitHead)try{const b=await Xt(s,n.lastRelease.gitHead,n.nextRelease?.gitHead);Object.keys(b).length>0?(a=er(e,b),o=!0,k(p,`Detected catalog changes affecting ${a.size} packages`)):o=!0}catch(b){k(p,"Failed to detect catalog changes:",b),o=!0}let v;a&&a.has(i.name)&&(v=a.get(i.name),k(p,`Catalog change triggers ${v} release`));let c;if(f.analyzeCommits&&(c=await f.analyzeCommits(n)||void 0),!c&&v)c=v;else if(c&&v){const b={major:3,minor:2,patch:1},y=b[c]||0;(b[v]||0)>y&&(c=v)}return i._nextType=c,i._analyzed=!0,r.deps&&(i._nextType=xe(i,r.deps.bump,r.deps.release,[],r.deps.prefix)),k(p,"commits analyzed"),k(p,`release type: ${i._nextType}`),i._nextType??null},"analyzeCommits"),generateNotes:M(async(u,n)=>{n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),n.cwd=d,i._nextRelease=n.nextRelease,n.nextRelease?.channel&&k(p,`Release channel: ${n.nextRelease.channel}`);const w=[];if(n.lastRelease&&n.lastRelease.gitTag&&(!n.lastRelease.gitHead||n.lastRelease.gitHead===n.lastRelease.gitTag)){const y=await me("git",["rev-parse","--show-toplevel"],{cwd:n.cwd}),m=V(y.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 G(s,d,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,v);let c;f.generateNotes&&(c=await f.generateNotes(n)),c&&w.push(c.replace(/^(#+) (\[?\d+\.\d+\.\d+\]?)/u,`$1 ${l} $2`));const b=i.localDeps.filter(y=>y._nextRelease);if(b.length>0){w.push("### Dependencies");const y=b.map(m=>{const _=m._nextRelease;return _?`* **${m.name}:** upgraded to ${_.version}`:""}).filter(Boolean);w.push(y.join(`
|
|
2
|
+
`))}return k(p,"notes generated"),w.join(`
|
|
3
|
+
|
|
4
|
+
`)},"generateNotes"),prepare:M(async(u,n)=>{if(n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),r.dryRun){k(p,"skipping prepare in dry-run mode");return}if(Wt(i),i._depsUpdated=!0,n.cwd=d,!n.branch)throw new Error("context.branch is required");const w=r.firstParent?n.branch.name:void 0;n.commits=await G(s,d,n.lastRelease?n.lastRelease.gitHead:void 0,n.nextRelease?n.nextRelease.gitHead:void 0,w),f.prepare&&await f.prepare(n),i._prepared=!0,k(p,"prepared")},"prepare"),publish:M(async(u,n)=>{if(n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),r.dryRun)return k(p,"skipping publish in dry-run mode"),[];n.cwd=d;let w=[];if(f.publish){const v=await f.publish?.(n);v!==void 0&&(w=Array.isArray(v)?v:[v])}return i._published=!0,k(p,"published"),w.length>0?w[0]:{}},"publish"),verifyConditions:M(async(u,n)=>{n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),n.cwd=d,f.verifyConditions&&await f.verifyConditions(n),i._ready=!0,k(p,"verified conditions")},"verifyConditions"),verifyRelease:M(async(u,n)=>{n.options||(n.options={}),Object.assign(n.options,i.options),Object.assign(n.options,n.options._pkgOptions||{}),n.cwd=d,await f?.verifyRelease?.(n),k(p,"release verified")},"verifyRelease")};return Object.keys(g).forEach(u=>Reflect.defineProperty(g[u],"pluginName",{enumerable:!0,value:"Inline plugin",writable:!1})),k(p,"inlinePlugin created"),g},"createInlinePlugin")},"createInlinePluginCreator");var nr=Object.defineProperty,sr=h((e,t)=>nr(e,"name",{value:t,configurable:!0}),"o$1");const R="release",ar=["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=sr(async e=>(await $e(R,{mergeSearchPlaces:!1,searchPlaces:ar}).search(e))?.config??{},"getConfig");var or=Object.defineProperty,Re=h((e,t)=>or(e,"name",{value:t,configurable:!0}),"r$1");const fe=Re(e=>e==null,"isNil"),B=Re((e={},t={})=>({...e,...oe(t,r=>!fe(r)),deps:{...e.deps,...oe(t.deps,r=>!fe(r))},ignorePackages:[...new Set([...W(e.ignorePackages||[]),...W(t.ignorePackages||[])])]}),"mergeConfig");var ir=Object.defineProperty,cr=h((e,t)=>ir(e,"name",{value:t,configurable:!0}),"o");const P="multi-release",lr=["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`],pr=cr(async(e,t)=>{const{config:r}=await $e(P,{searchPlaces:lr}).search(e)||{},{extends:s,...a}={...r};let o=a;if(s){const i=rt(import.meta.url),d=W(s).reduce((l,f)=>{const p=i(nt(e,f));return B(l,p)},{});o=B(o,d)}return o=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}"},o),B(o,t)},"getConfigMultiSemrel");var ur=Object.defineProperty,dr=h((e,t)=>ur(e,"name",{value:t,configurable:!0}),"t");const{Signale:fr}=ye,gr=dr(async({cwd:e,env:t,stderr:r,stdout:s},a)=>{try{const o=new be,i=new fr({stream:o});return await st({cwd:e,env:t,logger:i,stderr:r,stdout:s},a)}catch(o){throw j.failure("Error in semantic-release getConfig(): %0",o),o}},"getConfigSemantic");var mr=Object.defineProperty,yr=h((e,t)=>mr(e,"name",{value:t,configurable:!0}),"s");class ge extends he{static{h(this,"p")}static{yr(this,"RescopedStream")}_stream;_scope;constructor(t,r){super(),x(r,"scope: string"),x(t,"stream: stream"),this._stream=t,this._scope=r}write(t){return x(t,"msg: string"),this._stream.write(t.replace("[semantic-release]",`[${this._scope}]`))}}var hr=Object.defineProperty,br=h((e,t)=>hr(e,"name",{value:t,configurable:!0}),"e");const Pe=br(e=>e&&(e.startsWith("git+")?e.slice(4):e.startsWith("git://")?e.replace(/^git:\/\//u,"https://"):e),"normalizeRepositoryUrl");var vr=Object.defineProperty,I=h((e,t)=>vr(e,"name",{value:t,configurable:!0}),"P");const wr=I(async(e,{cwd:t,env:r,globalOptions:s,inputOptions:a,stderr:o,stdout:i})=>{e=V(e,t);const d=Fe(e),l=je(e),{name:f}=l,p=Object.keys({...l.dependencies,...l.devDependencies,...l.peerDependencies,...l.optionalDependencies}),g=await Oe(d),u={...s,...g,...a};if(!u.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&&(u.repositoryUrl=Pe(c))}const n=Object.fromEntries(Object.entries(r).filter(([,c])=>c!==void 0).map(([c,b])=>[c,String(b)])),{options:w,plugins:v}=await gr({cwd:d,env:n,stderr:o,stdout:i},u);return{deps:p,dir:d,localDeps:[],manifest:l,name:f,options:w,path:e,plugins:v}},"getPackage"),$r=I(async(e,t,r,s)=>{const{dir:a,name:o,options:i}=e,{env:d,stderr:l,stdout:f}=r,p=t(e),g={...i,...p},u={name:o,version:"${version}"},n="${name}@${version}";return g.tagFormat=Be(s.tagFormat||n)(u),g.debug=s.debug,g.dryRun=s.dryRun===void 0?g.dryRun:s.dryRun,g.ci=s.ci===void 0?g.ci:s.ci,g.branches=s.branches?W(s.branches):g.branches,g._pkgOptions=i,g.repositoryUrl&&typeof g.repositoryUrl=="string"&&(g.repositoryUrl=Pe(g.repositoryUrl)),e.result=await Ue(g,{cwd:a,env:d,stderr:new ge(l,o),stdout:new ge(f,o)}),e},"releasePackage"),Ur=I(async(e,t={},{cwd:r=process.cwd(),env:s=process.env,stderr:a=process.stderr,stdout:o=process.stdout}={},i={})=>{e&&x(e,"paths: string[]"),x(r,"cwd: directory"),x(s,"env: objectlike"),x(o,"stdout: stream"),x(a,"stderr: stream"),r=V(r);const d=await pr(r,i),l={deps:{},...d,...i};if(j.config.stdio=[a,o],j.config.level=l.logLevel,l.silent&&(j.config.level="silent"),l.debug){j.config.level="debug";let c="";s.DEBUG&&(c=`,${s.DEBUG}`),Q.enable(`msr:*,semantic-release:*${c}`)}j.info(`multi-semantic-release version: ${ot.version}`),j.info(`semantic-release version: ${We.version}`),l.debug&&j.info(`flags: ${JSON.stringify(l,null,2)}`);const f=await Oe(r),p={cwd:r,env:s,globalOptions:f,inputOptions:t,stderr:a,stdout:o},{packages:g,queue:u}=await He({cwd:r,filter:I((c=>{const b=c.manifest;return(!l.ignorePrivate||!b.private)&&(e?e.includes(c.manifestAbsPath)||e.includes(c.manifestRelPath):!0)}),"filter"),workspacesExtra:Array.isArray(l.ignorePackages)?l.ignorePackages.map(c=>`!${c}`):[]});e=e||Object.values(g).map(c=>c.manifestPath),j.complete(`Started multirelease! Loading ${e.length} packages...`);let n=await Promise.all(e.map(c=>wr(c,p)));n=n.filter(c=>c!==void 0),n.forEach(c=>{c.localDeps=[...new Set(c.deps.map(b=>n.find(y=>b===y.name)).filter(Boolean))],j.success(`Loaded package ${c.name}`)}),j.complete(`Queued ${u.length} packages! Starting release...`);const w=rr(n,p,l),v=await u.reduce(async(c,b)=>{const y=await c,m=n.find(({name:_})=>_===b);if(m){const{result:_}=await $r(m,w,p,l);if(_)return y+1}return y},Promise.resolve(0));return j.complete(`Released ${v} of ${u.length} packages, semantically!`),ze(n,({name:c})=>u.indexOf(c))},"multiSemanticRelease");export{j as u,Ur as z};
|
package/package.json
CHANGED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
var $e=Object.defineProperty;var b=(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 U from"debug";import{transform as De,isEqual as Ee,isObject as X,pickBy as Z,castArray as H,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 ae}from"execa";import{getTagHead as Ae}from"semantic-release/lib/git.js";import ee from"git-log-parser";import oe from"signale";import{WritableStreamBuffer as ce}from"stream-buffers";import $,{gt as He,prerelease as We,rcompare as Le}from"semver";import qe from"detect-indent";import{detectNewline as ze}from"detect-newline";import{isAccessibleSync as le,readJson as Be}from"@visulima/fs";import{readYamlSync as Ue}from"@visulima/fs/yaml";import{resolve as pe}from"@visulima/path";import{cosmiconfig as ue}from"cosmiconfig";import Je 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,L=b(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:K,normalize:ke,join:Oe,parse:Re,relative:xe,dirname:Pe}=L("node:path"),{existsSync:Y,lstatSync:Q,readFileSync:Ve,writeFileSync:Fe}=L("node:fs"),{Writable:ie}=L("node:stream"),{createRequire:Ie}=L("node:module");var Ke="3.2.3-alpha.2";const Ye={version:Ke};var Qe=Object.defineProperty,Xe=b((e,t)=>Qe(e,"name",{value:t,configurable:!0}),"t$4");const{Signale:Ze}=oe,I=["error","warn","info","debug","trace"],et=Xe((e,t)=>{const r=I.indexOf(e),n=I.indexOf(t);return r!==-1&&n!==-1&&r<=n},"assertLevel"),te={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 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:U(e||this.prefix),prefix:e}},...[...I,...Object.keys(te)].reduce((e,t)=>(e[t]=function(...r){et(te[t]||t,this.config.level)&&(this.config._signale[t]||console[t]||(()=>{}))(this.prefix,...r)},e),{}),debug:U("msr:")};var tt=Object.defineProperty,rt=b((e,t)=>tt(e,"name",{value:t,configurable:!0}),"t$3");class Ar extends Error{static{b(this,"ValueError")}static{rt(this,"ValueError")}constructor(t){super(t),this.name="ValueError"}}var st=Object.defineProperty,T=b((e,t)=>st(e,"name",{value:t,configurable:!0}),"t$2");const nt=T(e=>K(e)&&Y(e)&&Q(e).isDirectory(),"isDirectory"),at=T(e=>e instanceof ie||e instanceof ce,"isStream"),ot=T(e=>K(e),"isAbsolute"),it=T(e=>typeof e=="string"&&e.length>0,"isPath"),ct=T(e=>e!==null&&typeof e=="object"&&!Array.isArray(e),"isObjectLike"),lt=T(e=>e===void 0?!0:typeof e=="string"&&/^[a-f0-9]{40}$/i.test(e),"isAlphanumeric40"),pt=T(e=>typeof e=="string"&&e.length>0,"isStringPlus"),ut=T(e=>typeof e=="string"&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(e),"isKebab"),dt=T(e=>typeof e=="string"&&e===e.toLowerCase(),"isLower"),gt=T(e=>Number.isInteger(e),"isInteger"),k=T((e,t)=>{const[r,n]=t.split(":").map(i=>i.trim()),a=n?.endsWith("?"),o=a&&n?n.slice(0,-1):n;if(!(a&&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 u of e)k(u,`${r}[item]: ${i}`);return}switch(o){case"absolute":{if(!(typeof e=="string"&&ot(e)))throw new TypeError(`${r}: Must be an absolute path`);break}case"alphanumeric{40}":{if(!lt(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"&>(e)))throw new TypeError(`${r}: Must be an integer`);break}case"kebab":{if(!(typeof e=="string"&&ut(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(!ct(e))throw new TypeError(`${r}: Must be an object`);break}case"path":{if(!(typeof e=="string"&&it(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(!pt(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 ft=Object.defineProperty,mt=b((e,t)=>ft(e,"name",{value:t,configurable:!0}),"r$3");const S=mt((e,t=process.cwd())=>{k(e,"path: path"),k(t,"cwd: absolute");const r=ke(K(e)?e:Oe(t,e)),{root:n}=Re(r);let a=r.length;for(;a>n.length&&(r[a-1]==="/"||r[a-1]==="\\");)a-=1;return a===r.length?r:r.slice(0,a)},"cleanPath");var yt=Object.defineProperty,M=b((e,t)=>yt(e,"name",{value:t,configurable:!0}),"n$1");const ht=M(e=>e.readable?new Promise((t,r)=>{if(!e.readable){t([]);return}let n=[];const a=M(()=>{n=[],e.removeListener("data",o),e.removeListener("end",i),e.removeListener("error",u),e.removeListener("close",c)},"cleanup"),o=M(g=>{n.push(g)},"onData"),i=M(()=>{t(n),a()},"onEnd"),u=M(g=>{r(g),a()},"onError"),c=M(()=>{t(n),a()},"onClose");e.on("data",o),e.on("end",i),e.on("error",u),e.on("close",c)}):Promise.resolve([]),"streamToArray");var bt=Object.defineProperty,vt=b((e,t)=>bt(e,"name",{value:t,configurable:!0}),"f");const{debug:re}=j.withScope("msr:commitsFilter"),z=vt(async(e,t,r,n,a)=>{if(k(e,"cwd: directory"),e=S(e),k(t,"dir: path"),t=S(t,e),!Y(t)||!Q(t).isDirectory())throw new TypeError("dir: Must be a path to an existing directory");if(k(r,"lastRelease: alphanumeric{40}?"),k(n,"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 ae("git",["rev-parse","--show-toplevel"],{cwd:e}),i=S(o.stdout);Object.assign(ee.fields,{committerDate:{key:"ci",type:Date},gitTags:"d",hash:"H",message:"B"});const u=xe(i,t),c=a?["--first-parent",a]:[],g=(r?`${r}..`:"")+(n||"HEAD"),p=[...c,g,"--",u],d=ee.parse({_:p},{cwd:i,env:process.env}),f=await ht(d);return f.forEach(s=>{s.message=s.message.trim(),s.gitTags=s.gitTags.trim()}),re("git log filter query: %o",p),re("filtered commits: %O",f),f},"getCommitsFiltered");var wt=Object.defineProperty,J=b((e,t)=>wt(e,"name",{value:t,configurable:!0}),"a$2");const $t=J(e=>{if(!Y(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 Ve(e,"utf8")}catch{throw new ReferenceError(`package.json cannot be read: "${e}"`)}},"readManifest"),de=J(e=>{const t=$t(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 n=r;if(typeof n.name!="string"||n.name.length===0)throw new SyntaxError(`Package name must be non-empty string: "${e}"`);const a=J(o=>{if(Object.prototype.hasOwnProperty.call(n,o)&&typeof n[o]!="object")throw new SyntaxError(`Package ${o} must be object: "${e}"`)},"checkDeps");return a("dependencies"),a("devDependencies"),a("peerDependencies"),a("optionalDependencies"),Object.defineProperty(n,"__contents__",{enumerable:!1,value:t}),n},"getManifest");var jt=Object.defineProperty,ge=b((e,t)=>jt(e,"name",{value:t,configurable:!0}),"r$2");const _t=ge((e,t,r)=>e&&t&&r?e(t,r)?t:r:t||r,"selectVersionBy"),kt=_t.bind(null,He),Ot=ge((e,t)=>e.filter(r=>t||!We(r)).toSorted(Le)[0],"getLatestVersion");var Rt=Object.defineProperty,xt=b((e,t)=>Rt(e,"name",{value:t,configurable:!0}),"e$1");const Pt=xt(e=>({indent:qe(e).indent,trailingWhitespace:ze(e)||""}),"recognizeFormat");var Tt=Object.defineProperty,R=b((e,t)=>Tt(e,"name",{value:t,configurable:!0}),"o$2");const{debug:B}=j.withScope("msr:updateDeps"),Dt=R((e,t,r)=>{const n=e?$.inc(e,"prerelease",r):void 0,a=$.inc(t,"prerelease",r)||void 0;return n?kt(a,n):a},"nextPreHighestVersion"),Et=R((e,t,r,n)=>{if(!$.prerelease(t)){if(!$.parse(t))return;const o=$.inc(t,r||"patch");return o?`${o}-${n}.1`:void 0}const a=Ot(e,!0);return Dt(a,t,n)},"nextPreVersionCases"),G=R((e,t,r,n,a)=>{const o=["patch","minor","major"],{localDeps:i,manifest:u={}}=e,c=e._lastRelease?.version,{dependencies:g={},devDependencies:p={},optionalDependencies:d={},peerDependencies:f={}}=u,s=[g,p,f,d],v=R((m,y,w)=>{const O=m[y];if(!w||!O)return!1;const V=Vt(O,w,t,a);return O!==V?(m[y]=V,!0):!1},"bumpDependency");let h;const l=i.filter(m=>!n.includes(m)).reduce((m,y)=>{const w=me(y,t,r,[...n,e],a);let O;if(w?O=(y._preRelease?At(y):Mt(y))||void 0:O=y._lastRelease?.version,!w&&y.localDeps&&y.localDeps.length>0){const N=G(y,t,r,[...n,e],a);if(N){const q=o.indexOf(N),we=h?o.indexOf(h):-1;q>we&&(h=N)}}if(!s.reduce((N,q)=>v(q,y.name,O)||N,!c)||!w)return m;if(!m)return w;const V=o.indexOf(w),ve=o.indexOf(m);return V>ve?w:m},void 0);return!l&&h?h:l},"getDependentRelease"),Ct=R((e,t)=>{if(e.startsWith("workspace:")){const r=/^workspace:(([\^~*])?.*)$/u.exec(e);if(!r)return e;const[,n,a]=r;return a===n?a==="*"?t:a+t:n}return e},"substituteWorkspaceVersion"),fe=R((e,t)=>De(e,(r,n,a)=>{Ee(n,t[a])||(r[a]=X(n)&&X(t[a])?JSON.stringify(fe(n,t[a])):`${t[a]} → ${n}`)})||{},"difference"),St=R((e,t)=>{const r=`[${e.name}]`,n=de(t),a=["dependencies","devDependencies","peerDependencies","optionalDependencies"].reduce((o,i)=>{const u=fe(e[i],n[i]);return Object.keys(u).length>0&&(o[i]=u),o},{});return B(r,"package.json path=",t),Object.keys(a).length>0?(B(r,"changes=",a),!0):(B(r,"no deps changes"),!1)},"auditManifestChanges"),Mt=R(e=>{const t=e._lastRelease?.version;return t&&typeof e._nextType=="string"?$.inc(t,e._nextType):t||"1.0.0"},"getNextVersion"),Nt=R(e=>{const t=$.parse(e);if(!t)return null;const r=t.prerelease[0];return r==null?null:String(r)},"getPreReleaseTag"),At=R(e=>{const t=e._lastRelease?.version,r=Nt(t||"");return r!==null&&r!==e._preRelease||!t?`1.0.0-${e._preRelease}.1`:Et([],t||"",e._nextType||"patch",e._preRelease||"")},"getNextPreVersion"),me=R((e,t="override",r="patch",n=[],a="")=>{const o=G(e,t,r,n,a);if(e._nextType)return e._nextType;if(!o&&e.localDeps&&e.localDeps.length>0&&e.manifest){const i=e.manifest,{dependencies:u={},devDependencies:c={},optionalDependencies:g={},peerDependencies:p={}}=i,d={...u,...c,...g,...p};if(e.localDeps.some(f=>!f.name||d[f.name]===void 0?!1:f._nextType?!0:f.localDeps&&f.localDeps.length>0?G(f,t,r,[...n,e],a)!==void 0:!1)&&r!=="inherit")return e._nextType=r,e._nextType}if(o)return e._nextType=r==="inherit"?o:r,e._nextType},"resolveReleaseType"),Vt=R((e,t,r="override",n="")=>{if(e=Ct(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)=>a[i]?o.replace(/\d+/u,a[i]):o).join(".")}return n+t},"resolveNextVersion"),Ft=R(e=>{const{manifest:t,path:r}=e,{indent:n,trailingWhitespace:a}=Pt(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`)}),St(t,r)&&Fe(r,JSON.stringify(t,null,n)+a)},"updateManifestDeps");var Ht=Object.defineProperty,D=b((e,t)=>Ht(e,"name",{value:t,configurable:!0}),"c$2");const{debug:C}=j.withScope("msr:catalogChanges"),Wt=D(e=>{const t=pe(e,"pnpm-workspace.yaml");if(!le(t))return null;try{return Ue(t).catalogs||null}catch(r){return C("Failed to parse pnpm-workspace.yaml:",r),null}},"parsePnpmCatalog"),Lt=D(async e=>{const t=pe(e,"package.json");if(!le(t))return null;try{return(await Be(t)).catalogs||null}catch(r){return C("Failed to parse package.json for yarn catalog:",r),null}},"parseYarnCatalog"),qt=D(async e=>Wt(e)||Lt(e),"getCatalogDefinitions"),zt=D(async(e,t)=>{const{execa:r}=await import("execa");try{try{const n=await r("git",["show",`${t}:pnpm-workspace.yaml`],{cwd:e,reject:!1});if(n.exitCode===0&&n.stdout){const{parse:a}=await import("yaml"),o=a(n.stdout);if(o?.catalogs)return o.catalogs}}catch{}try{const n=await r("git",["show",`${t}:package.json`],{cwd:e,reject:!1});if(n.exitCode===0&&n.stdout)return JSON.parse(n.stdout).catalogs||null}catch{}}catch(n){C(`Failed to get catalog definitions at commit ${t}:`,n)}return null},"getCatalogDefinitionsAtCommit"),Bt=D((e,t)=>{const r=D(o=>o.replace(/^[\^~]/,"").trim(),"extractVersion"),n=r(e),a=r(t);return!$.valid(n)||!$.valid(a)||$.eq(n,a)?null:$.major(n)!==$.major(a)?"major":$.minor(n)!==$.minor(a)?"minor":$.patch(n)!==$.patch(a)?"patch":null},"getReleaseTypeFromVersionChange"),Ut=D(async(e,t,r)=>{e=S(e);const n=await qt(e);if(!n)return C("No catalog definitions found"),{};if(!t)return C("No last release found, skipping catalog change detection"),{};const a=await zt(e,t);if(!a)return C("No old catalog definitions found at last release"),{};const o={};for(const[i,u]of Object.entries(n)){const c=a[i];if(c)for(const[g,p]of Object.entries(u)){const d=c[g];if(d&&d!==p){const f=Bt(d,p);f&&(o[i]||(o[i]={}),o[i][g]={newVersion:p,oldVersion:d,releaseType:f},C(`Catalog change detected: ${i}:${g} ${d} -> ${p} (${f})`))}}}return o},"detectCatalogChanges"),It=D((e,t,r)=>{const n=`catalog:${t}`,a=[];for(const o of e){const{manifest:i}=o,u=[i.dependencies,i.devDependencies,i.peerDependencies,i.optionalDependencies].filter(Boolean);for(const c of u)for(const[g,p]of Object.entries(c))if(p===n){if(r&&g!==r)continue;a.push(o);break}}return a},"findPackagesUsingCatalog"),Jt=D((e,t)=>{const r=new Map;for(const[n,a]of Object.entries(t))for(const[o,i]of Object.entries(a)){const u=It(e,n,o);for(const c of u){const g=r.get(c.name),p=i.releaseType;if(p)if(g){const d={major:3,minor:2,patch:1},f=d[g];d[p]>f&&r.set(c.name,p)}else r.set(c.name,p)}}return r},"getAffectedPackagesFromCatalogChanges");var Gt=Object.defineProperty,E=b((e,t)=>Gt(e,"name",{value:t,configurable:!0}),"p$2");const{debug:_}=j.withScope("msr:inlinePlugin"),Kt=E((e,t,r)=>{const{cwd:n}=t;let a=null,o=!1;return E(i=>{const{dir:u,name:c,plugins:g}=i,p=`[${c}]`,d={analyzeCommits:E(async(f,s)=>{if(!s.branch)throw new Error("context.branch is required");s.options||(s.options={}),Object.assign(s.options,i.options),Object.assign(s.options,s.options._pkgOptions||{}),i._preRelease=s.branch.prerelease||null,i._branch=s.branch.name,s.branch.channel&&_(p,`Branch channel: ${s.branch.channel}`),s.cwd=u;const v=r.firstParent?s.branch.name:void 0;if(s.commits=await z(n,u,s.lastRelease?s.lastRelease.gitHead:void 0,s.nextRelease?s.nextRelease.gitHead:void 0,v),i._lastRelease=s.lastRelease,!o&&s.lastRelease?.gitHead)try{const m=await Ut(n,s.lastRelease.gitHead,s.nextRelease?.gitHead);Object.keys(m).length>0?(a=Jt(e,m),o=!0,_(p,`Detected catalog changes affecting ${a.size} packages`)):o=!0}catch(m){_(p,"Failed to detect catalog changes:",m),o=!0}let h;a&&a.has(i.name)&&(h=a.get(i.name),_(p,`Catalog change triggers ${h} release`));let l;if(g.analyzeCommits&&(l=await g.analyzeCommits(s)||void 0),!l&&h)l=h;else if(l&&h){const m={major:3,minor:2,patch:1},y=m[l]||0;(m[h]||0)>y&&(l=h)}return i._nextType=l,i._analyzed=!0,r.deps&&(i._nextType=me(i,r.deps.bump,r.deps.release,[],r.deps.prefix)),_(p,"commits analyzed"),_(p,`release type: ${i._nextType}`),i._nextType??null},"analyzeCommits"),generateNotes:E(async(f,s)=>{s.options||(s.options={}),Object.assign(s.options,i.options),Object.assign(s.options,s.options._pkgOptions||{}),s.cwd=u,i._nextRelease=s.nextRelease,s.nextRelease?.channel&&_(p,`Release channel: ${s.nextRelease.channel}`);const v=[];if(s.lastRelease&&s.lastRelease.gitTag&&(!s.lastRelease.gitHead||s.lastRelease.gitHead===s.lastRelease.gitTag)){const y=await ae("git",["rev-parse","--show-toplevel"],{cwd:s.cwd}),w=S(y.stdout);s.lastRelease.gitHead=await Ae(s.lastRelease.gitTag,{cwd:w,env:s.env})}if(!s.branch)throw new Error("context.branch is required");const h=r.firstParent?s.branch.name:void 0;s.commits=await z(n,u,s.lastRelease?s.lastRelease.gitHead:void 0,s.nextRelease?s.nextRelease.gitHead:void 0,h);let l;g.generateNotes&&(l=await g.generateNotes(s)),l&&v.push(l.replace(/^(#+) (\[?\d+\.\d+\.\d+\]?)/u,`$1 ${c} $2`));const m=i.localDeps.filter(y=>y._nextRelease);if(m.length>0){v.push("### Dependencies");const y=m.map(w=>{const O=w._nextRelease;return O?`* **${w.name}:** upgraded to ${O.version}`:""}).filter(Boolean);v.push(y.join(`
|
|
2
|
-
`))}return _(p,"notes generated"),v.join(`
|
|
3
|
-
|
|
4
|
-
`)},"generateNotes"),prepare:E(async(f,s)=>{if(s.options||(s.options={}),Object.assign(s.options,i.options),Object.assign(s.options,s.options._pkgOptions||{}),r.dryRun){_(p,"skipping prepare in dry-run mode");return}if(Ft(i),i._depsUpdated=!0,s.cwd=u,!s.branch)throw new Error("context.branch is required");const v=r.firstParent?s.branch.name:void 0;s.commits=await z(n,u,s.lastRelease?s.lastRelease.gitHead:void 0,s.nextRelease?s.nextRelease.gitHead:void 0,v),g.prepare&&await g.prepare(s),i._prepared=!0,_(p,"prepared")},"prepare"),publish:E(async(f,s)=>{if(s.options||(s.options={}),Object.assign(s.options,i.options),Object.assign(s.options,s.options._pkgOptions||{}),r.dryRun)return _(p,"skipping publish in dry-run mode"),[];s.cwd=u;let v=[];if(g.publish){const h=await g.publish?.(s);h!==void 0&&(v=Array.isArray(h)?h:[h])}return i._published=!0,_(p,"published"),v.length>0?v[0]:{}},"publish"),verifyConditions:E(async(f,s)=>{s.options||(s.options={}),Object.assign(s.options,i.options),Object.assign(s.options,s.options._pkgOptions||{}),s.cwd=u,g.verifyConditions&&await g.verifyConditions(s),i._ready=!0,_(p,"verified conditions")},"verifyConditions"),verifyRelease:E(async(f,s)=>{s.options||(s.options={}),Object.assign(s.options,i.options),Object.assign(s.options,s.options._pkgOptions||{}),s.cwd=u,await g?.verifyRelease?.(s),_(p,"release verified")},"verifyRelease")};return Object.keys(d).forEach(f=>Reflect.defineProperty(d[f],"pluginName",{enumerable:!0,value:"Inline plugin",writable:!1})),_(p,"inlinePlugin created"),d},"createInlinePlugin")},"createInlinePluginCreator");var Yt=Object.defineProperty,Qt=b((e,t)=>Yt(e,"name",{value:t,configurable:!0}),"o$1");const x="release",Xt=["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=Qt(async e=>(await ue(x,{mergeSearchPlaces:!1,searchPlaces:Xt}).search(e))?.config??{},"getConfig");var Zt=Object.defineProperty,he=b((e,t)=>Zt(e,"name",{value:t,configurable:!0}),"r");const se=he(e=>e==null,"isNil"),F=he((e={},t={})=>({...e,...Z(t,r=>!se(r)),deps:{...e.deps,...Z(t.deps,r=>!se(r))},ignorePackages:[...new Set([...H(e.ignorePackages||[]),...H(t.ignorePackages||[])])]}),"mergeConfig");var er=Object.defineProperty,tr=b((e,t)=>er(e,"name",{value:t,configurable:!0}),"o");const P="multi-release",rr=["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`],sr=tr(async(e,t)=>{const{config:r}=await ue(P,{searchPlaces:rr}).search(e)||{},{extends:n,...a}={...r};let o=a;if(n){const i=Ie(import.meta.url),u=H(n).reduce((c,g)=>{const p=i(Je(e,g));return F(c,p)},{});o=F(o,u)}return o=F({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),F(o,t)},"getConfigMultiSemrel");var nr=Object.defineProperty,ar=b((e,t)=>nr(e,"name",{value:t,configurable:!0}),"t");const{Signale:or}=oe,ir=ar(async({cwd:e,env:t,stderr:r,stdout:n},a)=>{try{const o=new ce,i=new or({stream:o});return await Ge({cwd:e,env:t,logger:i,stderr:r,stdout:n},a)}catch(o){throw j.failure("Error in semantic-release getConfig(): %0",o),o}},"getConfigSemantic");var cr=Object.defineProperty,lr=b((e,t)=>cr(e,"name",{value:t,configurable:!0}),"s$1");class ne extends ie{static{b(this,"p")}static{lr(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 pr=Object.defineProperty,ur=b((e,t)=>pr(e,"name",{value:t,configurable:!0}),"i");const be=ur(e=>e&&(/^[^:]+:\/\/[^@]+@/u.test(e)?e.startsWith("git+")?e.slice(4):e:e.startsWith("git+")?e.slice(4):e.startsWith("git://")?e.replace(/^git:\/\//u,"https://"):e),"normalizeRepositoryUrl");var dr=Object.defineProperty,W=b((e,t)=>dr(e,"name",{value:t,configurable:!0}),"P");const gr=W(async(e,{cwd:t,env:r,globalOptions:n,inputOptions:a,stderr:o,stdout:i})=>{e=S(e,t);const u=Pe(e),c=de(e),{name:g}=c,p=Object.keys({...c.dependencies,...c.devDependencies,...c.peerDependencies,...c.optionalDependencies}),d=await ye(u),f={...n,...d,...a};if(!f.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&&(l.startsWith("git+")||l.startsWith("git://"))&&(f.repositoryUrl=be(l))}const s=Object.fromEntries(Object.entries(r).filter(([,l])=>l!==void 0).map(([l,m])=>[l,String(m)])),{options:v,plugins:h}=await ir({cwd:u,env:s,stderr:o,stdout:i},f);return{deps:p,dir:u,localDeps:[],manifest:c,name:g,options:v,path:e,plugins:h}},"getPackage"),fr=W(async(e,t,r,n)=>{const{dir:a,name:o,options:i}=e,{env:u,stderr:c,stdout:g}=r,p=t(e),d={...i,...p},f={name:o,version:"${version}"},s="${name}@${version}";return d.tagFormat=Se(n.tagFormat||s)(f),d.debug=n.debug,d.dryRun=n.dryRun===void 0?d.dryRun:n.dryRun,d.ci=n.ci===void 0?d.ci:n.ci,d.branches=n.branches?H(n.branches):d.branches,d._pkgOptions=i,d.repositoryUrl&&typeof d.repositoryUrl=="string"&&(d.repositoryUrl.startsWith("git+")||d.repositoryUrl.startsWith("git://"))&&(d.repositoryUrl=be(d.repositoryUrl)),e.result=await Me(d,{cwd:a,env:u,stderr:new ne(c,o),stdout:new ne(g,o)}),e},"releasePackage"),Vr=W(async(e,t={},{cwd:r=process.cwd(),env:n=process.env,stderr:a=process.stderr,stdout:o=process.stdout}={},i={})=>{e&&k(e,"paths: string[]"),k(r,"cwd: directory"),k(n,"env: objectlike"),k(o,"stdout: stream"),k(a,"stderr: stream"),r=S(r);const u=await sr(r,i),c={deps:{},...u,...i};if(j.config.stdio=[a,o],j.config.level=c.logLevel,c.silent&&(j.config.level="silent"),c.debug){j.config.level="debug";let l="";n.DEBUG&&(l=`,${n.DEBUG}`),U.enable(`msr:*,semantic-release:*${l}`)}j.info(`multi-semantic-release version: ${Ye.version}`),j.info(`semantic-release version: ${Ne.version}`),c.debug&&j.info(`flags: ${JSON.stringify(c,null,2)}`);const g=await ye(r),p={cwd:r,env:n,globalOptions:g,inputOptions:t,stderr:a,stdout:o},{packages:d,queue:f}=await Te({cwd:r,filter:W((l=>{const m=l.manifest;return(!c.ignorePrivate||!m.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(d).map(l=>l.manifestPath),j.complete(`Started multirelease! Loading ${e.length} packages...`);let s=await Promise.all(e.map(l=>gr(l,p)));s=s.filter(l=>l!==void 0),s.forEach(l=>{l.localDeps=[...new Set(l.deps.map(m=>s.find(y=>m===y.name)).filter(Boolean))],j.success(`Loaded package ${l.name}`)}),j.complete(`Queued ${f.length} packages! Starting release...`);const v=Kt(s,p,c),h=await f.reduce(async(l,m)=>{const y=await l,w=s.find(({name:O})=>O===m);if(w){const{result:O}=await fr(w,v,p,c);if(O)return y+1}return y},Promise.resolve(0));return j.complete(`Released ${h} of ${f.length} packages, semantically!`),Ce(s,({name:l})=>f.indexOf(l))},"multiSemanticRelease");export{Vr as q,j as u};
|