@qlover/fe-release 2.1.5 → 2.2.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/README.md CHANGED
@@ -1,122 +1,149 @@
1
1
  # Fe-release
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@qlover/fe-release.svg)](https://www.npmjs.com/package/@qlover/fe-release)
4
- [![license](https://img.shields.io/npm/l/@qlover/fe-release.svg)](https://github.com/your-repo/fe-release/blob/main/LICENSE)
5
-
6
- A professional front-end release automation tool built on top of [@changesets/cli](https://github.com/changesets/changesets), providing enhanced workflows for automated PR management and release processes.
7
-
8
- ## 📚 Table of Contents
9
-
10
- - [Features](#features)
11
- - [Installation](#installation)
12
- - [Quick Start](#quick-start)
13
- - [Usage](#usage)
14
- - [Configuration](#configuration)
15
- - [Workflows](#workflows)
16
- - [Plugin System](#plugin-system)
17
- - [API Reference](#api-reference)
18
- - [Troubleshooting](#troubleshooting)
19
- - [Contributing](#contributing)
20
- - [License](#license)
21
-
22
- ## ✨ Features
23
-
24
- - **Automated Version Management**
25
- - Powered by `@changesets/cli` for reliable version control
26
- - Automatic version bumping based on changes
27
- - Configurable version increment strategies
28
-
29
- - **Flexible Release Workflows**
30
- - Manual release process for direct control
31
- - PR-based automated release workflow (GitHub)
32
- - Customizable release strategies
33
-
34
- - **GitHub Integration**
35
- - Automated PR creation and management
36
- - Smart PR labeling system
37
- - Automated release notes generation
38
- - GitHub Actions integration
39
-
40
- - **Workspace Support**
41
- - First-class monorepo support
42
- - Multi-package release coordination
43
- - Dependency graph awareness
44
- - Selective package publishing
45
-
46
- - **Extensive Configuration**
47
- - Rich CLI options
48
- - Configurable via `fe-config.json`
49
- - Environment variable support
50
- - Plugin system for customization
51
-
52
- ## 🚀 Installation
4
+ [![license](https://img.shields.io/npm/l/@qlover/fe-release.svg)](https://github.com/qlover/fe-release/blob/main/LICENSE)
5
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/qlover/fe-release/pulls)
6
+
7
+ 一个基于 [@changesets/cli](https://github.com/changesets/changesets) 构建的专业前端发布自动化工具,提供增强的工作流程,用于自动化 PR 管理和发布流程。
8
+
9
+ ## 📚 目录
10
+
11
+ - [特性](#特性)
12
+ - [安装](#安装)
13
+ - [快速开始](#快速开始)
14
+ - [使用方法](#使用方法)
15
+ - [配置](#配置)
16
+ - [工作流程](#工作流程)
17
+ - [常见问题](#常见问题)
18
+ - [贡献指南](#贡献指南)
19
+ - [许可证](#许可证)
20
+
21
+ ## ✨ 特性
22
+
23
+ - **自动化版本管理**
24
+
25
+ - 基于 `@changesets/cli` 的可靠版本控制
26
+ - 根据变更自动进行版本更新
27
+ - 可配置的版本递增策略
28
+ - 支持语义化版本(Semantic Versioning)
29
+
30
+ - **灵活的发布工作流**
31
+
32
+ - 手动发布流程,提供直接控制
33
+ - 基于 PR 的自动化发布工作流(GitHub)
34
+ - 可自定义的发布策略
35
+ - 支持多环境发布(开发、测试、生产)
36
+
37
+ - **GitHub 集成**
38
+
39
+ - 自动化 PR 创建和管理
40
+ - 智能 PR 标签系统
41
+ - 自动生成发布说明
42
+ - GitHub Actions 集成
43
+ - 支持自动合并和冲突解决
44
+
45
+ - **工作区支持**
46
+
47
+ - 一流的 monorepo 支持
48
+ - 多包发布协调
49
+ - 依赖图感知
50
+ - 选择性包发布
51
+ - 支持私有包发布
52
+
53
+ - **丰富的配置选项**
54
+ - 丰富的 CLI 选项
55
+ - 通过 `fe-config.json` 配置
56
+ - 环境变量支持
57
+ - 插件系统支持自定义扩展
58
+
59
+ ## 🚀 安装
53
60
 
54
61
  ```bash
55
- # Using npm
56
- npm install @qlover/fe-release
62
+ # 使用 npm
63
+ npm install @qlover/fe-release --save-dev
57
64
 
58
- # Using yarn
59
- yarn add @qlover/fe-release
65
+ # 使用 yarn
66
+ yarn add @qlover/fe-release --dev
60
67
 
61
- # Using pnpm
62
- pnpm add @qlover/fe-release
68
+ # 使用 pnpm
69
+ pnpm add @qlover/fe-release -D
63
70
  ```
64
71
 
65
- ## 🏃 Quick Start
72
+ ## 🏃 快速开始
73
+
74
+ 1. **基础发布**
66
75
 
67
- 1. **Basic Release**
68
76
  ```bash
69
- # Create a release PR
77
+ # 创建发布 PR
70
78
  fe-release -P
71
79
 
72
- # Perform a dry run
80
+ # 预览发布(不实际执行)
73
81
  fe-release --dry-run
82
+
83
+ # 指定版本类型发布
84
+ fe-release --changelog.increment=major
74
85
  ```
75
86
 
76
- 2. **Workspace Release**
87
+ 2. **工作区发布**
88
+
77
89
  ```bash
78
- # Release multiple packages
90
+ # 发布多个包
79
91
  fe-release --workspaces.change-labels=pkg1,pkg2 -P
92
+
93
+ # 指定发布目录
94
+ fe-release --publish-path=packages/core
80
95
  ```
81
96
 
82
- ## 💻 Usage
97
+ 3. **环境发布**
98
+
99
+ ```bash
100
+ # 发布到测试环境
101
+ fe-release --env=test -P
102
+
103
+ # 发布到生产环境
104
+ fe-release --env=prod -P
105
+ ```
83
106
 
84
- ### Command Line Interface
107
+ ## 💻 使用方法
108
+
109
+ ### 命令行接口
85
110
 
86
111
  ```bash
87
112
  fe-release [options]
88
113
  ```
89
114
 
90
- #### Core Options
115
+ #### 核心选项
91
116
 
92
- | Option | Description | Default |
93
- |--------|-------------|---------|
94
- | `-v, --version` | Output version | - |
95
- | `-d, --dry-run` | Preview without making changes | `false` |
96
- | `-V, --verbose` | Show detailed logs | `false` |
97
- | `-p, --publish-path` | Package publish path | - |
98
- | `-P, --githubPR.release-PR` | Create release PR | `false` |
117
+ | 选项 | 描述 | 默认值 |
118
+ | --------------------------- | ------------------------ | ------- |
119
+ | `-v, --version` | 显示版本号 | - |
120
+ | `-d, --dry-run` | 预览模式,不实际执行更改 | `false` |
121
+ | `-V, --verbose` | 显示详细日志 | `false` |
122
+ | `-p, --publish-path` | 包发布路径 | - |
123
+ | `-P, --githubPR.release-PR` | 创建发布 PR | `false` |
124
+ | `--env` | 发布环境 | `prod` |
99
125
 
100
- #### Advanced Options
126
+ #### 高级选项
101
127
 
102
- | Option | Description | Default |
103
- |--------|-------------|---------|
104
- | `-b, --branch-name` | Release branch template | `release-${pkgName}-${tagName}` |
105
- | `-s, --source-branch` | Source branch | `master` |
106
- | `-i, --changelog.increment` | Version increment type | `patch` |
107
- | `--changelog.skip` | Skip changelog generation | `false` |
108
- | `--packages-directories` | Changed package directories | - |
109
- | `-l, --workspaces.change-labels` | Change labels | - |
128
+ | 选项 | 描述 | 默认值 |
129
+ | -------------------------------- | ---------------- | ------------------------------- |
130
+ | `-b, --branch-name` | 发布分支模板 | `release-${pkgName}-${tagName}` |
131
+ | `-s, --source-branch` | 源分支 | `master` |
132
+ | `-i, --changelog.increment` | 版本递增类型 | `patch` |
133
+ | `--changelog.skip` | 跳过更新日志生成 | `false` |
134
+ | `--packages-directories` | 变更包目录 | - |
135
+ | `-l, --workspaces.change-labels` | 变更标签 | - |
110
136
 
111
- ## ⚙️ Configuration
137
+ ## ⚙️ 配置
112
138
 
113
- ### Environment Variables
139
+ ### 环境变量
114
140
 
115
- | Variable | Description | Default |
116
- |----------|-------------|---------|
117
- | `FE_RELEASE` | Enable/disable release | `true` |
118
- | `FE_RELEASE_BRANCH` | Source branch | - |
119
- | `FE_RELEASE_ENV` | Release environment | - |
141
+ | 变量 | 描述 | 默认值 |
142
+ | ------------------- | ------------- | ------ |
143
+ | `FE_RELEASE` | 启用/禁用发布 | `true` |
144
+ | `FE_RELEASE_BRANCH` | 源分支 | - |
145
+ | `FE_RELEASE_ENV` | 发布环境 | - |
146
+ | `FE_RELEASE_TOKEN` | GitHub Token | - |
120
147
 
121
148
  ### fe-config.json
122
149
 
@@ -128,109 +155,121 @@ fe-release [options]
128
155
  "autoMergeType": "squash",
129
156
  "branchName": "release-${pkgName}-${tagName}",
130
157
  "PRTitle": "[${pkgName} Release] Branch:${branch}, Tag:${tagName}, Env:${env}",
158
+ "PRBody": "This PR includes version bump to ${tagName}",
131
159
  "packagesDirectories": ["packages/*"],
132
- "maxWorkspace": 3,
133
- "multiWorkspaceSeparator": "_",
134
- "workspaceVersionSeparator": "@"
160
+ "githubPR": {
161
+ "commitArgs": ["--no-verify"],
162
+ "pushChangedLabels": true,
163
+ "releaseName": "Release ${name} v${version}",
164
+ "commitMessage": "chore(tag): ${name} v${version}"
165
+ },
166
+ "changelog": {
167
+ "types": [
168
+ { "type": "feat", "section": "#### ✨ Features", "hidden": false },
169
+ { "type": "fix", "section": "#### 🐞 Bug Fixes", "hidden": false },
170
+ { "type": "chore", "section": "#### 🔧 Chores", "hidden": true },
171
+ {
172
+ "type": "docs",
173
+ "section": "#### 📝 Documentation",
174
+ "hidden": false
175
+ },
176
+ {
177
+ "type": "refactor",
178
+ "section": "#### ♻️ Refactors",
179
+ "hidden": false
180
+ },
181
+ { "type": "perf", "section": "#### 🚀 Performance", "hidden": false },
182
+ { "type": "test", "section": "#### 🚨 Tests", "hidden": true },
183
+ { "type": "style", "section": "#### 🎨 Styles", "hidden": true },
184
+ { "type": "ci", "section": "#### 🔄 CI", "hidden": true },
185
+ { "type": "build", "section": "#### 🚧 Build", "hidden": false },
186
+ { "type": "revert", "section": "#### ⏪ Reverts", "hidden": true },
187
+ { "type": "release", "section": "#### 🔖 Releases", "hidden": true }
188
+ ]
189
+ }
135
190
  }
136
191
  }
137
192
  ```
138
193
 
139
- #### Configuration Options
140
-
141
- | Option | Description | Default |
142
- |--------|-------------|---------|
143
- | `publishPath` | Package publish directory | - |
144
- | `autoMergeReleasePR` | Auto-merge release PRs | `false` |
145
- | `autoMergeType` | Merge strategy | `squash` |
146
- | `branchName` | Branch name template | `release-${pkgName}-${tagName}` |
147
- | `PRTitle` | PR title template | See above |
148
- | `maxWorkspace` | Max workspaces per release | `3` |
194
+ ## 🔄 工作流程
149
195
 
150
- ## 🔄 Workflows
151
-
152
- ### Manual Release Flow
196
+ ### 手动发布流程
153
197
 
154
198
  ```mermaid
155
199
  graph LR
156
- A[Code Changes] --> B[Run fe-release]
157
- B --> C[Version Update]
158
- C --> D[Changelog Gen]
159
- D --> E[Git Tag]
160
- E --> F[NPM Publish]
161
- F --> G[GitHub Release]
200
+ A[代码变更] --> B[运行 fe-release]
201
+ B --> C[版本更新]
202
+ C --> D[生成更新日志]
203
+ D --> E[创建 Git 标签]
204
+ E --> F[发布到 NPM]
205
+ F --> G[创建 GitHub Release]
162
206
  ```
163
207
 
164
- ### PR-based Release Flow (GitHub)
208
+ ### PR 发布流程(GitHub
165
209
 
166
210
  ```mermaid
167
211
  graph LR
168
- A[PR Created] --> B[Auto Label]
169
- B --> C[Release PR]
170
- C --> D[Version + Changelog]
171
- D --> E[CI Release]
172
- E --> F[Publish + Tag]
212
+ A[创建 PR] --> B[自动添加标签]
213
+ B --> C[创建发布 PR]
214
+ C --> D[更新版本和日志]
215
+ D --> E[CI 发布]
216
+ E --> F[发布和打标签]
173
217
  ```
174
218
 
175
- ## 🔌 Plugin System
219
+ ## 🔍 常见问题
176
220
 
177
- ### Built-in Plugins
221
+ ### 常见问题
178
222
 
179
- - **GithubPR**: Handles GitHub PR automation
180
- - **Workspaces**: Manages workspace releases
181
- - **Changelog**: Generates changelogs
223
+ 1. **发布被跳过**
182
224
 
183
- ### Custom Plugin Example
225
+ ```bash
226
+ Error: Skip Release
227
+ ```
184
228
 
185
- ```typescript
186
- import { Plugin } from '@qlover/fe-release';
229
+ 解决方案:
187
230
 
188
- class CustomPlugin extends Plugin {
189
- async apply(context) {
190
- // Plugin logic
191
- }
192
- }
193
- ```
231
+ - 检查 `FE_RELEASE` 环境变量
232
+ - 确认是否有需要发布的变更
233
+ - 验证包版本是否需要更新
194
234
 
195
- ## 🔍 Troubleshooting
235
+ 2. **PR 创建失败**
196
236
 
197
- ### Common Issues
237
+ - 验证 GitHub token 权限
238
+ - 检查仓库访问权限
239
+ - 确认分支是否存在
240
+ - 检查 PR 标题格式
198
241
 
199
- 1. **Release Skipped**
200
- ```bash
201
- Error: Skip Release
202
- ```
203
- Solution: Check `FE_RELEASE` environment variable
242
+ 3. **发布失败**
243
+ - 确认 npm 登录状态
244
+ - 检查包名是否重复
245
+ - 验证版本号是否合法
246
+ - 检查网络连接
204
247
 
205
- 2. **PR Creation Failed**
206
- - Verify GitHub token permissions
207
- - Check repository access
208
- - Validate branch existence
248
+ ### 调试模式
209
249
 
210
- ### Debug Mode
250
+ 启用详细日志:
211
251
 
212
- Enable verbose logging:
213
252
  ```bash
214
253
  fe-release -V
215
254
  ```
216
255
 
217
- ## 🤝 Contributing
256
+ ## 🤝 贡献指南
218
257
 
219
- 1. Fork the repository
220
- 2. Create your feature branch
221
- 3. Commit your changes
222
- 4. Push to the branch
223
- 5. Create a Pull Request
258
+ 1. Fork 本仓库
259
+ 2. 创建特性分支
260
+ 3. 提交变更
261
+ 4. 推送到分支
262
+ 5. 创建 Pull Request
224
263
 
225
- ## 📄 License
264
+ ## 📄 许可证
226
265
 
227
- This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
266
+ 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件
228
267
 
229
- ## 🙏 Acknowledgments
268
+ ## 🙏 致谢
230
269
 
231
- - [@changesets/cli](https://github.com/changesets/changesets) team
232
- - All contributors to this project
270
+ - [@changesets/cli](https://github.com/changesets/changesets) 团队
271
+ - 所有项目贡献者
233
272
 
234
273
  ---
235
274
 
236
- For more information, please visit our [documentation](https://your-docs-url.com).
275
+ 更多信息,请访问我们的[文档](https://qlover.github.io/fe-release)
package/dist/cli.cjs CHANGED
@@ -1,2 +1,2 @@
1
1
  #! /usr/bin/env node
2
- "use strict";var e=require("commander"),r=require("semver"),o=require("./index.cjs");require("@qlover/scripts-context"),require("@qlover/env-loader"),require("@qlover/fe-corekit"),require("@octokit/rest"),require("node:path"),require("fs"),require("path"),require("node:module"),require("node:url"),require("p-limit");const t=["patch","minor","major"],n=e=>e.split(",").filter((e=>null!=e&&""!=e));(async function(){const{shared:a,...i}=function(){const a=new e.Command;return a.version("2.1.5","-v, --version","Show version").description("A tool for releasing front-end projects, supporting multiple release modes and configurations, simplifying the release process and improving efficiency.").option("-d, --dry-run","Do not touch or write anything, but show the commands").option("-V, --verbose","Show more information").option("-p, --publish-path <publishPath>","The path of the package to release, map to feConfig.release.publishPath").option("-b, --branch-name <branchName>","The branch name of the release, map to feConfig.release.branchName, default(release-${pkgName}-${tagName})").option("-s, --source-branch <sourceBranch>","The source branch of the release").option("-i, --changelog.increment <increment>","The increment of the release",(e=>{if(!t.includes(e)&&!r.valid(e))throw new Error(`Invalid increment(-i) Must be one of [${t.join(", ")}] or valid version string(semver)`);return e}),"patch").option("--changelog.skip","Whether to skip the changelog").option("--changelog.ignore-non-updated-packages","Whether to ignore non updated packages").option("--changelog.skip-changeset","Whether to skip the changeset").option("--githubPR.skip","Whether to skip the githubPR").option("--packages-directories <packagesDirectories>","The packages that have been changed, multiple values use `,` to split, map to feConfig.release.packagesDirectories",n).option("--githubPR.dry-run-create-PR","Whether to dry run the creation of the pull request").option("--githubPR.push-change-labels","Whether to push the changed labels to the release PR").option("-P, --githubPR.release-PR","Create a release PR").option("-l, --workspaces.change-labels <changeLabels>","The change labels of the release, multiple values use `,` to split",n),a.parse(),o.reduceOptions(a.opts(),"shared")}(),{dryRun:s,verbose:h,...c}=a,p=Object.assign(i,{});await new o.ReleaseTask({dryRun:s,verbose:h,options:p,shared:c}).exec()})().catch((e=>{console.error(e.message),process.exit(1)}));
2
+ "use strict";var e=require("commander"),r=require("semver"),o=require("./index.cjs");require("@qlover/scripts-context"),require("@qlover/env-loader"),require("@qlover/fe-corekit"),require("@octokit/rest"),require("gitlog"),require("node:path"),require("find-workspaces"),require("fs"),require("path"),require("node:module"),require("node:url"),require("p-limit");const t=["patch","minor","major"],n=e=>e.split(",").filter((e=>null!=e&&""!=e));(async function(){const{shared:i,...a}=function(){const i=new e.Command;return i.version("2.2.0","-v, --version","Show version").description("A tool for releasing front-end projects, supporting multiple release modes and configurations, simplifying the release process and improving efficiency.").option("-d, --dry-run","Do not touch or write anything, but show the commands").option("-V, --verbose","Show more information").option("-p, --publish-path <publishPath>","The path of the package to release, map to feConfig.release.publishPath").option("-b, --branch-name <branchName>","The branch name of the release, map to feConfig.release.branchName, default(release-${pkgName}-${tagName})").option("-s, --source-branch <sourceBranch>","The source branch of the release").option("-i, --changelog.increment <increment>","The increment of the release",(e=>{if(!t.includes(e)&&!r.valid(e))throw new Error(`Invalid increment(-i) Must be one of [${t.join(", ")}] or valid version string(semver)`);return e}),"patch").option("--changelog.skip","Whether to skip the changelog").option("--changelog.ignore-non-updated-packages","Whether to ignore non updated packages").option("--changelog.skip-changeset","Whether to skip the changeset").option("--githubPR.skip","Whether to skip the githubPR").option("--packages-directories <packagesDirectories>","The packages that have been changed, multiple values use `,` to split, map to feConfig.release.packagesDirectories",n).option("--githubPR.dry-run-create-PR","Whether to dry run the creation of the pull request").option("--githubPR.push-change-labels","Whether to push the changed labels to the release PR").option("-P, --githubPR.release-PR","Create a release PR").option("-l, --workspaces.change-labels <changeLabels>","The change labels of the release, multiple values use `,` to split",n),i.parse(),o.reduceOptions(i.opts(),"shared")}(),{dryRun:s,verbose:h,...c}=i,p=Object.assign(a,{});await new o.ReleaseTask({dryRun:s,verbose:h,options:p,shared:c}).exec()})().catch((e=>{console.error(e.message),process.exit(1)}));
package/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #! /usr/bin/env node
2
- import{Command as e}from"commander";import o from"semver";import{ReleaseTask as t,reduceOptions as r}from"./index.js";import"@qlover/scripts-context";import"@qlover/env-loader";import"@qlover/fe-corekit";import"@octokit/rest";import"node:path";import"fs";import"path";import"node:module";import"node:url";import"p-limit";const n=["patch","minor","major"],i=e=>e.split(",").filter((e=>null!=e&&""!=e));(async function(){const{shared:a,...s}=function(){const t=new e;return t.version("2.1.5","-v, --version","Show version").description("A tool for releasing front-end projects, supporting multiple release modes and configurations, simplifying the release process and improving efficiency.").option("-d, --dry-run","Do not touch or write anything, but show the commands").option("-V, --verbose","Show more information").option("-p, --publish-path <publishPath>","The path of the package to release, map to feConfig.release.publishPath").option("-b, --branch-name <branchName>","The branch name of the release, map to feConfig.release.branchName, default(release-${pkgName}-${tagName})").option("-s, --source-branch <sourceBranch>","The source branch of the release").option("-i, --changelog.increment <increment>","The increment of the release",(e=>{if(!n.includes(e)&&!o.valid(e))throw new Error(`Invalid increment(-i) Must be one of [${n.join(", ")}] or valid version string(semver)`);return e}),"patch").option("--changelog.skip","Whether to skip the changelog").option("--changelog.ignore-non-updated-packages","Whether to ignore non updated packages").option("--changelog.skip-changeset","Whether to skip the changeset").option("--githubPR.skip","Whether to skip the githubPR").option("--packages-directories <packagesDirectories>","The packages that have been changed, multiple values use `,` to split, map to feConfig.release.packagesDirectories",i).option("--githubPR.dry-run-create-PR","Whether to dry run the creation of the pull request").option("--githubPR.push-change-labels","Whether to push the changed labels to the release PR").option("-P, --githubPR.release-PR","Create a release PR").option("-l, --workspaces.change-labels <changeLabels>","The change labels of the release, multiple values use `,` to split",i),t.parse(),r(t.opts(),"shared")}(),{dryRun:h,verbose:p,...c}=a,l=Object.assign(s,{});await new t({dryRun:h,verbose:p,options:l,shared:c}).exec()})().catch((e=>{console.error(e.message),process.exit(1)}));
2
+ import{Command as e}from"commander";import o from"semver";import{ReleaseTask as t,reduceOptions as r}from"./index.js";import"@qlover/scripts-context";import"@qlover/env-loader";import"@qlover/fe-corekit";import"@octokit/rest";import"gitlog";import"node:path";import"find-workspaces";import"fs";import"path";import"node:module";import"node:url";import"p-limit";const n=["patch","minor","major"],i=e=>e.split(",").filter((e=>null!=e&&""!=e));(async function(){const{shared:a,...s}=function(){const t=new e;return t.version("2.2.0","-v, --version","Show version").description("A tool for releasing front-end projects, supporting multiple release modes and configurations, simplifying the release process and improving efficiency.").option("-d, --dry-run","Do not touch or write anything, but show the commands").option("-V, --verbose","Show more information").option("-p, --publish-path <publishPath>","The path of the package to release, map to feConfig.release.publishPath").option("-b, --branch-name <branchName>","The branch name of the release, map to feConfig.release.branchName, default(release-${pkgName}-${tagName})").option("-s, --source-branch <sourceBranch>","The source branch of the release").option("-i, --changelog.increment <increment>","The increment of the release",(e=>{if(!n.includes(e)&&!o.valid(e))throw new Error(`Invalid increment(-i) Must be one of [${n.join(", ")}] or valid version string(semver)`);return e}),"patch").option("--changelog.skip","Whether to skip the changelog").option("--changelog.ignore-non-updated-packages","Whether to ignore non updated packages").option("--changelog.skip-changeset","Whether to skip the changeset").option("--githubPR.skip","Whether to skip the githubPR").option("--packages-directories <packagesDirectories>","The packages that have been changed, multiple values use `,` to split, map to feConfig.release.packagesDirectories",i).option("--githubPR.dry-run-create-PR","Whether to dry run the creation of the pull request").option("--githubPR.push-change-labels","Whether to push the changed labels to the release PR").option("-P, --githubPR.release-PR","Create a release PR").option("-l, --workspaces.change-labels <changeLabels>","The change labels of the release, multiple values use `,` to split",i),t.parse(),r(t.opts(),"shared")}(),{dryRun:p,verbose:h,...c}=a,l=Object.assign(s,{});await new t({dryRun:p,verbose:h,options:l,shared:c}).exec()})().catch((e=>{console.error(e.message),process.exit(1)}));
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var t,e,r,n,o,i,s,a,c,u,h,l,g,f,p,m,d,y,b,v,w,R,x,k,_,P,C,$,N,j,E,T,B,O,S,A,L,U,F,W,M,G,H,I,D,q,z,V,J,Y,K,Q,X,Z,tt,et,rt,nt,ot,it,st,at,ct,ut,ht,lt,gt,ft,pt,mt,dt,yt,bt,vt,wt,Rt,xt,kt,_t,Pt,Ct,$t,Nt,jt,Et,Tt,Bt,Ot,St,At,Lt,Ut,Ft,Wt,Mt,Gt,Ht,It,Dt=require("@qlover/scripts-context"),qt=require("@qlover/env-loader"),zt=require("@qlover/fe-corekit"),Vt=require("@octokit/rest"),Jt=require("node:path"),Yt=require("fs"),Kt=require("path"),Qt=require("node:module"),Xt=require("node:url"),Zt=require("p-limit"),te="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function ee(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function re(){if(e)return t;return e=1,t=function(){this.__data__=[],this.size=0}}function ne(){if(n)return r;return n=1,r=function(t,e){return t===e||t!=t&&e!=e}}function oe(){if(i)return o;i=1;var t=ne();return o=function(e,r){for(var n=e.length;n--;)if(t(e[n][0],r))return n;return-1}}function ie(){if(a)return s;a=1;var t=oe(),e=Array.prototype.splice;return s=function(r){var n=this.__data__,o=t(n,r);return!(o<0)&&(o==n.length-1?n.pop():e.call(n,o,1),--this.size,!0)}}function se(){if(u)return c;u=1;var t=oe();return c=function(e){var r=this.__data__,n=t(r,e);return n<0?void 0:r[n][1]}}function ae(){if(l)return h;l=1;var t=oe();return h=function(e){return t(this.__data__,e)>-1}}function ce(){if(f)return g;f=1;var t=oe();return g=function(e,r){var n=this.__data__,o=t(n,e);return o<0?(++this.size,n.push([e,r])):n[o][1]=r,this}}function ue(){if(m)return p;m=1;var t=re(),e=ie(),r=se(),n=ae(),o=ce();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,p=i}function he(){if(y)return d;y=1;var t=ue();return d=function(){this.__data__=new t,this.size=0}}function le(){if(v)return b;return v=1,b=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}}function ge(){if(R)return w;return R=1,w=function(t){return this.__data__.get(t)}}function fe(){if(k)return x;return k=1,x=function(t){return this.__data__.has(t)}}function pe(){if(P)return _;P=1;var t="object"==typeof te&&te&&te.Object===Object&&te;return _=t}function me(){if($)return C;$=1;var t=pe(),e="object"==typeof self&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return C=r}function de(){if(j)return N;j=1;var t=me().Symbol;return N=t}function ye(){if(T)return E;T=1;var t=de(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,o=t?t.toStringTag:void 0;return E=function(t){var e=r.call(t,o),i=t[o];try{t[o]=void 0;var s=!0}catch(t){}var a=n.call(t);return s&&(e?t[o]=i:delete t[o]),a}}function be(){if(O)return B;O=1;var t=Object.prototype.toString;return B=function(e){return t.call(e)}}function ve(){if(A)return S;A=1;var t=de(),e=ye(),r=be(),n=t?t.toStringTag:void 0;return S=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":n&&n in Object(t)?e(t):r(t)}}function we(){if(U)return L;return U=1,L=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}}function Re(){if(W)return F;W=1;var t=ve(),e=we();return F=function(r){if(!e(r))return!1;var n=t(r);return"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n}}function xe(){if(G)return M;G=1;var t=me()["__core-js_shared__"];return M=t}function ke(){if(I)return H;I=1;var t,e=xe(),r=(t=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||""))?"Symbol(src)_1."+t:"";return H=function(t){return!!r&&r in t}}function _e(){if(q)return D;q=1;var t=Function.prototype.toString;return D=function(e){if(null!=e){try{return t.call(e)}catch(t){}try{return e+""}catch(t){}}return""}}function Pe(){if(V)return z;V=1;var t=Re(),e=ke(),r=we(),n=_e(),o=/^\[object .+?Constructor\]$/,i=Function.prototype,s=Object.prototype,a=i.toString,c=s.hasOwnProperty,u=RegExp("^"+a.call(c).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return z=function(i){return!(!r(i)||e(i))&&(t(i)?u:o).test(n(i))}}function Ce(){if(Y)return J;return Y=1,J=function(t,e){return null==t?void 0:t[e]}}function $e(){if(Q)return K;Q=1;var t=Pe(),e=Ce();return K=function(r,n){var o=e(r,n);return t(o)?o:void 0}}function Ne(){if(Z)return X;Z=1;var t=$e()(me(),"Map");return X=t}function je(){if(et)return tt;et=1;var t=$e()(Object,"create");return tt=t}function Ee(){if(nt)return rt;nt=1;var t=je();return rt=function(){this.__data__=t?t(null):{},this.size=0}}function Te(){if(it)return ot;return it=1,ot=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}}function Be(){if(at)return st;at=1;var t=je(),e=Object.prototype.hasOwnProperty;return st=function(r){var n=this.__data__;if(t){var o=n[r];return"__lodash_hash_undefined__"===o?void 0:o}return e.call(n,r)?n[r]:void 0}}function Oe(){if(ut)return ct;ut=1;var t=je(),e=Object.prototype.hasOwnProperty;return ct=function(r){var n=this.__data__;return t?void 0!==n[r]:e.call(n,r)}}function Se(){if(lt)return ht;lt=1;var t=je();return ht=function(e,r){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=t&&void 0===r?"__lodash_hash_undefined__":r,this}}function Ae(){if(ft)return gt;ft=1;var t=Ee(),e=Te(),r=Be(),n=Oe(),o=Se();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,gt=i}function Le(){if(mt)return pt;mt=1;var t=Ae(),e=ue(),r=Ne();return pt=function(){this.size=0,this.__data__={hash:new t,map:new(r||e),string:new t}}}function Ue(){if(yt)return dt;return yt=1,dt=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}}function Fe(){if(vt)return bt;vt=1;var t=Ue();return bt=function(e,r){var n=e.__data__;return t(r)?n["string"==typeof r?"string":"hash"]:n.map}}function We(){if(Rt)return wt;Rt=1;var t=Fe();return wt=function(e){var r=t(this,e).delete(e);return this.size-=r?1:0,r}}function Me(){if(kt)return xt;kt=1;var t=Fe();return xt=function(e){return t(this,e).get(e)}}function Ge(){if(Pt)return _t;Pt=1;var t=Fe();return _t=function(e){return t(this,e).has(e)}}function He(){if($t)return Ct;$t=1;var t=Fe();return Ct=function(e,r){var n=t(this,e),o=n.size;return n.set(e,r),this.size+=n.size==o?0:1,this}}function Ie(){if(jt)return Nt;jt=1;var t=Le(),e=We(),r=Me(),n=Ge(),o=He();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,Nt=i}function De(){if(Tt)return Et;Tt=1;var t=ue(),e=Ne(),r=Ie();return Et=function(n,o){var i=this.__data__;if(i instanceof t){var s=i.__data__;if(!e||s.length<199)return s.push([n,o]),this.size=++i.size,this;i=this.__data__=new r(s)}return i.set(n,o),this.size=i.size,this}}function qe(){if(Ot)return Bt;Ot=1;var t=ue(),e=he(),r=le(),n=ge(),o=fe(),i=De();function s(e){var r=this.__data__=new t(e);this.size=r.size}return s.prototype.clear=e,s.prototype.delete=r,s.prototype.get=n,s.prototype.has=o,s.prototype.set=i,Bt=s}function ze(){if(At)return St;At=1;var t=$e(),e=function(){try{var e=t(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();return St=e}function Ve(){if(Ut)return Lt;Ut=1;var t=ze();return Lt=function(e,r,n){"__proto__"==r&&t?t(e,r,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[r]=n}}function Je(){if(Wt)return Ft;Wt=1;var t=Ve(),e=ne();return Ft=function(r,n,o){(void 0!==o&&!e(r[n],o)||void 0===o&&!(n in r))&&t(r,n,o)}}function Ye(){if(Gt)return Mt;return Gt=1,Mt=function(t){return function(e,r,n){for(var o=-1,i=Object(e),s=n(e),a=s.length;a--;){var c=s[t?a:++o];if(!1===r(i[c],c,i))break}return e}}}function Ke(){if(It)return Ht;It=1;var t=Ye()();return Ht=t}var Qe,Xe,Ze,tr,er,rr,nr,or,ir,sr,ar,cr,ur,hr,lr,gr,fr,pr,mr,dr,yr,br,vr,wr,Rr,xr,kr,_r,Pr,Cr,$r,Nr,jr,Er={exports:{}};function Tr(){return Qe||(Qe=1,function(t,e){var r=me(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n?r.Buffer:void 0,s=i?i.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var r=t.length,n=s?s(r):new t.constructor(r);return t.copy(n),n}}(Er,Er.exports)),Er.exports}function Br(){if(Ze)return Xe;Ze=1;var t=me().Uint8Array;return Xe=t}function Or(){if(er)return tr;er=1;var t=Br();return tr=function(e){var r=new e.constructor(e.byteLength);return new t(r).set(new t(e)),r}}function Sr(){if(nr)return rr;nr=1;var t=Or();return rr=function(e,r){var n=r?t(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}}function Ar(){if(ir)return or;return ir=1,or=function(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r<n;)e[r]=t[r];return e}}function Lr(){if(ar)return sr;ar=1;var t=we(),e=Object.create,r=function(){function r(){}return function(n){if(!t(n))return{};if(e)return e(n);r.prototype=n;var o=new r;return r.prototype=void 0,o}}();return sr=r}function Ur(){if(ur)return cr;return ur=1,cr=function(t,e){return function(r){return t(e(r))}}}function Fr(){if(lr)return hr;lr=1;var t=Ur()(Object.getPrototypeOf,Object);return hr=t}function Wr(){if(fr)return gr;fr=1;var t=Object.prototype;return gr=function(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||t)}}function Mr(){if(mr)return pr;mr=1;var t=Lr(),e=Fr(),r=Wr();return pr=function(n){return"function"!=typeof n.constructor||r(n)?{}:t(e(n))}}function Gr(){if(yr)return dr;return yr=1,dr=function(t){return null!=t&&"object"==typeof t}}function Hr(){if(vr)return br;vr=1;var t=ve(),e=Gr();return br=function(r){return e(r)&&"[object Arguments]"==t(r)}}function Ir(){if(Rr)return wr;Rr=1;var t=Hr(),e=Gr(),r=Object.prototype,n=r.hasOwnProperty,o=r.propertyIsEnumerable,i=t(function(){return arguments}())?t:function(t){return e(t)&&n.call(t,"callee")&&!o.call(t,"callee")};return wr=i}function Dr(){if(kr)return xr;kr=1;var t=Array.isArray;return xr=t}function qr(){if(Pr)return _r;Pr=1;return _r=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}}function zr(){if($r)return Cr;$r=1;var t=Re(),e=qr();return Cr=function(r){return null!=r&&e(r.length)&&!t(r)}}function Vr(){if(jr)return Nr;jr=1;var t=zr(),e=Gr();return Nr=function(r){return e(r)&&t(r)}}var Jr,Yr,Kr,Qr,Xr,Zr,tn,en,rn,nn={exports:{}};function on(){if(Yr)return Jr;return Yr=1,Jr=function(){return!1}}function sn(){return Kr||(Kr=1,function(t,e){var r=me(),n=on(),o=e&&!e.nodeType&&e,i=o&&t&&!t.nodeType&&t,s=i&&i.exports===o?r.Buffer:void 0,a=(s?s.isBuffer:void 0)||n;t.exports=a}(nn,nn.exports)),nn.exports}function an(){if(Xr)return Qr;Xr=1;var t=ve(),e=Fr(),r=Gr(),n=Function.prototype,o=Object.prototype,i=n.toString,s=o.hasOwnProperty,a=i.call(Object);return Qr=function(n){if(!r(n)||"[object Object]"!=t(n))return!1;var o=e(n);if(null===o)return!0;var c=s.call(o,"constructor")&&o.constructor;return"function"==typeof c&&c instanceof c&&i.call(c)==a}}function cn(){if(tn)return Zr;tn=1;var t=ve(),e=qr(),r=Gr(),n={};return n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1,Zr=function(o){return r(o)&&e(o.length)&&!!n[t(o)]}}function un(){if(rn)return en;return rn=1,en=function(t){return function(e){return t(e)}}}var hn,ln,gn,fn,pn,mn,dn,yn,bn,vn,wn,Rn,xn,kn,_n,Pn,Cn,$n,Nn,jn,En,Tn,Bn,On,Sn,An,Ln,Un,Fn,Wn,Mn,Gn,Hn,In,Dn,qn,zn,Vn,Jn,Yn,Kn,Qn,Xn,Zn,to,eo,ro,no,oo,io={exports:{}};function so(){return hn||(hn=1,function(t,e){var r=pe(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n&&r.process,s=function(){try{var t=o&&o.require&&o.require("util").types;return t||i&&i.binding&&i.binding("util")}catch(t){}}();t.exports=s}(io,io.exports)),io.exports}function ao(){if(gn)return ln;gn=1;var t=cn(),e=un(),r=so(),n=r&&r.isTypedArray,o=n?e(n):t;return ln=o}function co(){if(pn)return fn;return pn=1,fn=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}}function uo(){if(dn)return mn;dn=1;var t=Ve(),e=ne(),r=Object.prototype.hasOwnProperty;return mn=function(n,o,i){var s=n[o];r.call(n,o)&&e(s,i)&&(void 0!==i||o in n)||t(n,o,i)}}function ho(){if(bn)return yn;bn=1;var t=uo(),e=Ve();return yn=function(r,n,o,i){var s=!o;o||(o={});for(var a=-1,c=n.length;++a<c;){var u=n[a],h=i?i(o[u],r[u],u,o,r):void 0;void 0===h&&(h=r[u]),s?e(o,u,h):t(o,u,h)}return o}}function lo(){if(wn)return vn;return wn=1,vn=function(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n}}function go(){if(xn)return Rn;xn=1;var t=/^(?:0|[1-9]\d*)$/;return Rn=function(e,r){var n=typeof e;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e<r}}function fo(){if(_n)return kn;_n=1;var t=lo(),e=Ir(),r=Dr(),n=sn(),o=go(),i=ao(),s=Object.prototype.hasOwnProperty;return kn=function(a,c){var u=r(a),h=!u&&e(a),l=!u&&!h&&n(a),g=!u&&!h&&!l&&i(a),f=u||h||l||g,p=f?t(a.length,String):[],m=p.length;for(var d in a)!c&&!s.call(a,d)||f&&("length"==d||l&&("offset"==d||"parent"==d)||g&&("buffer"==d||"byteLength"==d||"byteOffset"==d)||o(d,m))||p.push(d);return p}}function po(){if(Cn)return Pn;return Cn=1,Pn=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}}function mo(){if(Nn)return $n;Nn=1;var t=we(),e=Wr(),r=po(),n=Object.prototype.hasOwnProperty;return $n=function(o){if(!t(o))return r(o);var i=e(o),s=[];for(var a in o)("constructor"!=a||!i&&n.call(o,a))&&s.push(a);return s}}function yo(){if(En)return jn;En=1;var t=fo(),e=mo(),r=zr();return jn=function(n){return r(n)?t(n,!0):e(n)}}function bo(){if(Bn)return Tn;Bn=1;var t=ho(),e=yo();return Tn=function(r){return t(r,e(r))}}function vo(){if(Sn)return On;Sn=1;var t=Je(),e=Tr(),r=Sr(),n=Ar(),o=Mr(),i=Ir(),s=Dr(),a=Vr(),c=sn(),u=Re(),h=we(),l=an(),g=ao(),f=co(),p=bo();return On=function(m,d,y,b,v,w,R){var x=f(m,y),k=f(d,y),_=R.get(k);if(_)t(m,y,_);else{var P=w?w(x,k,y+"",m,d,R):void 0,C=void 0===P;if(C){var $=s(k),N=!$&&c(k),j=!$&&!N&&g(k);P=k,$||N||j?s(x)?P=x:a(x)?P=n(x):N?(C=!1,P=e(k,!0)):j?(C=!1,P=r(k,!0)):P=[]:l(k)||i(k)?(P=x,i(x)?P=p(x):h(x)&&!u(x)||(P=o(k))):C=!1}C&&(R.set(k,P),v(P,k,b,w,R),R.delete(k)),t(m,y,P)}}}function wo(){if(Ln)return An;Ln=1;var t=qe(),e=Je(),r=Ke(),n=vo(),o=we(),i=yo(),s=co();return An=function a(c,u,h,l,g){c!==u&&r(u,(function(r,i){if(g||(g=new t),o(r))n(c,u,i,h,a,l,g);else{var f=l?l(s(c,i),r,i+"",c,u,g):void 0;void 0===f&&(f=r),e(c,i,f)}}),i)},An}function Ro(){if(Fn)return Un;return Fn=1,Un=function(t){return t}}function xo(){if(Mn)return Wn;return Mn=1,Wn=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}}function ko(){if(Hn)return Gn;Hn=1;var t=xo(),e=Math.max;return Gn=function(r,n,o){return n=e(void 0===n?r.length-1:n,0),function(){for(var i=arguments,s=-1,a=e(i.length-n,0),c=Array(a);++s<a;)c[s]=i[n+s];s=-1;for(var u=Array(n+1);++s<n;)u[s]=i[s];return u[n]=o(c),t(r,this,u)}},Gn}function _o(){if(Dn)return In;return Dn=1,In=function(t){return function(){return t}}}function Po(){if(zn)return qn;zn=1;var t=_o(),e=ze();return qn=e?function(r,n){return e(r,"toString",{configurable:!0,enumerable:!1,value:t(n),writable:!0})}:Ro()}function Co(){if(Jn)return Vn;Jn=1;var t=Date.now;return Vn=function(e){var r=0,n=0;return function(){var o=t(),i=16-(o-n);if(n=o,i>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}},Vn}function $o(){if(Kn)return Yn;Kn=1;var t=Po(),e=Co()(t);return Yn=e}function No(){if(Xn)return Qn;Xn=1;var t=Ro(),e=ko(),r=$o();return Qn=function(n,o){return r(e(n,o,t),n+"")}}function jo(){if(to)return Zn;to=1;var t=ne(),e=zr(),r=go(),n=we();return Zn=function(o,i,s){if(!n(s))return!1;var a=typeof i;return!!("number"==a?e(s)&&r(i,s.length):"string"==a&&i in s)&&t(s[i],o)}}function Eo(){if(ro)return eo;ro=1;var t=No(),e=jo();return eo=function(r){return t((function(t,n){var o=-1,i=n.length,s=i>1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(s=r.length>3&&"function"==typeof s?(i--,s):void 0,a&&e(n[0],n[1],a)&&(s=i<3?void 0:s,i=1),t=Object(t);++o<i;){var c=n[o];c&&r(t,c,o,s)}return t}))}}function To(){if(oo)return no;oo=1;var t=wo(),e=Eo()((function(e,r,n){t(e,r,n)}));return no=e}var Bo,Oo,So,Ao,Lo,Uo,Fo,Wo,Mo,Go,Ho,Io,Do,qo,zo,Vo,Jo,Yo,Ko,Qo,Xo,Zo,ti,ei,ri=ee(To());function ni(){if(Oo)return Bo;Oo=1;var t=ve(),e=Gr();return Bo=function(r){return"symbol"==typeof r||e(r)&&"[object Symbol]"==t(r)}}function oi(){if(Ao)return So;Ao=1;var t=Dr(),e=ni(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;return So=function(o,i){if(t(o))return!1;var s=typeof o;return!("number"!=s&&"symbol"!=s&&"boolean"!=s&&null!=o&&!e(o))||(n.test(o)||!r.test(o)||null!=i&&o in Object(i))}}function ii(){if(Uo)return Lo;Uo=1;var t=Ie();function e(r,n){if("function"!=typeof r||null!=n&&"function"!=typeof n)throw new TypeError("Expected a function");var o=function(){var t=arguments,e=n?n.apply(this,t):t[0],i=o.cache;if(i.has(e))return i.get(e);var s=r.apply(this,t);return o.cache=i.set(e,s)||i,s};return o.cache=new(e.Cache||t),o}return e.Cache=t,Lo=e}function si(){if(Wo)return Fo;Wo=1;var t=ii();return Fo=function(e){var r=t(e,(function(t){return 500===n.size&&n.clear(),t})),n=r.cache;return r}}function ai(){if(Go)return Mo;Go=1;var t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,e=/\\(\\)?/g,r=si()((function(r){var n=[];return 46===r.charCodeAt(0)&&n.push(""),r.replace(t,(function(t,r,o,i){n.push(o?i.replace(e,"$1"):r||t)})),n}));return Mo=r}function ci(){if(Io)return Ho;return Io=1,Ho=function(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r<n;)o[r]=e(t[r],r,t);return o}}function ui(){if(qo)return Do;qo=1;var t=de(),e=ci(),r=Dr(),n=ni(),o=t?t.prototype:void 0,i=o?o.toString:void 0;return Do=function t(o){if("string"==typeof o)return o;if(r(o))return e(o,t)+"";if(n(o))return i?i.call(o):"";var s=o+"";return"0"==s&&1/o==-1/0?"-0":s},Do}function hi(){if(Vo)return zo;Vo=1;var t=ui();return zo=function(e){return null==e?"":t(e)}}function li(){if(Yo)return Jo;Yo=1;var t=Dr(),e=oi(),r=ai(),n=hi();return Jo=function(o,i){return t(o)?o:e(o,i)?[o]:r(n(o))}}function gi(){if(Qo)return Ko;Qo=1;var t=ni();return Ko=function(e){if("string"==typeof e||t(e))return e;var r=e+"";return"0"==r&&1/e==-1/0?"-0":r}}function fi(){if(Zo)return Xo;Zo=1;var t=li(),e=gi();return Xo=function(r,n){for(var o=0,i=(n=t(n,r)).length;null!=r&&o<i;)r=r[e(n[o++])];return o&&o==i?r:void 0},Xo}function pi(){if(ei)return ti;ei=1;var t=fi();return ti=function(e,r,n){var o=null==e?void 0:t(e,r);return void 0===o?n:o},ti}var mi=ee(pi());const di="package.json",yi=[".env.local",".env"];class bi extends Dt.FeScriptContext{_env;shared;constructor(t){super(t),this._env=qt.Env.searchEnv({logger:this.logger,preloadList:this.feConfig.envOrder||yi}),this.shared=Object.assign({},this.feConfig.release,this.getDefaultShreadOptions(t.shared))}getDefaultShreadOptions(t){return{rootPath:process.cwd(),sourceBranch:this._env.get("FE_RELEASE_BRANCH")||this._env.get("FE_RELEASE_SOURCE_BRANCH")||"master",releaseEnv:this._env.get("FE_RELEASE_ENV")||this._env.get("NODE_ENV")||"development",...t}}get rootPath(){return this.shared.rootPath}get sourceBranch(){return this.shared.sourceBranch}get releaseEnv(){return this.shared.releaseEnv}get env(){return this._env}get workspaces(){return this.getConfig("workspaces.workspaces")}get workspace(){return this.getConfig("workspaces.workspace")}setWorkspaces(t){this.options.workspaces={...this.options.workspaces,workspaces:t}}setConfig(t){this.options=ri(this.options,t)}getConfig(t,e){return mi(this.options,t,e)}setShared(t){this.shared=ri(this.shared,t)}getPkg(t,e){const r=this.workspace?.packageJson;if(!r)throw new Error("package.json is not found");return t?mi(r,t,e):r}getTemplateContext(){return{...this.shared,...this.workspace,publishPath:this.workspace?.path||"",env:this.releaseEnv,branch:this.sourceBranch}}async runChangesetsCli(t,e){let r="pnpm";try{await this.shell.exec("pnpm -v",{dryRun:!1})}catch{r="npx"}return await this.shell.exec([r,"changeset",t,...e??[]])}}function vi(t,...e){return[t,...e]}const wi={maxWorkspace:3,multiWorkspaceSeparator:"_",workspaceVersionSeparator:"@",batchBranchName:"batch-${releaseName}-${length}-packages-${timestamp}",batchTagName:"batch-${length}-packages-${timestamp}"};class Ri{shell;logger;config;constructor(t,e,r={}){this.shell=t,this.logger=e,this.config={...wi,...r}}getReleaseBranchName(t,e,r){const n=r.branchName||"release-${tagName}";if("string"!=typeof n)throw new Error("Branch name template is not a string");return this.logger.debug("Release Branch template is:",n),this.shell.format(n,{pkgName:t,releaseName:t,tagName:e,...r})}getBatchReleaseBranchName(t,e,r,n){const o=this.config.batchBranchName;if("string"!=typeof o)throw new Error("Branch name template is not a string");return this.logger.debug("Release Batch Branch template is:",o),this.shell.format(o,{pkgName:t,releaseName:t,tagName:e,...r,length:n,timestamp:Date.now()})}getReleaseName(t){if(1===t.length)return t[0].name;const{maxWorkspace:e,multiWorkspaceSeparator:r,workspaceVersionSeparator:n}=this.config;return t.slice(0,e).map((({name:t,version:e})=>`${t}${n}${e}`)).join(r)}getReleaseTagName(t){if(1===t.length)return t[0].version;const{batchTagName:e}=this.config;return this.shell.format(e,{length:t.length,timestamp:Date.now()})}getReleaseBranchParams(t,e){const r=this.getReleaseTagName(t),n=this.getReleaseName(t);return{tagName:r,releaseBranch:t.length>1?this.getBatchReleaseBranchName(n,r,e,t.length):this.getReleaseBranchName(n,r,e)}}getPRTitle(t,e){const r=this.config.PRTitle||"Release ${env} ${pkgName} ${tagName}";return this.shell.format(r,{...e,tagName:t.tagName,pkgName:t.releaseBranch})}getPRBody(t,e,r){const n=this.config.PRBody,o=t.length>1?t.map((t=>this.shell.format("\n## ${name} ${version}\n${changelog}\n",t))).join("\n"):t[0].changelog,{workspaceVersionSeparator:i}=this.config,s=1===t.length?e.tagName:t.map((t=>`${t.name}${i}${t.version}`)).join(" ");return this.shell.format(n,{...r,tagName:s,changelog:o})}}class xi{context;_octokit=null;constructor(t){this.context=t}getGitHubUserInfo(){const{authorName:t,repoName:e}=this.context.shared;if(!t||!e)throw new Error("Author name or repo name is not set");return{owner:t,repo:e}}getToken(){const{tokenRef:t="GITHUB_TOKEN"}=this.context.getConfig("githubPR"),e=this.context.env.get(t);if(!e)throw new Error(`Token is not set. Please set ${t} environment variable.`);return e}get octokit(){if(this._octokit)return this._octokit;const{timeout:t}=this.context.getConfig("githubPR"),e={auth:this.getToken(),request:{timeout:t}};return this._octokit=new Vt.Octokit(e),this._octokit}get logger(){return this.context.logger}get shell(){return this.context.shell}get autoMergeType(){return this.context.shared.autoMergeType||"squash"}get dryRunPRNumber(){return this.context.getConfig("githubPR.dryRunPRNumber","999999")}get autoMergeReleasePR(){return this.context.shared.autoMergeReleasePR||false}async mergePR(t,e){if(!t)return void this.logger.error("Failed to create Pull Request.",t);const r=this.autoMergeType;if(this.context.dryRun){const{repoName:n,authorName:o}=this.context.shared;this.logger.info(`[DRY RUN] Would merge PR #${t} with method '${r}' in repo ${o}/${n}, branch ${e}`)}else await this.octokit.rest.pulls.merge({...this.getGitHubUserInfo(),pull_number:Number(t),merge_method:r})}async checkedPR(t,e){try{await this.octokit.rest.pulls.get({...this.getGitHubUserInfo(),pull_number:Number(t)}),await this.octokit.rest.git.deleteRef({...this.getGitHubUserInfo(),ref:`heads/${e}`}),this.logger.info(`Branch ${e} has been deleted`)}catch(r){if(404===r.status)return void this.logger.warn(`PR #${t} or branch ${e} not found`);throw this.logger.error("Failed to check PR or delete branch",r),r}}async createReleasePRLabel(){const t=this.context.shared.label;if(!(t&&t.name&&t.description&&t.color))throw new Error("Label is not valid, skipping creation");if(this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR label with:",t),t;try{const e=await this.octokit.rest.issues.createLabel({...this.getGitHubUserInfo(),name:t.name,description:t.description,color:t.color.replace("#","")});return this.logger.debug("Create PR label Success",e),t}catch(e){if(422===e.status)return this.logger.warn(`Label ${t.name} already exists, skipping!`),t;throw this.logger.error("Create PR label Failed",e),e}}async createReleasePR(t){if(this.context.getConfig("githubPR.dryRunCreatePR")||this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR with:",{...t,labels:t.labels}),this.dryRunPRNumber;try{const e=await this.octokit.rest.pulls.create({...this.getGitHubUserInfo(),...t}),r=e.data.number;if(!r)throw new Error("CreateReleasePR Failed, prNumber is empty");if(this.logger.debug("Create PR Success",[e?.url]),t.labels&&t.labels.length){const e=await this.octokit.rest.issues.addLabels({...this.getGitHubUserInfo(),issue_number:r,labels:t.labels});this.logger.debug("Add PR label Success",[e.url])}return r.toString()}catch(t){if(422===t.status&&t.message.includes("already exists")){this.logger.warn("PR already exists");const e=t.message.match(/pull request #(\d+)/);return e?e[1]:""}throw this.logger.error("Failed to create PR",t),t}}truncateBody(t){return t&&t.length>=124e3?t.substring(0,124e3)+"...":t}getOctokitReleaseOptions(t){const{releaseName:e,draft:r=!1,preRelease:n=!1,autoGenerate:o=!1,makeLatest:i=!0,releaseNotes:s,discussionCategoryName:a}=this.context.getConfig("githubPR"),c=e,u=o?"":this.truncateBody(String(s));return{name:c,make_latest:i.toString(),body:u,draft:r,prerelease:n,generate_release_notes:o,discussion_category_name:a,tag_name:"",...t,...this.getGitHubUserInfo()}}async createRelease(t){const e=this.getOctokitReleaseOptions({tag_name:t.tagName,body:t.changelog});if(e.name=this.shell.format(e.name,t),this.logger.log(`[DRY RUN] octokit repos.createRelease "${e.name}" (${e.tag_name})`,{isDryRun:this.context.dryRun}),!e.tag_name)throw new Error("TagName is undefined");if(!this.context.dryRun)try{const t=await this.octokit.repos.createRelease(e);this.logger.debug(`[DONE] octokit repos.createRelease "${e.name}" (${e.tag_name}) (${t.headers.location})`)}catch(t){this.logger.error(`[FAILED] octokit repos.createRelease "${e.name}" (${e.tag_name})`,t)}}}var ki,_i;function Pi(){if(_i)return ki;_i=1;var t=ve(),e=Dr(),r=Gr();return ki=function(n){return"string"==typeof n||!e(n)&&r(n)&&"[object String]"==t(n)}}var Ci=ee(Pi());class $i{context;pluginName;props;onlyOne=!0;constructor(t,e,r={}){this.context=t,this.pluginName=e,this.props=r,this.setConfig(this.getInitialProps(r))}getInitialProps(t){const e=this.context.options[this.pluginName],r=mi(this.context.shared,this.pluginName);return e||t?ri({},r,t,e):{}}get logger(){return this.context.logger}get shell(){return this.context.shell}get options(){return this.context.getConfig(this.pluginName,{})}getEnv(t,e){return this.context.env.get(t)??e}enabled(t,e){return!0}getConfig(t,e){return t?this.context.getConfig([this.pluginName,...Array.isArray(t)?t:[t]],e):this.context.getConfig(this.pluginName,e)}setConfig(t){this.context.setConfig({[this.pluginName]:t})}onBefore(t){}onExec(t){}onSuccess(t){}onError(t){}async step({label:t,task:e}){this.logger.log(),this.logger.info(t),this.logger.log();try{const r=await e();return this.logger.info(`${t} - success`),r}catch(t){throw this.logger.error(t),t}}}class Ni extends $i{async onBefore(){const t=await this.getUserInfo();if(!t)throw new Error("Failed to get repoInfo");let e=this.context.shared.currentBranch;e||(e=await this.getCurrentBranch()),e&&await this.context.shell.exec(`git checkout ${e}`,{dryRun:!1}),this.context.setShared({repoName:t.repoName,authorName:t.authorName,currentBranch:e})}async getCurrentBranch(){return await new Promise((t=>setTimeout(t,100))),this.context.shell.exec("git rev-parse --abbrev-ref HEAD",{dryRun:!1})}async getRemoteUrl(){return(await this.context.shell.exec("git config --get remote.origin.url",{dryRun:!1})).trim()}async getUserInfo(){let t;try{t=await this.getRemoteUrl()}catch{throw new Error("Failed to get git remote url. Please ensure this is a git repository with a valid remote.")}if(!t)throw new Error("Git remote URL is empty. Please set a valid GitHub remote URL.");this.context.logger.debug("repoUrl: ",t);const e=t.match(/github\.com[:/]([^/]+)\/([^/.]+)(?:\.git)?$/);if(!e)throw new Error("Invalid GitHub repository URL format. Please ensure the remote URL is from GitHub.");const[,r,n]=e;if(!this.isValidString(r)||!this.isValidString(n))throw new Error("Failed to extract owner or repository name from GitHub URL");return{repoName:n,authorName:r}}isValidString(t){return!!t&&Ci(t)}commit(t,e=[]){return this.context.shell.exec(["git","commit","--message",JSON.stringify(t),...e])}}class ji{options;constructor(t){this.options=t}compare(t,e){return"function"==typeof this.options.compare?this.options.compare(t,e):t.startsWith(e)}toChangeLabel(t,e=this.options.changePackagesLabel){return e.replace("${name}",t)}toChangeLabels(t,e=this.options.changePackagesLabel){return t.map((t=>this.toChangeLabel(t,e)))}pick(t,e=this.options.packagesDirectories){const r=[];for(const n of e)for(const e of t)if(this.compare(e,n)){r.push(n);break}return r}}class Ei{static readJson(t){const e=Yt.readFileSync(t,"utf-8");return JSON.parse(e)}static toWorkspace(t,e){let{root:r,packageJson:n}=t;const o=t.path;if(!o)throw new Error("path is not required!");return r=r||Kt.join(e,o),n=n||Ei.readJson(Kt.join(r,di)),{name:n.name,version:n.version,path:o,root:r,packageJson:n}}}class Ti extends $i{releaseTask=null;workspacesList=[];_skip=!1;releaseLabel;constructor(t){super(t,"workspaces"),this.releaseLabel=new ji({changePackagesLabel:this.context.shared.changePackagesLabel||"change:${name}",packagesDirectories:this.context.shared.packagesDirectories||[]})}enabled(){return!this._skip&&!this.getConfig("skip")}async onBefore(){const t=this.getConfig("workspace");if(t)return this.logger.debug("Use the specified workspace",t),void this.setCurrentWorkspace(t,[]);const e=await this.getWorkspaces();if(this.getConfig("skipCheckPackage")||0===e.length)throw new Error("No changes to publish packages");const{publishPath:r}=this.context.shared;if(r){const t=e.find((t=>Jt.resolve(t.root)===Jt.resolve(r)));if(this.nextSkip(),!t)throw new Error(`No workspace found for: ${r}`);return this.logger.debug(`Workspace of ${r} find!`,Jt.join(t.root,di)),void this.setCurrentWorkspace(t,[t])}const[n,...o]=e;this.workspacesList=o,this.setCurrentWorkspace(n,e)}nextSkip(){this._skip=!0,this.logger.debug("skip next workspace")}setReleaseTask(t){this.releaseTask=t}setCurrentWorkspace(t,e){this.context.setShared({publishPath:t.path}),this.setConfig({workspace:t,workspaces:e})}getPackages(){const t=this.context.shared.packagesDirectories;return Array.isArray(t)?t:[]}async getGitWorkspaces(){const t=this.context.sourceBranch,e=await this.shell.exec(`git diff --name-only origin/${t}...HEAD`,{dryRun:!1});return"string"==typeof e?e.split("\n"):[]}async getChangedPackages(t,e){if(this.logger.debug("changeLabels",e),Array.isArray(e)&&e.length>0){const r=t.filter((t=>{const r=this.releaseLabel.toChangeLabel(t);return e.includes(r)}));return this.logger.debug("changed by labels",r),r}const r=await this.getGitWorkspaces();return this.logger.debug("changed by git",r),this.releaseLabel.pick(r,t)}async getWorkspaces(){const t=this.getPackages();this.logger.debug("packages",t);const e=await this.getChangedPackages(t,this.getConfig("changeLabels"));this.setConfig({packages:t,changedPaths:e}),this.logger.debug("changedPaths",e);const r=e.map((t=>Ei.toWorkspace({path:t},this.context.rootPath)));return r}}function Bi(t,...e){return"function"==typeof t&&t.prototype&&t.prototype.constructor===t?new t(...e):t(...e)}function Oi(t){return t.startsWith(".")?Jt.parse(t).name:t}async function Si(t){let e=null;try{e=(await import(t)).default}catch{try{e=(await import(Jt.join(process.cwd(),t))).default}catch{const r=Qt.createRequire(process.cwd());e=(await import(Xt.pathToFileURL(r.resolve(t,{paths:[process.cwd()]})).href)).default}}return[Oi(t),e]}async function Ai(t,e,r=5){const n=Zt(r),o=e.map((([e,...r])=>n((()=>(async(e,...r)=>{if("string"==typeof e){const[,n]=await Si(e);return Bi(n,t,...r)}return Bi(e,t,...r)})(e,...r)))));return Promise.all(o)}const Li="- ${message}${prRef}\n",Ui="%H%n%s%n%b%n----------------------";class Fi{formatFlatCommits(t,e,r){const{types:n=[],formatTemplate:o=Li}=e,i=new Map;for(const e of t){const t=e.type||"other";i.has(t)||i.set(t,[]),i.get(t).push(e)}const s=[];for(const{type:t,section:e,hidden:a}of n){if(a)continue;const n=i.get(t);if(n?.length){s.push(`${e||t}`);for(const t of n){const e=t.prNumber?` (#${t.prNumber})`:"";if(s.push(r.format(o,{...t,prRef:e})),t.body){const e=t.body.split("\n").map((t=>` ${t}`));s.push(e.join("\n"))}}}}return s}}class Wi{shell;options;constructor(t,e){this.shell=t,this.options=e}parseCommitBody(t){const e=t.split("\n").filter(Boolean),r=[];let n=null;for(let t=0;t<e.length;t++){const o=e[t].trim();if(o.startsWith("Co-authored-by:")||"---------"===o||0===o.length)continue;const i=o.match(/^\*?\s*(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);if(i&&o.startsWith("*")){n&&r.push({...n,body:n.bodyLines?.join("\n").trim()});const[t,e,s,a]=i;n={matchRaw:t,raw:o,type:e?.toLowerCase(),scope:s?.trim(),message:a.trim(),bodyLines:[]}}else n&&o.startsWith("-")&&n.bodyLines?.push(o)}return n&&r.push({...n,body:n.bodyLines?.join("\n").trim()}),r}async getPRCommits(t){const{from:e,to:r,directory:n,format:o}={...this.options,...t};return(await this.getLog({from:e,to:r,directory:n,format:o,noMerges:!1})).split("\n----------------------\n").filter(Boolean).map((t=>{const[e,r,...n]=t.trim().split("\n"),o=n.join("\n"),i=r.match(/\(#(\d+)\)/),s=r.replace(/\s*\(#\d+\)\s*$/,"").match(/^(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);return{hash:e,raw:{title:r,body:o},title:s?{type:s[1]?.toLowerCase(),scope:s[2]?.trim(),message:s[3].trim()}:{message:r.replace(/\s*\(#\d+\)\s*$/,"").trim()},commits:this.parseCommitBody(o),prNumber:i?.[1]}}))}async hasTag(t){return this.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((()=>!0)).catch((()=>!1))}async resolveTag(t,e){if(t)try{if(await this.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((t=>!!t.trim())))return t}catch{}return"root"===e?this.shell.exec("git rev-list --max-parents=0 HEAD",{dryRun:!1}).then((t=>t.trim())):"HEAD"}async getLog(t){const{directory:e,format:r=Ui,noMerges:n=!0}=t;if(t.logCommand)return this.shell.exec(t.logCommand,{dryRun:!1});const o=await this.resolveTag(t.from,"root"),i=await this.resolveTag(t.to,"HEAD"),s=`git log --pretty=format:"${r}" ${n?"--no-merges":""} ${o===i?i:`${o}..${i}`} ${e?`-- "${e}"`:""}`;return this.shell.exec(s.trim(),{dryRun:!1})}flatCommits(t){const e=[];for(const r of t){const t={title:r.title,raw:r.raw,hash:r.hash,prNumber:r.prNumber};if(Array.isArray(r.commits)&&r.commits.length>0){const n=r.commits.map((e=>({...e,prNumber:r.prNumber,hash:r.hash,parentHash:r.hash,parentCommit:t})));e.push(...n)}else e.push({raw:r.raw.title,type:r.title.type,scope:r.title.scope,message:r.title.message,body:r.raw.body,prNumber:r.prNumber,hash:r.hash,parentHash:r.hash,parentCommit:t})}return e}formatFlatCommits(t,e){const{types:r=[],formatter:n}={...this.options,...e};return(n||new Fi).formatFlatCommits(t,{types:r},this.shell)}}const Mi=[vi(Ti),vi(class extends $i{constructor(t,e){super(t,"changelog",{increment:"patch",changesetRoot:".changeset",tagTemplate:"${name}@${version}",tagPrefix:"${name}",tagMatch:"${name}@*",...e})}get changesetRoot(){return Kt.join(this.context.rootPath,this.getConfig("changesetRoot"))}get changesetConfigPath(){return Kt.join(this.changesetRoot,"config.json")}enabled(){return!this.getConfig("skip")}async onBefore(){if(!Yt.existsSync(this.changesetRoot))throw new Error(`Changeset directory ${this.changesetRoot} does not exist`);this.logger.debug(`${this.changesetRoot} exists`)}mergeWorkspaces(t){return t.map((t=>{const e=Ei.toWorkspace({path:t.path},this.context.rootPath),r={...t,version:e.version};return r.tagName=this.generateTagName(r),r}))}async onExec(){const t=await this.step({label:"Generate Changelogs",task:()=>Promise.all(this.context.workspaces.map((t=>this.generateChangelog(t))))});this.getConfig("skipChangeset")?this.logger.debug("Skip generate changeset files"):(await this.step({label:"Changeset Version",task:()=>Promise.all(t.map((t=>this.generateChangesetFile(t))))}),await this.context.runChangesetsCli("version",["--no-changelog","--update-dependencies"]),this.getConfig("ignoreNonUpdatedPackages")&&await this.restoreIgnorePackages());const e=this.mergeWorkspaces(t);this.logger.debug("new workspaces",e),this.context.setWorkspaces(e)}async restoreIgnorePackages(){const{changedPaths:t=[],packages:e=[]}=this.context.getConfig("workspaces"),r=e.filter((e=>!t.includes(e))).map((t=>Ei.toWorkspace({path:t},this.context.rootPath).path));this.logger.debug("noChangedPackages",r),await this.shell.exec(["git","restore",...r])}getTagPrefix(t){return this.shell.format(this.getConfig("tagPrefix"),t)}async createChangelog({lastTag:t,workspace:e}){const r=new Wi(this.context.shell,{...this.getConfig("gitChangelogOptions"),from:t,directory:e.path});return r.getPRCommits().then((t=>{const e=r.flatCommits(t);return r.formatFlatCommits(e).join("\n")}))}async generateChangelog(t){const e=await this.getTagName(t);this.logger.debug("tagName is:",e);const r=await this.createChangelog({workspace:t,lastTag:e});return{...t,lastTag:e,changelog:r}}generateTagName(t){try{const e=this.getConfig("tagTemplate");return this.shell.format(e,t)}catch(e){return console.error(`Error generating tag name for ${t.name}:`,e),`${t.name}-v0.0.0`}}async getTagName(t){try{const e=this.generateTagName(t),r=this.shell.format(this.getConfig("tagMatch"),t),n=await this.shell.exec(`git for-each-ref --sort=-creatordate --format "%(refname:short)|%(creatordate:iso8601)" "refs/tags/${r}"`,{dryRun:!1});if(!n)return e;const o=n.split("\n").filter(Boolean);if(0===o.length)return e;return o[0].split("|")[0]}catch(e){console.error(`Error getting tag for ${t.name}:`,e);return this.generateTagName(t)}}getIncrement(){const t=this.context.getConfig("workspaces.changeLabels");if(Array.isArray(t)&&t.length>0){if(t.includes("increment:major"))return"major";if(t.includes("increment:minor"))return"minor"}return this.getConfig("increment","patch")}async generateChangesetFile(t){const{name:e,version:r}=t,n=`${e}-${r}`.replace(/[\/\\]/g,"_"),o=Kt.join(this.changesetRoot,`${n}.md`),i=this.getIncrement();this.logger.debug("increment is:",[i]);const s=this.shell.format("---\n'${name}': '${increment}'\n---\n\n${changelog}",{...t,increment:i});if(this.context.dryRun)return this.logger.info(`Changeset [${o}] will be created, content is:`),void this.logger.log(s);Yt.existsSync(o)?this.logger.info(`Changeset ${n} already exists`):Yt.writeFileSync(o,s,"utf-8")}},{}),vi(class extends Ni{context;releaseParams;githubManager;constructor(t,e){super(t,"githubPR",{releaseName:"Release ${name} v${version}",...e}),this.context=t,this.githubManager=new xi(this.context),this.releaseParams=new Ri(t.shell,t.logger,{PRTitle:this.getConfig("PRTitle",this.context.shared.PRTitle),PRBody:this.getConfig("PRBody",this.context.shared.PRBody),...this.props})}enabled(t){return!this.getConfig("skip")&&("onExec"===t?!this.isPublish:"onSuccess"!==t||this.isPublish)}get isPublish(){return!this.getConfig("releasePR")}async isGithubRepository(){try{return(await this.getRemoteUrl()).includes("github.com")}catch{return!1}}async onBefore(){this.logger.debug("GithubPR onBefore");if(!await this.isGithubRepository())throw new Error("Current repository is not a GitHub repository. GitHub PR workflow is only available for GitHub repositories.");if(await super.onBefore(),this.isPublish){const t=this.getEnv("NPM_TOKEN");if(!t)throw new Error("NPM_TOKEN is not set");await this.shell.exec(`npm config set //registry.npmjs.org/:_authToken=${t}`)}}async onExec(){const t=this.context.workspaces;await this.step({label:"Release Commit",task:()=>this.relesaeCommit(t)});const e=await this.step({label:"Create Release Branch",task:()=>this.createReleaseBranch(t)});await this.releasePullRequest(t,e)}async onSuccess(){const t=this.context.workspaces;this.getConfig("dryRunCreatePR")||(await this.context.runChangesetsCli("publish"),await this.shell.exec("git push origin --tags")),await this.step({label:"Release Github",task:()=>Promise.all(t.map((t=>(this.logger.debug(t),this.githubManager.createRelease(t)))))})}async relesaeCommit(t){const e=this.getConfig("commitArgs",[]);if(1===t.length)return await this.shell.exec("git add ."),void await this.commitWorkspace(t[0],e);await this.shell.exec("git add .");const r=`chore(tag): ${t.map((t=>`${t.name} v${t.version}`)).join(",")}`;await this.commit(r,e)}async releasePullRequest(t,e){const r=await this.step({label:"Create Release PR",task:()=>this.createReleasePR(t,e)});if(this.githubManager.autoMergeReleasePR){const{releaseBranch:t}=e;return await this.step({label:`Merge Release PR(${r})`,task:()=>this.githubManager.mergePR(r,t)}),void await this.step({label:`Checked Release PR(${r})`,task:()=>this.githubManager.checkedPR(r,t)})}this.logger.info(`Please manually merge PR(#${r}) and complete the publishing process afterwards`)}async commitWorkspace(t,e=[]){const r=this.shell.format(this.getConfig("commitMessage","chore(tag): ${name} v${version}"),t);return await this.commit(r,e)}async createReleaseBranch(t){const e=this.releaseParams.getReleaseBranchParams(t,this.context.getTemplateContext()),{tagName:r,releaseBranch:n}=e;if("string"!=typeof r)throw new Error("Tag name is not a string");const{sourceBranch:o,currentBranch:i}=this.context.shared;this.context.logger.debug("PR TagName is:",r),this.context.logger.debug("PR CurrentBranch is:",i),this.context.logger.debug("PR SourceBranch is:",o),this.context.logger.debug("PR ReleaseBranch is:",n);try{await this.context.shell.exec(`git fetch origin ${o} ${i}`),await this.context.shell.exec(`git checkout -b ${n} ${i}`),await this.context.shell.exec(`git push origin ${n}`)}catch(t){throw t.message.includes("remote: Permission to ")&&this.context.logger.warn('Token maybe not allow Workflow permissions, can you try to open "Workflow permissions" -> "Read and write permissions" for this token?'),t}return{tagName:r,releaseBranch:n}}async createReleasePR(t,e){let r=[(await this.githubManager.createReleasePRLabel()).name];if(this.getConfig("pushChangeLabels")){const t=this.context.getConfig("workspaces.changeLabels");Array.isArray(t)&&t.length>0&&r.push(...t)}r=Array.from(new Set(r)),this.logger.debug("Release PR labels:",r);const n=this.context.getTemplateContext(),o=this.releaseParams.getPRTitle(e,n),i=this.releaseParams.getPRBody(t,e,n);return this.githubManager.createReleasePR({title:o,body:i,base:this.context.sourceBranch,head:e.releaseBranch,labels:r})}},{})];var Gi,Hi,Ii,Di;function qi(){if(Hi)return Gi;Hi=1;var t=uo(),e=li(),r=go(),n=we(),o=gi();return Gi=function(i,s,a,c){if(!n(i))return i;for(var u=-1,h=(s=e(s,i)).length,l=h-1,g=i;null!=g&&++u<h;){var f=o(s[u]),p=a;if("__proto__"===f||"constructor"===f||"prototype"===f)return i;if(u!=l){var m=g[f];void 0===(p=c?c(m,f,g):void 0)&&(p=n(m)?m:r(s[u+1])?[]:{})}t(g,f,p),g=g[f]}return i},Gi}function zi(){if(Di)return Ii;Di=1;var t=qi();return Ii=function(e,r,n){return null==e?e:t(e,r,n)},Ii}var Vi=ee(zi());exports.Plugin=$i,exports.ReleaseContext=bi,exports.ReleaseLabel=ji,exports.ReleaseTask=class{executor;defaultTuples;context;constructor(t={},e=new zt.AsyncExecutor,r=Mi){this.executor=e,this.defaultTuples=r,this.context=new bi(t)}getContext(){return this.context}async usePlugins(t){t=t||this.context.shared.plugins||[];const e=await Ai(this.context,[...this.defaultTuples,...t]);return e.forEach((t=>{t instanceof Ti&&t.setReleaseTask(this),this.executor.use(t)})),e}async run(){return this.executor.exec(this.context,(t=>Promise.resolve(t)))}async exec(t){if("false"===this.context.env.get("FE_RELEASE"))throw new Error("Skip Release");return await this.usePlugins(t),this.run()}},exports.factory=Bi,exports.load=Si,exports.loaderPluginsFromPluginTuples=Ai,exports.reduceOptions=function(t,e){return Object.entries(t).reduce(((t,[r,n])=>(r.includes(".")?Vi(t,r,n):Vi(t,e?`${e}.${r}`:r,n),t)),{})},exports.tuple=vi;
1
+ "use strict";var t,e,r,n,o,i,a,s,u,c,h,f,l,g,p,m,v,d,b,y,w,k,_,R,x,P,j,C,$,N,O,E,B,T,S,A,L,W,U,M,F,G,D,H,q,I,z,V,J,Y,K,Q,X,Z,tt,et,rt,nt,ot,it,at,st,ut,ct,ht,ft,lt,gt,pt,mt,vt,dt,bt,yt,wt,kt,_t,Rt,xt,Pt,jt,Ct,$t,Nt,Ot,Et,Bt,Tt,St,At,Lt,Wt,Ut,Mt,Ft,Gt,Dt,Ht,qt=require("@qlover/scripts-context"),It=require("@qlover/env-loader"),zt=require("@qlover/fe-corekit"),Vt=require("@octokit/rest"),Jt=require("gitlog"),Yt=require("node:path"),Kt=require("find-workspaces"),Qt=require("fs"),Xt=require("path"),Zt=require("node:module"),te=require("node:url"),ee=require("p-limit"),re="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function ne(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function oe(){if(e)return t;return e=1,t=function(){this.__data__=[],this.size=0}}function ie(){if(n)return r;return n=1,r=function(t,e){return t===e||t!=t&&e!=e}}function ae(){if(i)return o;i=1;var t=ie();return o=function(e,r){for(var n=e.length;n--;)if(t(e[n][0],r))return n;return-1}}function se(){if(s)return a;s=1;var t=ae(),e=Array.prototype.splice;return a=function(r){var n=this.__data__,o=t(n,r);return!(o<0)&&(o==n.length-1?n.pop():e.call(n,o,1),--this.size,!0)}}function ue(){if(c)return u;c=1;var t=ae();return u=function(e){var r=this.__data__,n=t(r,e);return n<0?void 0:r[n][1]}}function ce(){if(f)return h;f=1;var t=ae();return h=function(e){return t(this.__data__,e)>-1}}function he(){if(g)return l;g=1;var t=ae();return l=function(e,r){var n=this.__data__,o=t(n,e);return o<0?(++this.size,n.push([e,r])):n[o][1]=r,this}}function fe(){if(m)return p;m=1;var t=oe(),e=se(),r=ue(),n=ce(),o=he();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,p=i}function le(){if(d)return v;d=1;var t=fe();return v=function(){this.__data__=new t,this.size=0}}function ge(){if(y)return b;return y=1,b=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}}function pe(){if(k)return w;return k=1,w=function(t){return this.__data__.get(t)}}function me(){if(R)return _;return R=1,_=function(t){return this.__data__.has(t)}}function ve(){if(P)return x;P=1;var t="object"==typeof re&&re&&re.Object===Object&&re;return x=t}function de(){if(C)return j;C=1;var t=ve(),e="object"==typeof self&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return j=r}function be(){if(N)return $;N=1;var t=de().Symbol;return $=t}function ye(){if(E)return O;E=1;var t=be(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,o=t?t.toStringTag:void 0;return O=function(t){var e=r.call(t,o),i=t[o];try{t[o]=void 0;var a=!0}catch(t){}var s=n.call(t);return a&&(e?t[o]=i:delete t[o]),s}}function we(){if(T)return B;T=1;var t=Object.prototype.toString;return B=function(e){return t.call(e)}}function ke(){if(A)return S;A=1;var t=be(),e=ye(),r=we(),n=t?t.toStringTag:void 0;return S=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":n&&n in Object(t)?e(t):r(t)}}function _e(){if(W)return L;return W=1,L=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}}function Re(){if(M)return U;M=1;var t=ke(),e=_e();return U=function(r){if(!e(r))return!1;var n=t(r);return"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n}}function xe(){if(G)return F;G=1;var t=de()["__core-js_shared__"];return F=t}function Pe(){if(H)return D;H=1;var t,e=xe(),r=(t=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||""))?"Symbol(src)_1."+t:"";return D=function(t){return!!r&&r in t}}function je(){if(I)return q;I=1;var t=Function.prototype.toString;return q=function(e){if(null!=e){try{return t.call(e)}catch(t){}try{return e+""}catch(t){}}return""}}function Ce(){if(V)return z;V=1;var t=Re(),e=Pe(),r=_e(),n=je(),o=/^\[object .+?Constructor\]$/,i=Function.prototype,a=Object.prototype,s=i.toString,u=a.hasOwnProperty,c=RegExp("^"+s.call(u).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return z=function(i){return!(!r(i)||e(i))&&(t(i)?c:o).test(n(i))}}function $e(){if(Y)return J;return Y=1,J=function(t,e){return null==t?void 0:t[e]}}function Ne(){if(Q)return K;Q=1;var t=Ce(),e=$e();return K=function(r,n){var o=e(r,n);return t(o)?o:void 0}}function Oe(){if(Z)return X;Z=1;var t=Ne()(de(),"Map");return X=t}function Ee(){if(et)return tt;et=1;var t=Ne()(Object,"create");return tt=t}function Be(){if(nt)return rt;nt=1;var t=Ee();return rt=function(){this.__data__=t?t(null):{},this.size=0}}function Te(){if(it)return ot;return it=1,ot=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}}function Se(){if(st)return at;st=1;var t=Ee(),e=Object.prototype.hasOwnProperty;return at=function(r){var n=this.__data__;if(t){var o=n[r];return"__lodash_hash_undefined__"===o?void 0:o}return e.call(n,r)?n[r]:void 0}}function Ae(){if(ct)return ut;ct=1;var t=Ee(),e=Object.prototype.hasOwnProperty;return ut=function(r){var n=this.__data__;return t?void 0!==n[r]:e.call(n,r)}}function Le(){if(ft)return ht;ft=1;var t=Ee();return ht=function(e,r){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=t&&void 0===r?"__lodash_hash_undefined__":r,this}}function We(){if(gt)return lt;gt=1;var t=Be(),e=Te(),r=Se(),n=Ae(),o=Le();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,lt=i}function Ue(){if(mt)return pt;mt=1;var t=We(),e=fe(),r=Oe();return pt=function(){this.size=0,this.__data__={hash:new t,map:new(r||e),string:new t}}}function Me(){if(dt)return vt;return dt=1,vt=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}}function Fe(){if(yt)return bt;yt=1;var t=Me();return bt=function(e,r){var n=e.__data__;return t(r)?n["string"==typeof r?"string":"hash"]:n.map}}function Ge(){if(kt)return wt;kt=1;var t=Fe();return wt=function(e){var r=t(this,e).delete(e);return this.size-=r?1:0,r}}function De(){if(Rt)return _t;Rt=1;var t=Fe();return _t=function(e){return t(this,e).get(e)}}function He(){if(Pt)return xt;Pt=1;var t=Fe();return xt=function(e){return t(this,e).has(e)}}function qe(){if(Ct)return jt;Ct=1;var t=Fe();return jt=function(e,r){var n=t(this,e),o=n.size;return n.set(e,r),this.size+=n.size==o?0:1,this}}function Ie(){if(Nt)return $t;Nt=1;var t=Ue(),e=Ge(),r=De(),n=He(),o=qe();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,$t=i}function ze(){if(Et)return Ot;Et=1;var t=fe(),e=Oe(),r=Ie();return Ot=function(n,o){var i=this.__data__;if(i instanceof t){var a=i.__data__;if(!e||a.length<199)return a.push([n,o]),this.size=++i.size,this;i=this.__data__=new r(a)}return i.set(n,o),this.size=i.size,this}}function Ve(){if(Tt)return Bt;Tt=1;var t=fe(),e=le(),r=ge(),n=pe(),o=me(),i=ze();function a(e){var r=this.__data__=new t(e);this.size=r.size}return a.prototype.clear=e,a.prototype.delete=r,a.prototype.get=n,a.prototype.has=o,a.prototype.set=i,Bt=a}function Je(){if(At)return St;At=1;var t=Ne(),e=function(){try{var e=t(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();return St=e}function Ye(){if(Wt)return Lt;Wt=1;var t=Je();return Lt=function(e,r,n){"__proto__"==r&&t?t(e,r,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[r]=n}}function Ke(){if(Mt)return Ut;Mt=1;var t=Ye(),e=ie();return Ut=function(r,n,o){(void 0!==o&&!e(r[n],o)||void 0===o&&!(n in r))&&t(r,n,o)}}function Qe(){if(Gt)return Ft;return Gt=1,Ft=function(t){return function(e,r,n){for(var o=-1,i=Object(e),a=n(e),s=a.length;s--;){var u=a[t?s:++o];if(!1===r(i[u],u,i))break}return e}}}function Xe(){if(Ht)return Dt;Ht=1;var t=Qe()();return Dt=t}var Ze,tr,er,rr,nr,or,ir,ar,sr,ur,cr,hr,fr,lr,gr,pr,mr,vr,dr,br,yr,wr,kr,_r,Rr,xr,Pr,jr,Cr,$r,Nr,Or,Er,Br={exports:{}};function Tr(){return Ze||(Ze=1,function(t,e){var r=de(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n?r.Buffer:void 0,a=i?i.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var r=t.length,n=a?a(r):new t.constructor(r);return t.copy(n),n}}(Br,Br.exports)),Br.exports}function Sr(){if(er)return tr;er=1;var t=de().Uint8Array;return tr=t}function Ar(){if(nr)return rr;nr=1;var t=Sr();return rr=function(e){var r=new e.constructor(e.byteLength);return new t(r).set(new t(e)),r}}function Lr(){if(ir)return or;ir=1;var t=Ar();return or=function(e,r){var n=r?t(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}}function Wr(){if(sr)return ar;return sr=1,ar=function(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r<n;)e[r]=t[r];return e}}function Ur(){if(cr)return ur;cr=1;var t=_e(),e=Object.create,r=function(){function r(){}return function(n){if(!t(n))return{};if(e)return e(n);r.prototype=n;var o=new r;return r.prototype=void 0,o}}();return ur=r}function Mr(){if(fr)return hr;return fr=1,hr=function(t,e){return function(r){return t(e(r))}}}function Fr(){if(gr)return lr;gr=1;var t=Mr()(Object.getPrototypeOf,Object);return lr=t}function Gr(){if(mr)return pr;mr=1;var t=Object.prototype;return pr=function(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||t)}}function Dr(){if(dr)return vr;dr=1;var t=Ur(),e=Fr(),r=Gr();return vr=function(n){return"function"!=typeof n.constructor||r(n)?{}:t(e(n))}}function Hr(){if(yr)return br;return yr=1,br=function(t){return null!=t&&"object"==typeof t}}function qr(){if(kr)return wr;kr=1;var t=ke(),e=Hr();return wr=function(r){return e(r)&&"[object Arguments]"==t(r)}}function Ir(){if(Rr)return _r;Rr=1;var t=qr(),e=Hr(),r=Object.prototype,n=r.hasOwnProperty,o=r.propertyIsEnumerable,i=t(function(){return arguments}())?t:function(t){return e(t)&&n.call(t,"callee")&&!o.call(t,"callee")};return _r=i}function zr(){if(Pr)return xr;Pr=1;var t=Array.isArray;return xr=t}function Vr(){if(Cr)return jr;Cr=1;return jr=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}}function Jr(){if(Nr)return $r;Nr=1;var t=Re(),e=Vr();return $r=function(r){return null!=r&&e(r.length)&&!t(r)}}function Yr(){if(Er)return Or;Er=1;var t=Jr(),e=Hr();return Or=function(r){return e(r)&&t(r)}}var Kr,Qr,Xr,Zr,tn,en,rn,nn,on,an={exports:{}};function sn(){if(Qr)return Kr;return Qr=1,Kr=function(){return!1}}function un(){return Xr||(Xr=1,function(t,e){var r=de(),n=sn(),o=e&&!e.nodeType&&e,i=o&&t&&!t.nodeType&&t,a=i&&i.exports===o?r.Buffer:void 0,s=(a?a.isBuffer:void 0)||n;t.exports=s}(an,an.exports)),an.exports}function cn(){if(tn)return Zr;tn=1;var t=ke(),e=Fr(),r=Hr(),n=Function.prototype,o=Object.prototype,i=n.toString,a=o.hasOwnProperty,s=i.call(Object);return Zr=function(n){if(!r(n)||"[object Object]"!=t(n))return!1;var o=e(n);if(null===o)return!0;var u=a.call(o,"constructor")&&o.constructor;return"function"==typeof u&&u instanceof u&&i.call(u)==s}}function hn(){if(rn)return en;rn=1;var t=ke(),e=Vr(),r=Hr(),n={};return n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1,en=function(o){return r(o)&&e(o.length)&&!!n[t(o)]}}function fn(){if(on)return nn;return on=1,nn=function(t){return function(e){return t(e)}}}var ln,gn,pn,mn,vn,dn,bn,yn,wn,kn,_n,Rn,xn,Pn,jn,Cn,$n,Nn,On,En,Bn,Tn,Sn,An,Ln,Wn,Un,Mn,Fn,Gn,Dn,Hn,qn,In,zn,Vn,Jn,Yn,Kn,Qn,Xn,Zn,to,eo,ro,no,oo,io,ao,so={exports:{}};function uo(){return ln||(ln=1,function(t,e){var r=ve(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n&&r.process,a=function(){try{var t=o&&o.require&&o.require("util").types;return t||i&&i.binding&&i.binding("util")}catch(t){}}();t.exports=a}(so,so.exports)),so.exports}function co(){if(pn)return gn;pn=1;var t=hn(),e=fn(),r=uo(),n=r&&r.isTypedArray,o=n?e(n):t;return gn=o}function ho(){if(vn)return mn;return vn=1,mn=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}}function fo(){if(bn)return dn;bn=1;var t=Ye(),e=ie(),r=Object.prototype.hasOwnProperty;return dn=function(n,o,i){var a=n[o];r.call(n,o)&&e(a,i)&&(void 0!==i||o in n)||t(n,o,i)}}function lo(){if(wn)return yn;wn=1;var t=fo(),e=Ye();return yn=function(r,n,o,i){var a=!o;o||(o={});for(var s=-1,u=n.length;++s<u;){var c=n[s],h=i?i(o[c],r[c],c,o,r):void 0;void 0===h&&(h=r[c]),a?e(o,c,h):t(o,c,h)}return o}}function go(){if(_n)return kn;return _n=1,kn=function(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n}}function po(){if(xn)return Rn;xn=1;var t=/^(?:0|[1-9]\d*)$/;return Rn=function(e,r){var n=typeof e;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e<r}}function mo(){if(jn)return Pn;jn=1;var t=go(),e=Ir(),r=zr(),n=un(),o=po(),i=co(),a=Object.prototype.hasOwnProperty;return Pn=function(s,u){var c=r(s),h=!c&&e(s),f=!c&&!h&&n(s),l=!c&&!h&&!f&&i(s),g=c||h||f||l,p=g?t(s.length,String):[],m=p.length;for(var v in s)!u&&!a.call(s,v)||g&&("length"==v||f&&("offset"==v||"parent"==v)||l&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||o(v,m))||p.push(v);return p}}function vo(){if($n)return Cn;return $n=1,Cn=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}}function bo(){if(On)return Nn;On=1;var t=_e(),e=Gr(),r=vo(),n=Object.prototype.hasOwnProperty;return Nn=function(o){if(!t(o))return r(o);var i=e(o),a=[];for(var s in o)("constructor"!=s||!i&&n.call(o,s))&&a.push(s);return a}}function yo(){if(Bn)return En;Bn=1;var t=mo(),e=bo(),r=Jr();return En=function(n){return r(n)?t(n,!0):e(n)}}function wo(){if(Sn)return Tn;Sn=1;var t=lo(),e=yo();return Tn=function(r){return t(r,e(r))}}function ko(){if(Ln)return An;Ln=1;var t=Ke(),e=Tr(),r=Lr(),n=Wr(),o=Dr(),i=Ir(),a=zr(),s=Yr(),u=un(),c=Re(),h=_e(),f=cn(),l=co(),g=ho(),p=wo();return An=function(m,v,d,b,y,w,k){var _=g(m,d),R=g(v,d),x=k.get(R);if(x)t(m,d,x);else{var P=w?w(_,R,d+"",m,v,k):void 0,j=void 0===P;if(j){var C=a(R),$=!C&&u(R),N=!C&&!$&&l(R);P=R,C||$||N?a(_)?P=_:s(_)?P=n(_):$?(j=!1,P=e(R,!0)):N?(j=!1,P=r(R,!0)):P=[]:f(R)||i(R)?(P=_,i(_)?P=p(_):h(_)&&!c(_)||(P=o(R))):j=!1}j&&(k.set(R,P),y(P,R,b,w,k),k.delete(R)),t(m,d,P)}}}function _o(){if(Un)return Wn;Un=1;var t=Ve(),e=Ke(),r=Xe(),n=ko(),o=_e(),i=yo(),a=ho();return Wn=function s(u,c,h,f,l){u!==c&&r(c,(function(r,i){if(l||(l=new t),o(r))n(u,c,i,h,s,f,l);else{var g=f?f(a(u,i),r,i+"",u,c,l):void 0;void 0===g&&(g=r),e(u,i,g)}}),i)},Wn}function Ro(){if(Fn)return Mn;return Fn=1,Mn=function(t){return t}}function xo(){if(Dn)return Gn;return Dn=1,Gn=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}}function Po(){if(qn)return Hn;qn=1;var t=xo(),e=Math.max;return Hn=function(r,n,o){return n=e(void 0===n?r.length-1:n,0),function(){for(var i=arguments,a=-1,s=e(i.length-n,0),u=Array(s);++a<s;)u[a]=i[n+a];a=-1;for(var c=Array(n+1);++a<n;)c[a]=i[a];return c[n]=o(u),t(r,this,c)}},Hn}function jo(){if(zn)return In;return zn=1,In=function(t){return function(){return t}}}function Co(){if(Jn)return Vn;Jn=1;var t=jo(),e=Je();return Vn=e?function(r,n){return e(r,"toString",{configurable:!0,enumerable:!1,value:t(n),writable:!0})}:Ro()}function $o(){if(Kn)return Yn;Kn=1;var t=Date.now;return Yn=function(e){var r=0,n=0;return function(){var o=t(),i=16-(o-n);if(n=o,i>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}},Yn}function No(){if(Xn)return Qn;Xn=1;var t=Co(),e=$o()(t);return Qn=e}function Oo(){if(to)return Zn;to=1;var t=Ro(),e=Po(),r=No();return Zn=function(n,o){return r(e(n,o,t),n+"")}}function Eo(){if(ro)return eo;ro=1;var t=ie(),e=Jr(),r=po(),n=_e();return eo=function(o,i,a){if(!n(a))return!1;var s=typeof i;return!!("number"==s?e(a)&&r(i,a.length):"string"==s&&i in a)&&t(a[i],o)}}function Bo(){if(oo)return no;oo=1;var t=Oo(),e=Eo();return no=function(r){return t((function(t,n){var o=-1,i=n.length,a=i>1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(a=r.length>3&&"function"==typeof a?(i--,a):void 0,s&&e(n[0],n[1],s)&&(a=i<3?void 0:a,i=1),t=Object(t);++o<i;){var u=n[o];u&&r(t,u,o,a)}return t}))}}function To(){if(ao)return io;ao=1;var t=_o(),e=Bo()((function(e,r,n){t(e,r,n)}));return io=e}var So,Ao,Lo,Wo,Uo,Mo,Fo,Go,Do,Ho,qo,Io,zo,Vo,Jo,Yo,Ko,Qo,Xo,Zo,ti,ei,ri,ni,oi=ne(To());function ii(){if(Ao)return So;Ao=1;var t=ke(),e=Hr();return So=function(r){return"symbol"==typeof r||e(r)&&"[object Symbol]"==t(r)}}function ai(){if(Wo)return Lo;Wo=1;var t=zr(),e=ii(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;return Lo=function(o,i){if(t(o))return!1;var a=typeof o;return!("number"!=a&&"symbol"!=a&&"boolean"!=a&&null!=o&&!e(o))||(n.test(o)||!r.test(o)||null!=i&&o in Object(i))}}function si(){if(Mo)return Uo;Mo=1;var t=Ie();function e(r,n){if("function"!=typeof r||null!=n&&"function"!=typeof n)throw new TypeError("Expected a function");var o=function(){var t=arguments,e=n?n.apply(this,t):t[0],i=o.cache;if(i.has(e))return i.get(e);var a=r.apply(this,t);return o.cache=i.set(e,a)||i,a};return o.cache=new(e.Cache||t),o}return e.Cache=t,Uo=e}function ui(){if(Go)return Fo;Go=1;var t=si();return Fo=function(e){var r=t(e,(function(t){return 500===n.size&&n.clear(),t})),n=r.cache;return r}}function ci(){if(Ho)return Do;Ho=1;var t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,e=/\\(\\)?/g,r=ui()((function(r){var n=[];return 46===r.charCodeAt(0)&&n.push(""),r.replace(t,(function(t,r,o,i){n.push(o?i.replace(e,"$1"):r||t)})),n}));return Do=r}function hi(){if(Io)return qo;return Io=1,qo=function(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r<n;)o[r]=e(t[r],r,t);return o}}function fi(){if(Vo)return zo;Vo=1;var t=be(),e=hi(),r=zr(),n=ii(),o=t?t.prototype:void 0,i=o?o.toString:void 0;return zo=function t(o){if("string"==typeof o)return o;if(r(o))return e(o,t)+"";if(n(o))return i?i.call(o):"";var a=o+"";return"0"==a&&1/o==-1/0?"-0":a},zo}function li(){if(Yo)return Jo;Yo=1;var t=fi();return Jo=function(e){return null==e?"":t(e)}}function gi(){if(Qo)return Ko;Qo=1;var t=zr(),e=ai(),r=ci(),n=li();return Ko=function(o,i){return t(o)?o:e(o,i)?[o]:r(n(o))}}function pi(){if(Zo)return Xo;Zo=1;var t=ii();return Xo=function(e){if("string"==typeof e||t(e))return e;var r=e+"";return"0"==r&&1/e==-1/0?"-0":r}}function mi(){if(ei)return ti;ei=1;var t=gi(),e=pi();return ti=function(r,n){for(var o=0,i=(n=t(n,r)).length;null!=r&&o<i;)r=r[e(n[o++])];return o&&o==i?r:void 0},ti}function vi(){if(ni)return ri;ni=1;var t=mi();return ri=function(e,r,n){var o=null==e?void 0:t(e,r);return void 0===o?n:o},ri}var di=ne(vi());const bi="package.json",yi=[".env.local",".env"];class wi extends qt.FeScriptContext{_env;shared;constructor(t){super(t),this._env=It.Env.searchEnv({logger:this.logger,preloadList:this.feConfig.envOrder||yi}),this.shared=Object.assign({},this.feConfig.release,this.getDefaultShreadOptions(t.shared))}getDefaultShreadOptions(t){return{rootPath:process.cwd(),sourceBranch:this._env.get("FE_RELEASE_BRANCH")||this._env.get("FE_RELEASE_SOURCE_BRANCH")||"master",releaseEnv:this._env.get("FE_RELEASE_ENV")||this._env.get("NODE_ENV")||"development",...t}}get rootPath(){return this.shared.rootPath}get sourceBranch(){return this.shared.sourceBranch}get releaseEnv(){return this.shared.releaseEnv}get env(){return this._env}get workspaces(){return this.getConfig("workspaces.workspaces")}get workspace(){return this.getConfig("workspaces.workspace")}setWorkspaces(t){this.options.workspaces={...this.options.workspaces,workspaces:t}}setConfig(t){this.options=oi(this.options,t)}getConfig(t,e){return di(this.options,t,e)}setShared(t){this.shared=oi(this.shared,t)}getPkg(t,e){const r=this.workspace?.packageJson;if(!r)throw new Error("package.json is not found");return t?di(r,t,e):r}getTemplateContext(){return{...this.shared,...this.workspace,publishPath:this.workspace?.path||"",env:this.releaseEnv,branch:this.sourceBranch}}async runChangesetsCli(t,e){let r="pnpm";try{await this.shell.exec("pnpm -v",{dryRun:!1})}catch{r="npx"}return await this.shell.exec([r,"changeset",t,...e??[]])}}function ki(t,...e){return[t,...e]}const _i={maxWorkspace:3,multiWorkspaceSeparator:"_",workspaceVersionSeparator:"@",batchBranchName:"batch-${releaseName}-${length}-packages-${timestamp}",batchTagName:"batch-${length}-packages-${timestamp}"};class Ri{shell;logger;config;constructor(t,e,r={}){this.shell=t,this.logger=e,this.config={..._i,...r}}getReleaseBranchName(t,e,r){const n=r.branchName||"release-${tagName}";if("string"!=typeof n)throw new Error("Branch name template is not a string");return this.logger.debug("Release Branch template is:",n),this.shell.format(n,{pkgName:t,releaseName:t,tagName:e,...r})}getBatchReleaseBranchName(t,e,r,n){const o=this.config.batchBranchName;if("string"!=typeof o)throw new Error("Branch name template is not a string");return this.logger.debug("Release Batch Branch template is:",o),this.shell.format(o,{pkgName:t,releaseName:t,tagName:e,...r,length:n,timestamp:Date.now()})}getReleaseName(t){if(1===t.length)return t[0].name;const{maxWorkspace:e,multiWorkspaceSeparator:r,workspaceVersionSeparator:n}=this.config;return t.slice(0,e).map((({name:t,version:e})=>`${t}${n}${e}`)).join(r)}getReleaseTagName(t){if(1===t.length)return t[0].version;const{batchTagName:e}=this.config;return this.shell.format(e,{length:t.length,timestamp:Date.now()})}getReleaseBranchParams(t,e){const r=this.getReleaseTagName(t),n=this.getReleaseName(t);return{tagName:r,releaseBranch:t.length>1?this.getBatchReleaseBranchName(n,r,e,t.length):this.getReleaseBranchName(n,r,e)}}getPRTitle(t,e){const r=this.config.PRTitle||"Release ${env} ${pkgName} ${tagName}";return this.shell.format(r,{...e,tagName:t.tagName,pkgName:t.releaseBranch})}getPRBody(t,e,r){const n=this.config.PRBody,o=t.length>1?t.map((t=>this.shell.format("\n## ${name} ${version}\n${changelog}\n",t))).join("\n"):t[0].changelog,{workspaceVersionSeparator:i}=this.config,a=1===t.length?e.tagName:t.map((t=>`${t.name}${i}${t.version}`)).join(" ");return this.shell.format(n,{...r,tagName:a,changelog:o})}}class xi{context;_octokit=null;constructor(t){this.context=t}getGitHubUserInfo(){const{authorName:t,repoName:e}=this.context.shared;if(!t||!e)throw new Error("Author name or repo name is not set");return{owner:t,repo:e}}getToken(){const{tokenRef:t="GITHUB_TOKEN"}=this.context.getConfig("githubPR"),e=this.context.env.get(t);if(!e)throw new Error(`Token is not set. Please set ${t} environment variable.`);return e}get octokit(){if(this._octokit)return this._octokit;const{timeout:t}=this.context.getConfig("githubPR"),e={auth:this.getToken(),request:{timeout:t}};return this._octokit=new Vt.Octokit(e),this._octokit}get logger(){return this.context.logger}get shell(){return this.context.shell}get autoMergeType(){return this.context.shared.autoMergeType||"squash"}get dryRunPRNumber(){return this.context.getConfig("githubPR.dryRunPRNumber","999999")}get autoMergeReleasePR(){return this.context.shared.autoMergeReleasePR||false}async mergePR(t,e){if(!t)return void this.logger.error("Failed to create Pull Request.",t);const r=this.autoMergeType;if(this.context.dryRun){const{repoName:n,authorName:o}=this.context.shared;this.logger.info(`[DRY RUN] Would merge PR #${t} with method '${r}' in repo ${o}/${n}, branch ${e}`)}else await this.octokit.rest.pulls.merge({...this.getGitHubUserInfo(),pull_number:Number(t),merge_method:r})}async getPullRequestCommits(t){return(await this.octokit.rest.pulls.listCommits({...this.getGitHubUserInfo(),pull_number:t})).data}async getPullRequest(t){return(await this.octokit.rest.pulls.get({...this.getGitHubUserInfo(),pull_number:t})).data}async checkedPR(t,e){try{await this.getPullRequest(Number(t)),await this.octokit.rest.git.deleteRef({...this.getGitHubUserInfo(),ref:`heads/${e}`}),this.logger.info(`Branch ${e} has been deleted`)}catch(r){if(404===r.status)return void this.logger.warn(`PR #${t} or branch ${e} not found`);throw this.logger.error("Failed to check PR or delete branch",r),r}}async createReleasePRLabel(){const t=this.context.shared.label;if(!(t&&t.name&&t.description&&t.color))throw new Error("Label is not valid, skipping creation");if(this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR label with:",t),t;try{const e=await this.octokit.rest.issues.createLabel({...this.getGitHubUserInfo(),name:t.name,description:t.description,color:t.color.replace("#","")});return this.logger.debug("Create PR label Success",e),t}catch(e){if(422===e.status)return this.logger.warn(`Label ${t.name} already exists, skipping!`),t;throw this.logger.error("Create PR label Failed",e),e}}async createReleasePR(t){if(this.context.getConfig("githubPR.dryRunCreatePR")||this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR with:",{...t,labels:t.labels}),this.dryRunPRNumber;try{const e=await this.octokit.rest.pulls.create({...this.getGitHubUserInfo(),...t}),r=e.data.number;if(!r)throw new Error("CreateReleasePR Failed, prNumber is empty");if(this.logger.debug("Create PR Success",[e?.url]),t.labels&&t.labels.length){const e=await this.octokit.rest.issues.addLabels({...this.getGitHubUserInfo(),issue_number:r,labels:t.labels});this.logger.debug("Add PR label Success",[e.url])}return r.toString()}catch(t){if(422===t.status&&t.message.includes("already exists")){this.logger.warn("PR already exists");const e=t.message.match(/pull request #(\d+)/);return e?e[1]:""}throw this.logger.error("Failed to create PR",t),t}}truncateBody(t){return t&&t.length>=124e3?t.substring(0,124e3)+"...":t}getOctokitReleaseOptions(t){const{releaseName:e,draft:r=!1,preRelease:n=!1,autoGenerate:o=!1,makeLatest:i=!0,releaseNotes:a,discussionCategoryName:s}=this.context.getConfig("githubPR"),u=e,c=o?"":this.truncateBody(String(a));return{name:u,make_latest:i.toString(),body:c,draft:r,prerelease:n,generate_release_notes:o,discussion_category_name:s,tag_name:"",...t,...this.getGitHubUserInfo()}}async createRelease(t){const e=this.getOctokitReleaseOptions({tag_name:t.tagName,body:t.changelog});if(e.name=this.shell.format(e.name,t),this.logger.log(`[DRY RUN] octokit repos.createRelease "${e.name}" (${e.tag_name})`,{isDryRun:this.context.dryRun}),!e.tag_name)throw new Error("TagName is undefined");if(!this.context.dryRun)try{const t=await this.octokit.repos.createRelease(e);this.logger.debug(`[DONE] octokit repos.createRelease "${e.name}" (${e.tag_name}) (${t.headers.location})`)}catch(t){this.logger.error(`[FAILED] octokit repos.createRelease "${e.name}" (${e.tag_name})`,t)}}}var Pi,ji;function Ci(){if(ji)return Pi;ji=1;var t=ke(),e=zr(),r=Hr();return Pi=function(n){return"string"==typeof n||!e(n)&&r(n)&&"[object String]"==t(n)}}var $i=ne(Ci());class Ni{context;pluginName;props;onlyOne=!0;constructor(t,e,r={}){this.context=t,this.pluginName=e,this.props=r,this.setConfig(this.getInitialProps(r))}getInitialProps(t){const e=this.context.options[this.pluginName],r=di(this.context.shared,this.pluginName);return e||t?oi({},r,t,e):{}}get logger(){return this.context.logger}get shell(){return this.context.shell}get options(){return this.context.getConfig(this.pluginName,{})}getEnv(t,e){return this.context.env.get(t)??e}enabled(t,e){return!0}getConfig(t,e){return t?this.context.getConfig([this.pluginName,...Array.isArray(t)?t:[t]],e):this.context.getConfig(this.pluginName,e)}setConfig(t){this.context.setConfig({[this.pluginName]:t})}onBefore(t){}onExec(t){}onSuccess(t){}onError(t){}async step({label:t,task:e}){this.logger.log(),this.logger.info(t),this.logger.log();try{const r=await e();return this.logger.info(`${t} - success`),r}catch(t){throw this.logger.error(t),t}}}class Oi extends Ni{async onBefore(){const t=await this.getUserInfo();if(!t)throw new Error("Failed to get repoInfo");let e=this.context.shared.currentBranch;e||(e=await this.getCurrentBranch()),e&&await this.context.shell.exec(`git checkout ${e}`,{dryRun:!1}),this.context.setShared({repoName:t.repoName,authorName:t.authorName,currentBranch:e})}async getCurrentBranch(){return await new Promise((t=>setTimeout(t,100))),this.context.shell.exec("git rev-parse --abbrev-ref HEAD",{dryRun:!1})}async getRemoteUrl(){return(await this.context.shell.exec("git config --get remote.origin.url",{dryRun:!1})).trim()}async getUserInfo(){let t;try{t=await this.getRemoteUrl()}catch{throw new Error("Failed to get git remote url. Please ensure this is a git repository with a valid remote.")}if(!t)throw new Error("Git remote URL is empty. Please set a valid GitHub remote URL.");this.context.logger.debug("repoUrl: ",t);const e=t.match(/github\.com[:/]([^/]+)\/([^/.]+)(?:\.git)?$/);if(!e)throw new Error("Invalid GitHub repository URL format. Please ensure the remote URL is from GitHub.");const[,r,n]=e;if(!this.isValidString(r)||!this.isValidString(n))throw new Error("Failed to extract owner or repository name from GitHub URL");return{repoName:n,authorName:r}}isValidString(t){return!!t&&$i(t)}commit(t,e=[]){return this.context.shell.exec(["git","commit","--message",JSON.stringify(t),...e])}}const Ei=["hash","abbrevHash","treeHash","abbrevTreeHash","parentHashes","abbrevParentHashes","authorName","authorEmail","authorDate","authorDateRel","committerName","committerEmail","committerDate","committerDateRel","subject","body","rawBody","tag"];class Bi{options;constructor(t){this.options=t}async getGitLog(t={}){const{directory:e,noMerges:r=!0,fileds:n}=t,o=await this.resolveTag(t.from,"root"),i=await this.resolveTag(t.to,"HEAD"),a=o===i?i:`${o}..${i}`;return await Jt({repo:".",number:1e3,fields:n,branch:a,file:e,nameStatus:!1,includeMergeCommitFiles:!r})}async getCommits(t){return(await this.getGitLog(t)).map((t=>{const{subject:e,rawBody:r}=t;return{base:t,commitlint:this.parseCommitlint(e||r||""),commits:[]}}))}createBaseCommit(t,e){return{subject:t,rawBody:t,body:t,...e}}parseCommitBody(t){const e=t.split("\n").filter(Boolean),r=[];for(let t=0;t<e.length;t++){const n=e[t].trim();if(!n)continue;const o=n.match(/\(#(\d+)\)/),i=this.parseCommitlint(n);if(!i.message)continue;const a=this.createBaseCommit(n);r.push({base:a,commitlint:i,commits:[],prNumber:o?.[1]})}return r}parseCommitlint(t){const[e]=t.trim().split("\n"),r=e.replace(/\s*\(#\d+\)\s*$/,"").match(/^(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);return r?{type:r[1]?.toLowerCase(),scope:r[2]?.trim(),message:r[3].trim()}:{message:e}}toCommitValue(t,e){const[r]=e.trim().split("\n"),n=r.match(/\(#(\d+)\)/),o=this.parseCommitlint(r);return{base:this.createBaseCommit(r,{hash:t,abbrevHash:t.substring(0,7),rawBody:e}),commitlint:o,commits:[],prNumber:n?.[1]}}async resolveTag(t,e){if(t)try{if(await this.options.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((t=>!!t.trim())))return t}catch{}return"root"===e?this.options.shell.exec("git rev-list --max-parents=0 HEAD",{dryRun:!1}).then((t=>t.trim())):"HEAD"}}var Ti,Si,Ai,Li,Wi,Ui,Mi,Fi,Gi,Di,Hi,qi,Ii,zi,Vi,Ji,Yi,Ki,Qi,Xi,Zi,ta,ea,ra,na,oa,ia,aa,sa,ua,ca,ha,fa,la,ga,pa,ma,va,da,ba,ya,wa,ka,_a,Ra,xa,Pa,ja,Ca,$a,Na,Oa,Ea,Ba,Ta,Sa,Aa,La,Wa,Ua,Ma,Fa,Ga,Da,Ha,qa,Ia,za,Va,Ja,Ya,Ka,Qa,Xa,Za,ts,es,rs,ns,os,is,as,ss,us,cs,hs,fs,ls,gs,ps,ms,vs;function ds(){if(Si)return Ti;return Si=1,Ti=function(t,e,r,n){for(var o=-1,i=null==t?0:t.length;++o<i;){var a=t[o];e(n,a,r(a),t)}return n}}function bs(){if(Li)return Ai;Li=1;var t=Mr()(Object.keys,Object);return Ai=t}function ys(){if(Ui)return Wi;Ui=1;var t=Gr(),e=bs(),r=Object.prototype.hasOwnProperty;return Wi=function(n){if(!t(n))return e(n);var o=[];for(var i in Object(n))r.call(n,i)&&"constructor"!=i&&o.push(i);return o}}function ws(){if(Fi)return Mi;Fi=1;var t=mo(),e=ys(),r=Jr();return Mi=function(n){return r(n)?t(n):e(n)}}function ks(){if(Di)return Gi;Di=1;var t=Xe(),e=ws();return Gi=function(r,n){return r&&t(r,n,e)}}function _s(){if(qi)return Hi;qi=1;var t=Jr();return Hi=function(e,r){return function(n,o){if(null==n)return n;if(!t(n))return e(n,o);for(var i=n.length,a=r?i:-1,s=Object(n);(r?a--:++a<i)&&!1!==o(s[a],a,s););return n}}}function Rs(){if(zi)return Ii;zi=1;var t=ks(),e=_s()(t);return Ii=e}function xs(){if(Ji)return Vi;Ji=1;var t=Rs();return Vi=function(e,r,n,o){return t(e,(function(t,e,i){r(o,t,n(t),i)})),o}}function Ps(){if(Ki)return Yi;Ki=1;return Yi=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}}function js(){if(Xi)return Qi;return Xi=1,Qi=function(t){return this.__data__.has(t)}}function Cs(){if(ta)return Zi;ta=1;var t=Ie(),e=Ps(),r=js();function n(e){var r=-1,n=null==e?0:e.length;for(this.__data__=new t;++r<n;)this.add(e[r])}return n.prototype.add=n.prototype.push=e,n.prototype.has=r,Zi=n}function $s(){if(ra)return ea;return ra=1,ea=function(t,e){for(var r=-1,n=null==t?0:t.length;++r<n;)if(e(t[r],r,t))return!0;return!1}}function Ns(){if(oa)return na;return oa=1,na=function(t,e){return t.has(e)}}function Os(){if(aa)return ia;aa=1;var t=Cs(),e=$s(),r=Ns();return ia=function(n,o,i,a,s,u){var c=1&i,h=n.length,f=o.length;if(h!=f&&!(c&&f>h))return!1;var l=u.get(n),g=u.get(o);if(l&&g)return l==o&&g==n;var p=-1,m=!0,v=2&i?new t:void 0;for(u.set(n,o),u.set(o,n);++p<h;){var d=n[p],b=o[p];if(a)var y=c?a(b,d,p,o,n,u):a(d,b,p,n,o,u);if(void 0!==y){if(y)continue;m=!1;break}if(v){if(!e(o,(function(t,e){if(!r(v,e)&&(d===t||s(d,t,i,a,u)))return v.push(e)}))){m=!1;break}}else if(d!==b&&!s(d,b,i,a,u)){m=!1;break}}return u.delete(n),u.delete(o),m}}function Es(){if(ua)return sa;return ua=1,sa=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t,n){r[++e]=[n,t]})),r}}function Bs(){if(ha)return ca;return ha=1,ca=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t){r[++e]=t})),r},ca}function Ts(){if(la)return fa;la=1;var t=be(),e=Sr(),r=ie(),n=Os(),o=Es(),i=Bs(),a=t?t.prototype:void 0,s=a?a.valueOf:void 0;return fa=function(t,a,u,c,h,f,l){switch(u){case"[object DataView]":if(t.byteLength!=a.byteLength||t.byteOffset!=a.byteOffset)return!1;t=t.buffer,a=a.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=a.byteLength||!f(new e(t),new e(a)));case"[object Boolean]":case"[object Date]":case"[object Number]":return r(+t,+a);case"[object Error]":return t.name==a.name&&t.message==a.message;case"[object RegExp]":case"[object String]":return t==a+"";case"[object Map]":var g=o;case"[object Set]":var p=1&c;if(g||(g=i),t.size!=a.size&&!p)return!1;var m=l.get(t);if(m)return m==a;c|=2,l.set(t,a);var v=n(g(t),g(a),c,h,f,l);return l.delete(t),v;case"[object Symbol]":if(s)return s.call(t)==s.call(a)}return!1}}function Ss(){if(pa)return ga;return pa=1,ga=function(t,e){for(var r=-1,n=e.length,o=t.length;++r<n;)t[o+r]=e[r];return t}}function As(){if(va)return ma;va=1;var t=Ss(),e=zr();return ma=function(r,n,o){var i=n(r);return e(r)?i:t(i,o(r))}}function Ls(){if(ba)return da;return ba=1,da=function(t,e){for(var r=-1,n=null==t?0:t.length,o=0,i=[];++r<n;){var a=t[r];e(a,r,t)&&(i[o++]=a)}return i}}function Ws(){if(wa)return ya;return wa=1,ya=function(){return[]}}function Us(){if(_a)return ka;_a=1;var t=Ls(),e=Ws(),r=Object.prototype.propertyIsEnumerable,n=Object.getOwnPropertySymbols;return ka=n?function(e){return null==e?[]:(e=Object(e),t(n(e),(function(t){return r.call(e,t)})))}:e}function Ms(){if(xa)return Ra;xa=1;var t=As(),e=Us(),r=ws();return Ra=function(n){return t(n,r,e)}}function Fs(){if(ja)return Pa;ja=1;var t=Ms(),e=Object.prototype.hasOwnProperty;return Pa=function(r,n,o,i,a,s){var u=1&o,c=t(r),h=c.length;if(h!=t(n).length&&!u)return!1;for(var f=h;f--;){var l=c[f];if(!(u?l in n:e.call(n,l)))return!1}var g=s.get(r),p=s.get(n);if(g&&p)return g==n&&p==r;var m=!0;s.set(r,n),s.set(n,r);for(var v=u;++f<h;){var d=r[l=c[f]],b=n[l];if(i)var y=u?i(b,d,l,n,r,s):i(d,b,l,r,n,s);if(!(void 0===y?d===b||a(d,b,o,i,s):y)){m=!1;break}v||(v="constructor"==l)}if(m&&!v){var w=r.constructor,k=n.constructor;w==k||!("constructor"in r)||!("constructor"in n)||"function"==typeof w&&w instanceof w&&"function"==typeof k&&k instanceof k||(m=!1)}return s.delete(r),s.delete(n),m}}function Gs(){if($a)return Ca;$a=1;var t=Ne()(de(),"DataView");return Ca=t}function Ds(){if(Oa)return Na;Oa=1;var t=Ne()(de(),"Promise");return Na=t}function Hs(){if(Ba)return Ea;Ba=1;var t=Ne()(de(),"Set");return Ea=t}function qs(){if(Sa)return Ta;Sa=1;var t=Ne()(de(),"WeakMap");return Ta=t}function Is(){if(La)return Aa;La=1;var t=Gs(),e=Oe(),r=Ds(),n=Hs(),o=qs(),i=ke(),a=je(),s="[object Map]",u="[object Promise]",c="[object Set]",h="[object WeakMap]",f="[object DataView]",l=a(t),g=a(e),p=a(r),m=a(n),v=a(o),d=i;return(t&&d(new t(new ArrayBuffer(1)))!=f||e&&d(new e)!=s||r&&d(r.resolve())!=u||n&&d(new n)!=c||o&&d(new o)!=h)&&(d=function(t){var e=i(t),r="[object Object]"==e?t.constructor:void 0,n=r?a(r):"";if(n)switch(n){case l:return f;case g:return s;case p:return u;case m:return c;case v:return h}return e}),Aa=d}function zs(){if(Ua)return Wa;Ua=1;var t=Ve(),e=Os(),r=Ts(),n=Fs(),o=Is(),i=zr(),a=un(),s=co(),u="[object Arguments]",c="[object Array]",h="[object Object]",f=Object.prototype.hasOwnProperty;return Wa=function(l,g,p,m,v,d){var b=i(l),y=i(g),w=b?c:o(l),k=y?c:o(g),_=(w=w==u?h:w)==h,R=(k=k==u?h:k)==h,x=w==k;if(x&&a(l)){if(!a(g))return!1;b=!0,_=!1}if(x&&!_)return d||(d=new t),b||s(l)?e(l,g,p,m,v,d):r(l,g,w,p,m,v,d);if(!(1&p)){var P=_&&f.call(l,"__wrapped__"),j=R&&f.call(g,"__wrapped__");if(P||j){var C=P?l.value():l,$=j?g.value():g;return d||(d=new t),v(C,$,p,m,d)}}return!!x&&(d||(d=new t),n(l,g,p,m,v,d))}}function Vs(){if(Fa)return Ma;Fa=1;var t=zs(),e=Hr();return Ma=function r(n,o,i,a,s){return n===o||(null==n||null==o||!e(n)&&!e(o)?n!=n&&o!=o:t(n,o,i,a,r,s))},Ma}function Js(){if(Da)return Ga;Da=1;var t=Ve(),e=Vs();return Ga=function(r,n,o,i){var a=o.length,s=a,u=!i;if(null==r)return!s;for(r=Object(r);a--;){var c=o[a];if(u&&c[2]?c[1]!==r[c[0]]:!(c[0]in r))return!1}for(;++a<s;){var h=(c=o[a])[0],f=r[h],l=c[1];if(u&&c[2]){if(void 0===f&&!(h in r))return!1}else{var g=new t;if(i)var p=i(f,l,h,r,n,g);if(!(void 0===p?e(l,f,3,i,g):p))return!1}}return!0}}function Ys(){if(qa)return Ha;qa=1;var t=_e();return Ha=function(e){return e==e&&!t(e)}}function Ks(){if(za)return Ia;za=1;var t=Ys(),e=ws();return Ia=function(r){for(var n=e(r),o=n.length;o--;){var i=n[o],a=r[i];n[o]=[i,a,t(a)]}return n}}function Qs(){if(Ja)return Va;return Ja=1,Va=function(t,e){return function(r){return null!=r&&(r[t]===e&&(void 0!==e||t in Object(r)))}}}function Xs(){if(Ka)return Ya;Ka=1;var t=Js(),e=Ks(),r=Qs();return Ya=function(n){var o=e(n);return 1==o.length&&o[0][2]?r(o[0][0],o[0][1]):function(e){return e===n||t(e,n,o)}}}function Zs(){if(Xa)return Qa;return Xa=1,Qa=function(t,e){return null!=t&&e in Object(t)}}function tu(){if(ts)return Za;ts=1;var t=gi(),e=Ir(),r=zr(),n=po(),o=Vr(),i=pi();return Za=function(a,s,u){for(var c=-1,h=(s=t(s,a)).length,f=!1;++c<h;){var l=i(s[c]);if(!(f=null!=a&&u(a,l)))break;a=a[l]}return f||++c!=h?f:!!(h=null==a?0:a.length)&&o(h)&&n(l,h)&&(r(a)||e(a))},Za}function eu(){if(rs)return es;rs=1;var t=Zs(),e=tu();return es=function(r,n){return null!=r&&e(r,n,t)},es}function ru(){if(os)return ns;os=1;var t=Vs(),e=vi(),r=eu(),n=ai(),o=Ys(),i=Qs(),a=pi();return ns=function(s,u){return n(s)&&o(u)?i(a(s),u):function(n){var o=e(n,s);return void 0===o&&o===u?r(n,s):t(u,o,3)}},ns}function nu(){if(as)return is;return as=1,is=function(t){return function(e){return null==e?void 0:e[t]}}}function ou(){if(us)return ss;us=1;var t=mi();return ss=function(e){return function(r){return t(r,e)}},ss}function iu(){if(hs)return cs;hs=1;var t=nu(),e=ou(),r=ai(),n=pi();return cs=function(o){return r(o)?t(n(o)):e(o)},cs}function au(){if(ls)return fs;ls=1;var t=Xs(),e=ru(),r=Ro(),n=zr(),o=iu();return fs=function(i){return"function"==typeof i?i:null==i?r:"object"==typeof i?n(i)?e(i[0],i[1]):t(i):o(i)}}function su(){if(ps)return gs;ps=1;var t=ds(),e=xs(),r=au(),n=zr();return gs=function(o,i){return function(a,s){var u=n(a)?t:e,c=i?i():{};return u(a,o,r(s,2),c)}}}function uu(){if(vs)return ms;vs=1;var t=Ye(),e=su(),r=Object.prototype.hasOwnProperty,n=e((function(e,n,o){r.call(e,o)?e[o].push(n):t(e,o,[n])}));return ms=n}var cu=ne(uu());const hu="\n- ${scopeHeader} ${commitlint.message} ${commitLink} ${prLink}";class fu{options;constructor(t){this.options=t}format(t,e){const{types:r=[]}={...this.options,...e},n=[],o=cu(t,(t=>t.commitlint.type?t.commitlint.type:t.commitlint.message));return r.forEach((t=>{const{type:r,section:i,hidden:a}=t;if(a)return;const s=o[r]||[];s.length>0&&(n.push(i||""),s.forEach((t=>{if(n.push(this.formatCommit(t,e)),t.base.body){const e=t.base.body.split("\n").map((t=>` ${t}`));n.push(...e)}})))})),n}formatCommit(t,e){const{commitlint:r,base:{hash:n},prNumber:o}=t,{repoUrl:i,formatTemplate:a=hu}={...this.options,...e},s=r.scope?this.formatScope(r.scope):"",u=o?this.foramtLink("#"+o,i?`${i}/pull/${o}`:""):"",c=n?this.foramtLink(n.slice(0,7),i?`${i}/commit/${n}`:""):"";return this.options.shell.format(a,{...t,scopeHeader:s,commitLink:c,prLink:u})}foramtLink(t,e){return e?`([${t}](${e}))`:`(${t})`}formatCommitLink(t,e){return e?`([${t}](${e}))`:`(${t})`}formatScope(t){return`**${t}:**`}}const lu="https://github.com";class gu extends Bi{options;githubManager;constructor(t,e){super(t),this.options=t,this.githubManager=e}async getFullCommit(t){const e={...this.options,...t},r=await this.getCommits(e);return(await Promise.all(r.map((async t=>{let{prNumber:e}=t;if(!e&&t.base.subject){const r=t.base.subject.match(/\(#(\d+)\)/);r&&(e=r[1],t.prNumber=e)}if(!e)return t;return(await this.githubManager.getPullRequestCommits(+e)).map((({sha:t,commit:{message:r}})=>Object.assign(this.toCommitValue(t,r),{prNumber:e})))})))).flat()}async transformWorkspace(t,e){const r=[lu,e.shared.authorName,e.shared.repoName].join("/"),n={...e.getConfig("changelog"),githubRootPath:r,mergePRcommit:!0,shell:e.shell},o=new gu(n,this.githubManager),i=new fu(n);return await Promise.all(t.map((async t=>{const e=await o.getFullCommit({from:t.lastTag??"",directory:t.path,fileds:Ei});if("string"==typeof e)return{...t,changelog:e};const a=i.format(e,{...n,repoUrl:r});return{...t,changelog:a.join("\n")}})))}}class pu{options;constructor(t){this.options=t}compare(t,e){return"function"==typeof this.options.compare?this.options.compare(t,e):t.startsWith(e)}toChangeLabel(t,e=this.options.changePackagesLabel){return e.replace("${name}",t)}toChangeLabels(t,e=this.options.changePackagesLabel){return t.map((t=>this.toChangeLabel(t,e)))}pick(t,e=this.options.packagesDirectories){const r=[];for(const n of e)for(const e of t)if(this.compare(e,n)){r.push(n);break}return r}}class mu{static readJson(t){const e=Qt.readFileSync(t,"utf-8");return JSON.parse(e)}static toWorkspace(t,e){let{root:r,packageJson:n}=t;const o=t.path;if(!o)throw new Error("path is not required!");return r=r||Xt.join(e,o),n=n||mu.readJson(Xt.join(r,bi)),{name:n.name,version:n.version,path:o,root:r,packageJson:n}}}class vu extends Ni{releaseTask=null;workspacesList=[];_skip=!1;releaseLabel;constructor(t){super(t,"workspaces"),this.releaseLabel=new pu({changePackagesLabel:this.context.shared.changePackagesLabel||"change:${name}",packagesDirectories:this.context.shared.packagesDirectories||[],compare:(t,e)=>Yt.resolve(t).startsWith(Yt.resolve(e))})}enabled(){return!this._skip&&!this.getConfig("skip")}async onBefore(){const t=this.getConfig("workspace");if(t)return this.logger.debug("Use the specified workspace",t),void this.setCurrentWorkspace(t,[]);const e=await this.getWorkspaces();if(this.getConfig("skipCheckPackage")||0===e.length)throw new Error("No changes to publish packages");const{publishPath:r}=this.context.shared;if(r){const t=e.find((t=>Yt.resolve(t.root)===Yt.resolve(r)));if(this.nextSkip(),!t)throw new Error(`No workspace found for: ${r}`);return this.logger.debug(`Workspace of ${r} find!`,Yt.join(t.root,bi)),void this.setCurrentWorkspace(t,[t])}const[n,...o]=e;this.workspacesList=o,this.setCurrentWorkspace(n,e)}nextSkip(){this._skip=!0,this.logger.debug("skip next workspace")}setReleaseTask(t){this.releaseTask=t}setCurrentWorkspace(t,e){this.context.setShared({publishPath:t.path}),this.setConfig({workspace:t,workspaces:e})}async getGitWorkspaces(){const t=this.context.sourceBranch,e=await this.shell.exec(`git diff --name-only origin/${t}...HEAD`,{dryRun:!1});return"string"==typeof e?e.split("\n"):[]}async getChangedPackages(t,e){if(this.logger.debug("changeLabels",e),Array.isArray(e)&&e.length>0){const r=t.filter((t=>{const r=this.releaseLabel.toChangeLabel(t);return e.includes(r)}));return this.logger.debug("changed by labels",r),r}const r=await this.getGitWorkspaces();return this.logger.debug("changed by git",r),this.releaseLabel.pick(r,t)}getProjectWorkspaces(){const t=this.context.rootPath,e=this.context.shared.packagesDirectories;if(Array.isArray(e)&&e.length>0)return e.map((e=>mu.toWorkspace({path:e},t)));return(Kt.findWorkspaces(t)||[]).map((e=>({name:e.package.name,version:e.package.version,path:Yt.relative(t,e.location),root:Yt.resolve(t,e.location),packageJson:e.package})))}async getWorkspaces(){const t=this.getProjectWorkspaces(),e=t.map((({path:t})=>t));this.logger.debug("packages",e);const r=this.getConfig("changeLabels"),n=await this.getChangedPackages(e,r);return this.setConfig({packages:e,changedPaths:n,projectWorkspaces:t}),this.logger.debug("changedPaths",n),t.filter((t=>n.includes(t.path)))}}function du(t,...e){return"function"==typeof t&&t.prototype&&t.prototype.constructor===t?new t(...e):t(...e)}function bu(t){return t.startsWith(".")?Yt.parse(t).name:t}async function yu(t){let e=null;try{e=(await import(t)).default}catch{try{e=(await import(Yt.join(process.cwd(),t))).default}catch{const r=Zt.createRequire(process.cwd());e=(await import(te.pathToFileURL(r.resolve(t,{paths:[process.cwd()]})).href)).default}}return[bu(t),e]}async function wu(t,e,r=5){const n=ee(r),o=e.map((([e,...r])=>n((()=>(async(e,...r)=>{if("string"==typeof e){const[,n]=await yu(e);return du(n,t,...r)}return du(e,t,...r)})(e,...r)))));return Promise.all(o)}const ku=[ki(vu),ki(class extends Ni{constructor(t,e){super(t,"changelog",{increment:"patch",changesetRoot:".changeset",tagTemplate:"${name}@${version}",tagPrefix:"${name}",tagMatch:"${name}@*",...e})}get changesetRoot(){return Xt.join(this.context.rootPath,this.getConfig("changesetRoot"))}get changesetConfigPath(){return Xt.join(this.changesetRoot,"config.json")}enabled(){return!this.getConfig("skip")}async onBefore(){if(!Qt.existsSync(this.changesetRoot))throw new Error(`Changeset directory ${this.changesetRoot} does not exist`);this.logger.debug(`${this.changesetRoot} exists`)}mergeWorkspaces(t){return t.map((t=>{const e=mu.toWorkspace({path:t.path},this.context.rootPath),r={...t,version:e.version};return r.tagName=this.generateTagName(r),r}))}async onExec(t){const e=await this.step({label:"Generate Changelogs",task:()=>Promise.all(this.context.workspaces.map((t=>this.generateChangelog(t))))});this.context.setWorkspaces(e)}async onSuccess(){const t=this.context.workspaces;this.getConfig("skipChangeset")?this.logger.debug("Skip generate changeset files"):(await this.step({label:"Changeset Version",task:()=>Promise.all(t.map((t=>this.generateChangesetFile(t))))}),await this.context.runChangesetsCli("version",["--no-changelog","--update-dependencies"]),this.getConfig("ignoreNonUpdatedPackages")&&await this.restoreIgnorePackages());const e=this.mergeWorkspaces(t);this.logger.debug("new workspaces",e),this.context.setWorkspaces(e)}async restoreIgnorePackages(){const{changedPaths:t=[],packages:e=[]}=this.context.getConfig("workspaces"),r=e.filter((e=>!t.includes(e))).map((t=>mu.toWorkspace({path:t},this.context.rootPath).path));this.logger.debug("noChangedPackages",r),await this.shell.exec(["git","restore",...r])}getTagPrefix(t){return this.shell.format(this.getConfig("tagPrefix"),t)}async generateChangelog(t){const e=await this.getTagName(t);this.logger.debug("tagName is:",e);const r={...this.getConfig(),from:e,directory:t.path,shell:this.shell,fileds:Ei},n=new Bi(r),o=await n.getCommits(r),i=new fu(r).format(o);return{...t,lastTag:e,changelog:i.join("\n")}}generateTagName(t){try{const e=this.getConfig("tagTemplate");return this.shell.format(e,t)}catch(e){return console.error(`Error generating tag name for ${t.name}:`,e),`${t.name}-v0.0.0`}}async getTagName(t){try{const e=this.generateTagName(t),r=this.shell.format(this.getConfig("tagMatch"),t),n=await this.shell.exec(`git for-each-ref --sort=-creatordate --format "%(refname:short)|%(creatordate:iso8601)" "refs/tags/${r}"`,{dryRun:!1});if(!n)return e;const o=n.split("\n").filter(Boolean);if(0===o.length)return e;return o[0].split("|")[0]}catch(e){console.error(`Error getting tag for ${t.name}:`,e);return this.generateTagName(t)}}getIncrement(){const t=this.context.getConfig("workspaces.changeLabels");if(Array.isArray(t)&&t.length>0){if(t.includes("increment:major"))return"major";if(t.includes("increment:minor"))return"minor"}return this.getConfig("increment","patch")}async generateChangesetFile(t){const{name:e,version:r}=t,n=`${e}-${r}`.replace(/[\/\\]/g,"_"),o=Xt.join(this.changesetRoot,`${n}.md`),i=this.getIncrement();this.logger.debug("increment is:",[i]);const a=this.shell.format("---\n'${name}': '${increment}'\n---\n\n${changelog}",{...t,increment:i});if(this.context.dryRun)return this.logger.info(`Changeset [${o}] will be created, content is:`),void this.logger.log(a);Qt.existsSync(o)?this.logger.info(`Changeset ${n} already exists`):Qt.writeFileSync(o,a,"utf-8")}},{}),ki(class extends Oi{context;releaseParams;githubManager;constructor(t,e){super(t,"githubPR",{releaseName:"Release ${name} v${version}",...e}),this.context=t,this.githubManager=new xi(this.context),this.releaseParams=new Ri(t.shell,t.logger,{PRTitle:this.getConfig("PRTitle",this.context.shared.PRTitle),PRBody:this.getConfig("PRBody",this.context.shared.PRBody),...this.props})}enabled(t){return!this.getConfig("skip")}get isPublish(){return!this.getConfig("releasePR")}async isGithubRepository(){try{return(await this.getRemoteUrl()).includes("github.com")}catch{return!1}}async onBefore(){this.logger.debug("GithubPR onBefore");if(!await this.isGithubRepository())throw new Error("Current repository is not a GitHub repository. GitHub PR workflow is only available for GitHub repositories.");if(await super.onBefore(),this.isPublish){const t=this.getEnv("NPM_TOKEN");if(!t)throw new Error("NPM_TOKEN is not set");await this.shell.exec(`npm config set //registry.npmjs.org/:_authToken=${t}`)}}async onExec(){const t=this.context.workspaces,e=new gu(this.context.getConfig("changelog"),this.githubManager),r=await this.step({label:"GithubPR Changelogs",task:()=>e.transformWorkspace(t,this.context)});this.context.setWorkspaces(r),this.logger.debug("github changelog",this.context.workspaces)}async onSuccess(){this.isPublish?await this.publishPR(this.context.workspaces):await this.releasePR(this.context.workspaces)}async releasePR(t){await this.step({label:"Release Commit",task:()=>this.relesaeCommit(t)});const e=await this.step({label:"Create Release Branch",task:()=>this.createReleaseBranch(t)});await this.releasePullRequest(t,e)}async publishPR(t){this.getConfig("dryRunCreatePR")||(await this.context.runChangesetsCli("publish"),await this.shell.exec("git push origin --tags")),await this.step({label:"Release Github",task:()=>Promise.all(t.map((t=>(this.logger.debug(t),this.githubManager.createRelease(t)))))})}async relesaeCommit(t){const e=this.getConfig("commitArgs",[]);if(1===t.length)return await this.shell.exec("git add ."),void await this.commitWorkspace(t[0],e);await this.shell.exec("git add .");const r=`chore(tag): ${t.map((t=>`${t.name} v${t.version}`)).join(",")}`;await this.commit(r,e)}async releasePullRequest(t,e){const r=await this.step({label:"Create Release PR",task:()=>this.createReleasePR(t,e)});if(this.githubManager.autoMergeReleasePR){const{releaseBranch:t}=e;return await this.step({label:`Merge Release PR(${r})`,task:()=>this.githubManager.mergePR(r,t)}),void await this.step({label:`Checked Release PR(${r})`,task:()=>this.githubManager.checkedPR(r,t)})}this.logger.info(`Please manually merge PR(#${r}) and complete the publishing process afterwards`)}async commitWorkspace(t,e=[]){const r=this.shell.format(this.getConfig("commitMessage","chore(tag): ${name} v${version}"),t);return await this.commit(r,e)}async createReleaseBranch(t){const e=this.releaseParams.getReleaseBranchParams(t,this.context.getTemplateContext()),{tagName:r,releaseBranch:n}=e;if("string"!=typeof r)throw new Error("Tag name is not a string");const{sourceBranch:o,currentBranch:i}=this.context.shared;this.context.logger.debug("PR TagName is:",r),this.context.logger.debug("PR CurrentBranch is:",i),this.context.logger.debug("PR SourceBranch is:",o),this.context.logger.debug("PR ReleaseBranch is:",n);try{await this.context.shell.exec(`git fetch origin ${o} ${i}`),await this.context.shell.exec(`git checkout -b ${n} ${i}`),await this.context.shell.exec(`git push origin ${n}`)}catch(t){throw t.message.includes("remote: Permission to ")&&this.context.logger.warn('Token maybe not allow Workflow permissions, can you try to open "Workflow permissions" -> "Read and write permissions" for this token?'),t}return{tagName:r,releaseBranch:n}}async createReleasePR(t,e){let r=[(await this.githubManager.createReleasePRLabel()).name];if(this.getConfig("pushChangeLabels")){const t=this.context.getConfig("workspaces.changeLabels");Array.isArray(t)&&t.length>0&&r.push(...t)}r=Array.from(new Set(r)),this.logger.debug("Release PR labels:",r);const n=this.context.getTemplateContext(),o=this.releaseParams.getPRTitle(e,n),i=this.releaseParams.getPRBody(t,e,n);return this.githubManager.createReleasePR({title:o,body:i,base:this.context.sourceBranch,head:e.releaseBranch,labels:r})}},{})];var _u,Ru,xu,Pu;function ju(){if(Ru)return _u;Ru=1;var t=fo(),e=gi(),r=po(),n=_e(),o=pi();return _u=function(i,a,s,u){if(!n(i))return i;for(var c=-1,h=(a=e(a,i)).length,f=h-1,l=i;null!=l&&++c<h;){var g=o(a[c]),p=s;if("__proto__"===g||"constructor"===g||"prototype"===g)return i;if(c!=f){var m=l[g];void 0===(p=u?u(m,g,l):void 0)&&(p=n(m)?m:r(a[c+1])?[]:{})}t(l,g,p),l=l[g]}return i},_u}function Cu(){if(Pu)return xu;Pu=1;var t=ju();return xu=function(e,r,n){return null==e?e:t(e,r,n)},xu}var $u=ne(Cu());exports.CHANGELOG_ALL_FIELDS=Ei,exports.GitChangelog=Bi,exports.GitChangelogFormatter=fu,exports.Plugin=Ni,exports.ReleaseContext=wi,exports.ReleaseLabel=pu,exports.ReleaseTask=class{executor;defaultTuples;context;constructor(t={},e=new zt.AsyncExecutor,r=ku){this.executor=e,this.defaultTuples=r,this.context=new wi(t)}getContext(){return this.context}async usePlugins(t){t=t||this.context.shared.plugins||[];const e=await wu(this.context,[...this.defaultTuples,...t]);return e.forEach((t=>{t instanceof vu&&t.setReleaseTask(this),this.executor.use(t)})),e}async run(){return this.executor.exec(this.context,(t=>Promise.resolve(t)))}async exec(t){if("false"===this.context.env.get("FE_RELEASE"))throw new Error("Skip Release");return await this.usePlugins(t),this.run()}},exports.factory=du,exports.load=yu,exports.loaderPluginsFromPluginTuples=wu,exports.reduceOptions=function(t,e){return Object.entries(t).reduce(((t,[r,n])=>(r.includes(".")?$u(t,r,n):$u(t,e?`${e}.${r}`:r,n),t)),{})},exports.tuple=ki;
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ import { FeScriptContextOptions, Shell, FeReleaseConfig, FeScriptContext } from
2
2
  import { AsyncExecutor, ExecutorContext, ExecutorPlugin } from '@qlover/fe-corekit';
3
3
  import { LoggerInterface } from '@qlover/logger';
4
4
  import { Env } from '@qlover/env-loader';
5
+ import { CommitField } from 'gitlog';
5
6
  import { OptionValues } from 'commander';
6
7
 
7
8
  declare class ReleaseTask {
@@ -53,6 +54,11 @@ interface WorkspacesProps {
53
54
  * @private
54
55
  */
55
56
  packages?: string[];
57
+ /**
58
+ * All project packages mapping
59
+ * @private
60
+ */
61
+ projectWorkspaces?: WorkspaceValue[];
56
62
  }
57
63
  interface WorkspaceValue {
58
64
  name: string;
@@ -71,14 +77,17 @@ interface WorkspaceValue {
71
77
  packageJson: PackageJson;
72
78
  /**
73
79
  * The tag name of the workspace
80
+ * @private
74
81
  */
75
82
  tagName?: string;
76
83
  /**
77
84
  * The last tag name of the workspace
85
+ * @private
78
86
  */
79
87
  lastTag?: string;
80
88
  /**
81
89
  * The changelog of the workspace
90
+ * @private
82
91
  */
83
92
  changelog?: string;
84
93
  }
@@ -402,6 +411,124 @@ declare class ReleaseLabel {
402
411
  pick(changedFiles: Array<string> | Set<string>, packages?: string[]): string[];
403
412
  }
404
413
 
414
+ type BaseCommit = {
415
+ [key in CommitField]: string | undefined;
416
+ };
417
+ interface GitChangelogOptions {
418
+ /**
419
+ * start tag
420
+ */
421
+ from?: string;
422
+ /**
423
+ * end tag
424
+ */
425
+ to?: string;
426
+ /**
427
+ * log directory
428
+ */
429
+ directory?: string;
430
+ /**
431
+ * gitlog default fields
432
+ * @default ["abbrevHash", "hash", "subject", "authorName", "authorDate"]
433
+ */
434
+ fileds?: CommitField[];
435
+ /**
436
+ * not include merge commit
437
+ * @default true
438
+ */
439
+ noMerges?: boolean;
440
+ /**
441
+ * custom commit type
442
+ */
443
+ types?: {
444
+ type: string;
445
+ section?: string;
446
+ hidden?: boolean;
447
+ }[];
448
+ /**
449
+ * custom commit format
450
+ *
451
+ * - support `CommitValue` properties
452
+ * - add scopeHeader, commitLink, prLink
453
+ *
454
+ * @default '\n- ${scopeHeader} ${commitlint.message} ${commitLink} ${prLink}'
455
+ */
456
+ formatTemplate?: string;
457
+ }
458
+ interface Commitlint {
459
+ type?: string;
460
+ scope?: string;
461
+ message: string;
462
+ }
463
+ interface CommitValue {
464
+ /**
465
+ * git log base info
466
+ */
467
+ base: BaseCommit;
468
+ /**
469
+ * parsed commitlint info
470
+ */
471
+ commitlint: Commitlint;
472
+ /**
473
+ * parsed commitlint info
474
+ */
475
+ commits: CommitValue[];
476
+ /**
477
+ * pr number
478
+ */
479
+ prNumber?: string;
480
+ }
481
+ interface ChangelogFormatter {
482
+ format<Opt extends GitChangelogOptions>(commits: unknown[], options?: Opt): string[];
483
+ }
484
+ interface ChangeLogInterface {
485
+ getCommits(options?: GitChangelogOptions): Promise<CommitValue[]>;
486
+ }
487
+
488
+ declare const CHANGELOG_ALL_FIELDS: CommitField[];
489
+ interface GitChangelogProps extends GitChangelogOptions {
490
+ shell: Shell;
491
+ }
492
+ declare class GitChangelog implements ChangeLogInterface {
493
+ protected options: GitChangelogProps;
494
+ constructor(options: GitChangelogProps);
495
+ /**
496
+ * Get the git log
497
+ *
498
+ * @param options
499
+ * @returns
500
+ */
501
+ getGitLog(options?: GitChangelogOptions): Promise<BaseCommit[]>;
502
+ getCommits(options?: GitChangelogOptions): Promise<CommitValue[]>;
503
+ protected createBaseCommit(message: string, target?: Partial<BaseCommit>): BaseCommit;
504
+ protected parseCommitBody(body: string): CommitValue[];
505
+ parseCommitlint(message: string): Commitlint;
506
+ toCommitValue(hash: string, message: string): CommitValue;
507
+ protected resolveTag(tag?: string, fallback?: string): Promise<string>;
508
+ }
509
+
510
+ interface Options extends GitChangelogOptions {
511
+ repoUrl?: string;
512
+ }
513
+ declare class GitChangelogFormatter implements ChangelogFormatter {
514
+ protected options: Options & {
515
+ shell: Shell;
516
+ };
517
+ constructor(options: Options & {
518
+ shell: Shell;
519
+ });
520
+ format(commits: CommitValue[], options?: Options): string[];
521
+ formatCommit(commit: CommitValue, options?: Options): string;
522
+ foramtLink(target: string, url?: string): string;
523
+ formatCommitLink(target: string, url?: string): string;
524
+ formatScope(scope: string): string;
525
+ }
526
+
527
+ interface GithubChangelogProps extends GitChangelogProps {
528
+ mergePRcommit?: boolean;
529
+ githubRootPath?: string;
530
+ }
531
+
405
532
  declare function load<T>(pluginName: string): Promise<[string, T]>;
406
533
  declare function loaderPluginsFromPluginTuples<T extends Plugin<unknown>>(context: ReleaseContext, pluginsTuples: PluginTuple<PluginClass>[], maxLimit?: number): Promise<T[]>;
407
534
 
@@ -410,5 +537,5 @@ declare function factory<T, Args extends unknown[]>(Constructor: ConstructorType
410
537
 
411
538
  declare function reduceOptions(opts: OptionValues, commonKey?: string): OptionValues;
412
539
 
413
- export { Plugin, ReleaseContext, ReleaseLabel, ReleaseTask, factory, load, loaderPluginsFromPluginTuples, reduceOptions, tuple };
414
- export type { ConstructorType, DeepPartial, ExecutorReleaseContext, PackageJson, PluginClass, PluginConstructorParams, PluginTuple, ReleaseConfig, ReleaseContextOptions, ReleaseLabelCompare, ReleaseLabelOptions, ReleaseReturnValue, StepOption, TemplateContext };
540
+ export { CHANGELOG_ALL_FIELDS, GitChangelog, GitChangelogFormatter, Plugin, ReleaseContext, ReleaseLabel, ReleaseTask, factory, load, loaderPluginsFromPluginTuples, reduceOptions, tuple };
541
+ export type { ConstructorType, DeepPartial, ExecutorReleaseContext, GitChangelogProps, GithubChangelogProps, Options, PackageJson, PluginClass, PluginConstructorParams, PluginTuple, ReleaseConfig, ReleaseContextOptions, ReleaseLabelCompare, ReleaseLabelOptions, ReleaseReturnValue, StepOption, TemplateContext };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{FeScriptContext as t}from"@qlover/scripts-context";import{Env as e}from"@qlover/env-loader";import{AsyncExecutor as r}from"@qlover/fe-corekit";import{Octokit as n}from"@octokit/rest";import{resolve as o,join as i,parse as s}from"node:path";import{readFileSync as a,existsSync as c,writeFileSync as u}from"fs";import{join as h}from"path";import{createRequire as l}from"node:module";import{pathToFileURL as g}from"node:url";import f from"p-limit";var p,m,d,y,b,v,w,R,k,x,_,P,C,$,N,j,E,B,T,O,A,S,L,U,W,F,M,G,H,I,D,z,q,V,J,Y,K,Q,X,Z,tt,et,rt,nt,ot,it,st,at,ct,ut,ht,lt,gt,ft,pt,mt,dt,yt,bt,vt,wt,Rt,kt,xt,_t,Pt,Ct,$t,Nt,jt,Et,Bt,Tt,Ot,At,St,Lt,Ut,Wt,Ft,Mt,Gt,Ht,It,Dt,zt,qt,Vt,Jt,Yt,Kt,Qt,Xt,Zt,te,ee,re,ne,oe="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function ie(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function se(){if(m)return p;return m=1,p=function(){this.__data__=[],this.size=0}}function ae(){if(y)return d;return y=1,d=function(t,e){return t===e||t!=t&&e!=e}}function ce(){if(v)return b;v=1;var t=ae();return b=function(e,r){for(var n=e.length;n--;)if(t(e[n][0],r))return n;return-1}}function ue(){if(R)return w;R=1;var t=ce(),e=Array.prototype.splice;return w=function(r){var n=this.__data__,o=t(n,r);return!(o<0)&&(o==n.length-1?n.pop():e.call(n,o,1),--this.size,!0)}}function he(){if(x)return k;x=1;var t=ce();return k=function(e){var r=this.__data__,n=t(r,e);return n<0?void 0:r[n][1]}}function le(){if(P)return _;P=1;var t=ce();return _=function(e){return t(this.__data__,e)>-1}}function ge(){if($)return C;$=1;var t=ce();return C=function(e,r){var n=this.__data__,o=t(n,e);return o<0?(++this.size,n.push([e,r])):n[o][1]=r,this}}function fe(){if(j)return N;j=1;var t=se(),e=ue(),r=he(),n=le(),o=ge();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,N=i}function pe(){if(B)return E;B=1;var t=fe();return E=function(){this.__data__=new t,this.size=0}}function me(){if(O)return T;return O=1,T=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}}function de(){if(S)return A;return S=1,A=function(t){return this.__data__.get(t)}}function ye(){if(U)return L;return U=1,L=function(t){return this.__data__.has(t)}}function be(){if(F)return W;F=1;var t="object"==typeof oe&&oe&&oe.Object===Object&&oe;return W=t}function ve(){if(G)return M;G=1;var t=be(),e="object"==typeof self&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return M=r}function we(){if(I)return H;I=1;var t=ve().Symbol;return H=t}function Re(){if(z)return D;z=1;var t=we(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,o=t?t.toStringTag:void 0;return D=function(t){var e=r.call(t,o),i=t[o];try{t[o]=void 0;var s=!0}catch(t){}var a=n.call(t);return s&&(e?t[o]=i:delete t[o]),a}}function ke(){if(V)return q;V=1;var t=Object.prototype.toString;return q=function(e){return t.call(e)}}function xe(){if(Y)return J;Y=1;var t=we(),e=Re(),r=ke(),n=t?t.toStringTag:void 0;return J=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":n&&n in Object(t)?e(t):r(t)}}function _e(){if(Q)return K;return Q=1,K=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}}function Pe(){if(Z)return X;Z=1;var t=xe(),e=_e();return X=function(r){if(!e(r))return!1;var n=t(r);return"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n}}function Ce(){if(et)return tt;et=1;var t=ve()["__core-js_shared__"];return tt=t}function $e(){if(nt)return rt;nt=1;var t,e=Ce(),r=(t=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||""))?"Symbol(src)_1."+t:"";return rt=function(t){return!!r&&r in t}}function Ne(){if(it)return ot;it=1;var t=Function.prototype.toString;return ot=function(e){if(null!=e){try{return t.call(e)}catch(t){}try{return e+""}catch(t){}}return""}}function je(){if(at)return st;at=1;var t=Pe(),e=$e(),r=_e(),n=Ne(),o=/^\[object .+?Constructor\]$/,i=Function.prototype,s=Object.prototype,a=i.toString,c=s.hasOwnProperty,u=RegExp("^"+a.call(c).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return st=function(i){return!(!r(i)||e(i))&&(t(i)?u:o).test(n(i))}}function Ee(){if(ut)return ct;return ut=1,ct=function(t,e){return null==t?void 0:t[e]}}function Be(){if(lt)return ht;lt=1;var t=je(),e=Ee();return ht=function(r,n){var o=e(r,n);return t(o)?o:void 0}}function Te(){if(ft)return gt;ft=1;var t=Be()(ve(),"Map");return gt=t}function Oe(){if(mt)return pt;mt=1;var t=Be()(Object,"create");return pt=t}function Ae(){if(yt)return dt;yt=1;var t=Oe();return dt=function(){this.__data__=t?t(null):{},this.size=0}}function Se(){if(vt)return bt;return vt=1,bt=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}}function Le(){if(Rt)return wt;Rt=1;var t=Oe(),e=Object.prototype.hasOwnProperty;return wt=function(r){var n=this.__data__;if(t){var o=n[r];return"__lodash_hash_undefined__"===o?void 0:o}return e.call(n,r)?n[r]:void 0}}function Ue(){if(xt)return kt;xt=1;var t=Oe(),e=Object.prototype.hasOwnProperty;return kt=function(r){var n=this.__data__;return t?void 0!==n[r]:e.call(n,r)}}function We(){if(Pt)return _t;Pt=1;var t=Oe();return _t=function(e,r){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=t&&void 0===r?"__lodash_hash_undefined__":r,this}}function Fe(){if($t)return Ct;$t=1;var t=Ae(),e=Se(),r=Le(),n=Ue(),o=We();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,Ct=i}function Me(){if(jt)return Nt;jt=1;var t=Fe(),e=fe(),r=Te();return Nt=function(){this.size=0,this.__data__={hash:new t,map:new(r||e),string:new t}}}function Ge(){if(Bt)return Et;return Bt=1,Et=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}}function He(){if(Ot)return Tt;Ot=1;var t=Ge();return Tt=function(e,r){var n=e.__data__;return t(r)?n["string"==typeof r?"string":"hash"]:n.map}}function Ie(){if(St)return At;St=1;var t=He();return At=function(e){var r=t(this,e).delete(e);return this.size-=r?1:0,r}}function De(){if(Ut)return Lt;Ut=1;var t=He();return Lt=function(e){return t(this,e).get(e)}}function ze(){if(Ft)return Wt;Ft=1;var t=He();return Wt=function(e){return t(this,e).has(e)}}function qe(){if(Gt)return Mt;Gt=1;var t=He();return Mt=function(e,r){var n=t(this,e),o=n.size;return n.set(e,r),this.size+=n.size==o?0:1,this}}function Ve(){if(It)return Ht;It=1;var t=Me(),e=Ie(),r=De(),n=ze(),o=qe();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,Ht=i}function Je(){if(zt)return Dt;zt=1;var t=fe(),e=Te(),r=Ve();return Dt=function(n,o){var i=this.__data__;if(i instanceof t){var s=i.__data__;if(!e||s.length<199)return s.push([n,o]),this.size=++i.size,this;i=this.__data__=new r(s)}return i.set(n,o),this.size=i.size,this}}function Ye(){if(Vt)return qt;Vt=1;var t=fe(),e=pe(),r=me(),n=de(),o=ye(),i=Je();function s(e){var r=this.__data__=new t(e);this.size=r.size}return s.prototype.clear=e,s.prototype.delete=r,s.prototype.get=n,s.prototype.has=o,s.prototype.set=i,qt=s}function Ke(){if(Yt)return Jt;Yt=1;var t=Be(),e=function(){try{var e=t(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();return Jt=e}function Qe(){if(Qt)return Kt;Qt=1;var t=Ke();return Kt=function(e,r,n){"__proto__"==r&&t?t(e,r,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[r]=n}}function Xe(){if(Zt)return Xt;Zt=1;var t=Qe(),e=ae();return Xt=function(r,n,o){(void 0!==o&&!e(r[n],o)||void 0===o&&!(n in r))&&t(r,n,o)}}function Ze(){if(ee)return te;return ee=1,te=function(t){return function(e,r,n){for(var o=-1,i=Object(e),s=n(e),a=s.length;a--;){var c=s[t?a:++o];if(!1===r(i[c],c,i))break}return e}}}function tr(){if(ne)return re;ne=1;var t=Ze()();return re=t}var er,rr,nr,or,ir,sr,ar,cr,ur,hr,lr,gr,fr,pr,mr,dr,yr,br,vr,wr,Rr,kr,xr,_r,Pr,Cr,$r,Nr,jr,Er,Br,Tr,Or,Ar={exports:{}};function Sr(){return er||(er=1,t=Ar,e=Ar.exports,r=ve(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n?r.Buffer:void 0,s=i?i.allocUnsafe:void 0,t.exports=function(t,e){if(e)return t.slice();var r=t.length,n=s?s(r):new t.constructor(r);return t.copy(n),n}),Ar.exports;var t,e,r,n,o,i,s}function Lr(){if(nr)return rr;nr=1;var t=ve().Uint8Array;return rr=t}function Ur(){if(ir)return or;ir=1;var t=Lr();return or=function(e){var r=new e.constructor(e.byteLength);return new t(r).set(new t(e)),r}}function Wr(){if(ar)return sr;ar=1;var t=Ur();return sr=function(e,r){var n=r?t(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}}function Fr(){if(ur)return cr;return ur=1,cr=function(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r<n;)e[r]=t[r];return e}}function Mr(){if(lr)return hr;lr=1;var t=_e(),e=Object.create,r=function(){function r(){}return function(n){if(!t(n))return{};if(e)return e(n);r.prototype=n;var o=new r;return r.prototype=void 0,o}}();return hr=r}function Gr(){if(fr)return gr;return fr=1,gr=function(t,e){return function(r){return t(e(r))}}}function Hr(){if(mr)return pr;mr=1;var t=Gr()(Object.getPrototypeOf,Object);return pr=t}function Ir(){if(yr)return dr;yr=1;var t=Object.prototype;return dr=function(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||t)}}function Dr(){if(vr)return br;vr=1;var t=Mr(),e=Hr(),r=Ir();return br=function(n){return"function"!=typeof n.constructor||r(n)?{}:t(e(n))}}function zr(){if(Rr)return wr;return Rr=1,wr=function(t){return null!=t&&"object"==typeof t}}function qr(){if(xr)return kr;xr=1;var t=xe(),e=zr();return kr=function(r){return e(r)&&"[object Arguments]"==t(r)}}function Vr(){if(Pr)return _r;Pr=1;var t=qr(),e=zr(),r=Object.prototype,n=r.hasOwnProperty,o=r.propertyIsEnumerable,i=t(function(){return arguments}())?t:function(t){return e(t)&&n.call(t,"callee")&&!o.call(t,"callee")};return _r=i}function Jr(){if($r)return Cr;$r=1;var t=Array.isArray;return Cr=t}function Yr(){if(jr)return Nr;jr=1;return Nr=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}}function Kr(){if(Br)return Er;Br=1;var t=Pe(),e=Yr();return Er=function(r){return null!=r&&e(r.length)&&!t(r)}}function Qr(){if(Or)return Tr;Or=1;var t=Kr(),e=zr();return Tr=function(r){return e(r)&&t(r)}}var Xr,Zr,tn,en,rn,nn,on,sn,an,cn={exports:{}};function un(){if(Zr)return Xr;return Zr=1,Xr=function(){return!1}}function hn(){return tn||(tn=1,function(t,e){var r=ve(),n=un(),o=e&&!e.nodeType&&e,i=o&&t&&!t.nodeType&&t,s=i&&i.exports===o?r.Buffer:void 0,a=(s?s.isBuffer:void 0)||n;t.exports=a}(cn,cn.exports)),cn.exports}function ln(){if(rn)return en;rn=1;var t=xe(),e=Hr(),r=zr(),n=Function.prototype,o=Object.prototype,i=n.toString,s=o.hasOwnProperty,a=i.call(Object);return en=function(n){if(!r(n)||"[object Object]"!=t(n))return!1;var o=e(n);if(null===o)return!0;var c=s.call(o,"constructor")&&o.constructor;return"function"==typeof c&&c instanceof c&&i.call(c)==a}}function gn(){if(on)return nn;on=1;var t=xe(),e=Yr(),r=zr(),n={};return n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1,nn=function(o){return r(o)&&e(o.length)&&!!n[t(o)]}}function fn(){if(an)return sn;return an=1,sn=function(t){return function(e){return t(e)}}}var pn,mn,dn,yn,bn,vn,wn,Rn,kn,xn,_n,Pn,Cn,$n,Nn,jn,En,Bn,Tn,On,An,Sn,Ln,Un,Wn,Fn,Mn,Gn,Hn,In,Dn,zn,qn,Vn,Jn,Yn,Kn,Qn,Xn,Zn,to,eo,ro,no,oo,io,so,ao,co,uo={exports:{}};function ho(){return pn||(pn=1,t=uo,e=uo.exports,r=be(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n&&r.process,s=function(){try{var t=o&&o.require&&o.require("util").types;return t||i&&i.binding&&i.binding("util")}catch(t){}}(),t.exports=s),uo.exports;var t,e,r,n,o,i,s}function lo(){if(dn)return mn;dn=1;var t=gn(),e=fn(),r=ho(),n=r&&r.isTypedArray,o=n?e(n):t;return mn=o}function go(){if(bn)return yn;return bn=1,yn=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}}function fo(){if(wn)return vn;wn=1;var t=Qe(),e=ae(),r=Object.prototype.hasOwnProperty;return vn=function(n,o,i){var s=n[o];r.call(n,o)&&e(s,i)&&(void 0!==i||o in n)||t(n,o,i)}}function po(){if(kn)return Rn;kn=1;var t=fo(),e=Qe();return Rn=function(r,n,o,i){var s=!o;o||(o={});for(var a=-1,c=n.length;++a<c;){var u=n[a],h=i?i(o[u],r[u],u,o,r):void 0;void 0===h&&(h=r[u]),s?e(o,u,h):t(o,u,h)}return o}}function mo(){if(_n)return xn;return _n=1,xn=function(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n}}function yo(){if(Cn)return Pn;Cn=1;var t=/^(?:0|[1-9]\d*)$/;return Pn=function(e,r){var n=typeof e;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e<r}}function bo(){if(Nn)return $n;Nn=1;var t=mo(),e=Vr(),r=Jr(),n=hn(),o=yo(),i=lo(),s=Object.prototype.hasOwnProperty;return $n=function(a,c){var u=r(a),h=!u&&e(a),l=!u&&!h&&n(a),g=!u&&!h&&!l&&i(a),f=u||h||l||g,p=f?t(a.length,String):[],m=p.length;for(var d in a)!c&&!s.call(a,d)||f&&("length"==d||l&&("offset"==d||"parent"==d)||g&&("buffer"==d||"byteLength"==d||"byteOffset"==d)||o(d,m))||p.push(d);return p}}function vo(){if(En)return jn;return En=1,jn=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}}function wo(){if(Tn)return Bn;Tn=1;var t=_e(),e=Ir(),r=vo(),n=Object.prototype.hasOwnProperty;return Bn=function(o){if(!t(o))return r(o);var i=e(o),s=[];for(var a in o)("constructor"!=a||!i&&n.call(o,a))&&s.push(a);return s}}function Ro(){if(An)return On;An=1;var t=bo(),e=wo(),r=Kr();return On=function(n){return r(n)?t(n,!0):e(n)}}function ko(){if(Ln)return Sn;Ln=1;var t=po(),e=Ro();return Sn=function(r){return t(r,e(r))}}function xo(){if(Wn)return Un;Wn=1;var t=Xe(),e=Sr(),r=Wr(),n=Fr(),o=Dr(),i=Vr(),s=Jr(),a=Qr(),c=hn(),u=Pe(),h=_e(),l=ln(),g=lo(),f=go(),p=ko();return Un=function(m,d,y,b,v,w,R){var k=f(m,y),x=f(d,y),_=R.get(x);if(_)t(m,y,_);else{var P=w?w(k,x,y+"",m,d,R):void 0,C=void 0===P;if(C){var $=s(x),N=!$&&c(x),j=!$&&!N&&g(x);P=x,$||N||j?s(k)?P=k:a(k)?P=n(k):N?(C=!1,P=e(x,!0)):j?(C=!1,P=r(x,!0)):P=[]:l(x)||i(x)?(P=k,i(k)?P=p(k):h(k)&&!u(k)||(P=o(x))):C=!1}C&&(R.set(x,P),v(P,x,b,w,R),R.delete(x)),t(m,y,P)}}}function _o(){if(Mn)return Fn;Mn=1;var t=Ye(),e=Xe(),r=tr(),n=xo(),o=_e(),i=Ro(),s=go();return Fn=function a(c,u,h,l,g){c!==u&&r(u,(function(r,i){if(g||(g=new t),o(r))n(c,u,i,h,a,l,g);else{var f=l?l(s(c,i),r,i+"",c,u,g):void 0;void 0===f&&(f=r),e(c,i,f)}}),i)},Fn}function Po(){if(Hn)return Gn;return Hn=1,Gn=function(t){return t}}function Co(){if(Dn)return In;return Dn=1,In=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}}function $o(){if(qn)return zn;qn=1;var t=Co(),e=Math.max;return zn=function(r,n,o){return n=e(void 0===n?r.length-1:n,0),function(){for(var i=arguments,s=-1,a=e(i.length-n,0),c=Array(a);++s<a;)c[s]=i[n+s];s=-1;for(var u=Array(n+1);++s<n;)u[s]=i[s];return u[n]=o(c),t(r,this,u)}},zn}function No(){if(Jn)return Vn;return Jn=1,Vn=function(t){return function(){return t}}}function jo(){if(Kn)return Yn;Kn=1;var t=No(),e=Ke();return Yn=e?function(r,n){return e(r,"toString",{configurable:!0,enumerable:!1,value:t(n),writable:!0})}:Po()}function Eo(){if(Xn)return Qn;Xn=1;var t=Date.now;return Qn=function(e){var r=0,n=0;return function(){var o=t(),i=16-(o-n);if(n=o,i>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}},Qn}function Bo(){if(to)return Zn;to=1;var t=jo(),e=Eo()(t);return Zn=e}function To(){if(ro)return eo;ro=1;var t=Po(),e=$o(),r=Bo();return eo=function(n,o){return r(e(n,o,t),n+"")}}function Oo(){if(oo)return no;oo=1;var t=ae(),e=Kr(),r=yo(),n=_e();return no=function(o,i,s){if(!n(s))return!1;var a=typeof i;return!!("number"==a?e(s)&&r(i,s.length):"string"==a&&i in s)&&t(s[i],o)}}function Ao(){if(so)return io;so=1;var t=To(),e=Oo();return io=function(r){return t((function(t,n){var o=-1,i=n.length,s=i>1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(s=r.length>3&&"function"==typeof s?(i--,s):void 0,a&&e(n[0],n[1],a)&&(s=i<3?void 0:s,i=1),t=Object(t);++o<i;){var c=n[o];c&&r(t,c,o,s)}return t}))}}function So(){if(co)return ao;co=1;var t=_o(),e=Ao()((function(e,r,n){t(e,r,n)}));return ao=e}var Lo,Uo,Wo,Fo,Mo,Go,Ho,Io,Do,zo,qo,Vo,Jo,Yo,Ko,Qo,Xo,Zo,ti,ei,ri,ni,oi,ii,si=ie(So());function ai(){if(Uo)return Lo;Uo=1;var t=xe(),e=zr();return Lo=function(r){return"symbol"==typeof r||e(r)&&"[object Symbol]"==t(r)}}function ci(){if(Fo)return Wo;Fo=1;var t=Jr(),e=ai(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;return Wo=function(o,i){if(t(o))return!1;var s=typeof o;return!("number"!=s&&"symbol"!=s&&"boolean"!=s&&null!=o&&!e(o))||(n.test(o)||!r.test(o)||null!=i&&o in Object(i))}}function ui(){if(Go)return Mo;Go=1;var t=Ve();function e(r,n){if("function"!=typeof r||null!=n&&"function"!=typeof n)throw new TypeError("Expected a function");var o=function(){var t=arguments,e=n?n.apply(this,t):t[0],i=o.cache;if(i.has(e))return i.get(e);var s=r.apply(this,t);return o.cache=i.set(e,s)||i,s};return o.cache=new(e.Cache||t),o}return e.Cache=t,Mo=e}function hi(){if(Io)return Ho;Io=1;var t=ui();return Ho=function(e){var r=t(e,(function(t){return 500===n.size&&n.clear(),t})),n=r.cache;return r}}function li(){if(zo)return Do;zo=1;var t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,e=/\\(\\)?/g,r=hi()((function(r){var n=[];return 46===r.charCodeAt(0)&&n.push(""),r.replace(t,(function(t,r,o,i){n.push(o?i.replace(e,"$1"):r||t)})),n}));return Do=r}function gi(){if(Vo)return qo;return Vo=1,qo=function(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r<n;)o[r]=e(t[r],r,t);return o}}function fi(){if(Yo)return Jo;Yo=1;var t=we(),e=gi(),r=Jr(),n=ai(),o=t?t.prototype:void 0,i=o?o.toString:void 0;return Jo=function t(o){if("string"==typeof o)return o;if(r(o))return e(o,t)+"";if(n(o))return i?i.call(o):"";var s=o+"";return"0"==s&&1/o==-1/0?"-0":s},Jo}function pi(){if(Qo)return Ko;Qo=1;var t=fi();return Ko=function(e){return null==e?"":t(e)}}function mi(){if(Zo)return Xo;Zo=1;var t=Jr(),e=ci(),r=li(),n=pi();return Xo=function(o,i){return t(o)?o:e(o,i)?[o]:r(n(o))}}function di(){if(ei)return ti;ei=1;var t=ai();return ti=function(e){if("string"==typeof e||t(e))return e;var r=e+"";return"0"==r&&1/e==-1/0?"-0":r}}function yi(){if(ni)return ri;ni=1;var t=mi(),e=di();return ri=function(r,n){for(var o=0,i=(n=t(n,r)).length;null!=r&&o<i;)r=r[e(n[o++])];return o&&o==i?r:void 0}}function bi(){if(ii)return oi;ii=1;var t=yi();return oi=function(e,r,n){var o=null==e?void 0:t(e,r);return void 0===o?n:o}}var vi=ie(bi());const wi="package.json",Ri=[".env.local",".env"];class ki extends t{_env;shared;constructor(t){super(t),this._env=e.searchEnv({logger:this.logger,preloadList:this.feConfig.envOrder||Ri}),this.shared=Object.assign({},this.feConfig.release,this.getDefaultShreadOptions(t.shared))}getDefaultShreadOptions(t){return{rootPath:process.cwd(),sourceBranch:this._env.get("FE_RELEASE_BRANCH")||this._env.get("FE_RELEASE_SOURCE_BRANCH")||"master",releaseEnv:this._env.get("FE_RELEASE_ENV")||this._env.get("NODE_ENV")||"development",...t}}get rootPath(){return this.shared.rootPath}get sourceBranch(){return this.shared.sourceBranch}get releaseEnv(){return this.shared.releaseEnv}get env(){return this._env}get workspaces(){return this.getConfig("workspaces.workspaces")}get workspace(){return this.getConfig("workspaces.workspace")}setWorkspaces(t){this.options.workspaces={...this.options.workspaces,workspaces:t}}setConfig(t){this.options=si(this.options,t)}getConfig(t,e){return vi(this.options,t,e)}setShared(t){this.shared=si(this.shared,t)}getPkg(t,e){const r=this.workspace?.packageJson;if(!r)throw new Error("package.json is not found");return t?vi(r,t,e):r}getTemplateContext(){return{...this.shared,...this.workspace,publishPath:this.workspace?.path||"",env:this.releaseEnv,branch:this.sourceBranch}}async runChangesetsCli(t,e){let r="pnpm";try{await this.shell.exec("pnpm -v",{dryRun:!1})}catch{r="npx"}return await this.shell.exec([r,"changeset",t,...e??[]])}}function xi(t,...e){return[t,...e]}const _i={maxWorkspace:3,multiWorkspaceSeparator:"_",workspaceVersionSeparator:"@",batchBranchName:"batch-${releaseName}-${length}-packages-${timestamp}",batchTagName:"batch-${length}-packages-${timestamp}"};class Pi{shell;logger;config;constructor(t,e,r={}){this.shell=t,this.logger=e,this.config={..._i,...r}}getReleaseBranchName(t,e,r){const n=r.branchName||"release-${tagName}";if("string"!=typeof n)throw new Error("Branch name template is not a string");return this.logger.debug("Release Branch template is:",n),this.shell.format(n,{pkgName:t,releaseName:t,tagName:e,...r})}getBatchReleaseBranchName(t,e,r,n){const o=this.config.batchBranchName;if("string"!=typeof o)throw new Error("Branch name template is not a string");return this.logger.debug("Release Batch Branch template is:",o),this.shell.format(o,{pkgName:t,releaseName:t,tagName:e,...r,length:n,timestamp:Date.now()})}getReleaseName(t){if(1===t.length)return t[0].name;const{maxWorkspace:e,multiWorkspaceSeparator:r,workspaceVersionSeparator:n}=this.config;return t.slice(0,e).map((({name:t,version:e})=>`${t}${n}${e}`)).join(r)}getReleaseTagName(t){if(1===t.length)return t[0].version;const{batchTagName:e}=this.config;return this.shell.format(e,{length:t.length,timestamp:Date.now()})}getReleaseBranchParams(t,e){const r=this.getReleaseTagName(t),n=this.getReleaseName(t);return{tagName:r,releaseBranch:t.length>1?this.getBatchReleaseBranchName(n,r,e,t.length):this.getReleaseBranchName(n,r,e)}}getPRTitle(t,e){const r=this.config.PRTitle||"Release ${env} ${pkgName} ${tagName}";return this.shell.format(r,{...e,tagName:t.tagName,pkgName:t.releaseBranch})}getPRBody(t,e,r){const n=this.config.PRBody,o=t.length>1?t.map((t=>this.shell.format("\n## ${name} ${version}\n${changelog}\n",t))).join("\n"):t[0].changelog,{workspaceVersionSeparator:i}=this.config,s=1===t.length?e.tagName:t.map((t=>`${t.name}${i}${t.version}`)).join(" ");return this.shell.format(n,{...r,tagName:s,changelog:o})}}class Ci{context;_octokit=null;constructor(t){this.context=t}getGitHubUserInfo(){const{authorName:t,repoName:e}=this.context.shared;if(!t||!e)throw new Error("Author name or repo name is not set");return{owner:t,repo:e}}getToken(){const{tokenRef:t="GITHUB_TOKEN"}=this.context.getConfig("githubPR"),e=this.context.env.get(t);if(!e)throw new Error(`Token is not set. Please set ${t} environment variable.`);return e}get octokit(){if(this._octokit)return this._octokit;const{timeout:t}=this.context.getConfig("githubPR"),e={auth:this.getToken(),request:{timeout:t}};return this._octokit=new n(e),this._octokit}get logger(){return this.context.logger}get shell(){return this.context.shell}get autoMergeType(){return this.context.shared.autoMergeType||"squash"}get dryRunPRNumber(){return this.context.getConfig("githubPR.dryRunPRNumber","999999")}get autoMergeReleasePR(){return this.context.shared.autoMergeReleasePR||false}async mergePR(t,e){if(!t)return void this.logger.error("Failed to create Pull Request.",t);const r=this.autoMergeType;if(this.context.dryRun){const{repoName:n,authorName:o}=this.context.shared;this.logger.info(`[DRY RUN] Would merge PR #${t} with method '${r}' in repo ${o}/${n}, branch ${e}`)}else await this.octokit.rest.pulls.merge({...this.getGitHubUserInfo(),pull_number:Number(t),merge_method:r})}async checkedPR(t,e){try{await this.octokit.rest.pulls.get({...this.getGitHubUserInfo(),pull_number:Number(t)}),await this.octokit.rest.git.deleteRef({...this.getGitHubUserInfo(),ref:`heads/${e}`}),this.logger.info(`Branch ${e} has been deleted`)}catch(r){if(404===r.status)return void this.logger.warn(`PR #${t} or branch ${e} not found`);throw this.logger.error("Failed to check PR or delete branch",r),r}}async createReleasePRLabel(){const t=this.context.shared.label;if(!(t&&t.name&&t.description&&t.color))throw new Error("Label is not valid, skipping creation");if(this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR label with:",t),t;try{const e=await this.octokit.rest.issues.createLabel({...this.getGitHubUserInfo(),name:t.name,description:t.description,color:t.color.replace("#","")});return this.logger.debug("Create PR label Success",e),t}catch(e){if(422===e.status)return this.logger.warn(`Label ${t.name} already exists, skipping!`),t;throw this.logger.error("Create PR label Failed",e),e}}async createReleasePR(t){if(this.context.getConfig("githubPR.dryRunCreatePR")||this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR with:",{...t,labels:t.labels}),this.dryRunPRNumber;try{const e=await this.octokit.rest.pulls.create({...this.getGitHubUserInfo(),...t}),r=e.data.number;if(!r)throw new Error("CreateReleasePR Failed, prNumber is empty");if(this.logger.debug("Create PR Success",[e?.url]),t.labels&&t.labels.length){const e=await this.octokit.rest.issues.addLabels({...this.getGitHubUserInfo(),issue_number:r,labels:t.labels});this.logger.debug("Add PR label Success",[e.url])}return r.toString()}catch(t){if(422===t.status&&t.message.includes("already exists")){this.logger.warn("PR already exists");const e=t.message.match(/pull request #(\d+)/);return e?e[1]:""}throw this.logger.error("Failed to create PR",t),t}}truncateBody(t){return t&&t.length>=124e3?t.substring(0,124e3)+"...":t}getOctokitReleaseOptions(t){const{releaseName:e,draft:r=!1,preRelease:n=!1,autoGenerate:o=!1,makeLatest:i=!0,releaseNotes:s,discussionCategoryName:a}=this.context.getConfig("githubPR"),c=e,u=o?"":this.truncateBody(String(s));return{name:c,make_latest:i.toString(),body:u,draft:r,prerelease:n,generate_release_notes:o,discussion_category_name:a,tag_name:"",...t,...this.getGitHubUserInfo()}}async createRelease(t){const e=this.getOctokitReleaseOptions({tag_name:t.tagName,body:t.changelog});if(e.name=this.shell.format(e.name,t),this.logger.log(`[DRY RUN] octokit repos.createRelease "${e.name}" (${e.tag_name})`,{isDryRun:this.context.dryRun}),!e.tag_name)throw new Error("TagName is undefined");if(!this.context.dryRun)try{const t=await this.octokit.repos.createRelease(e);this.logger.debug(`[DONE] octokit repos.createRelease "${e.name}" (${e.tag_name}) (${t.headers.location})`)}catch(t){this.logger.error(`[FAILED] octokit repos.createRelease "${e.name}" (${e.tag_name})`,t)}}}var $i,Ni;function ji(){if(Ni)return $i;Ni=1;var t=xe(),e=Jr(),r=zr();return $i=function(n){return"string"==typeof n||!e(n)&&r(n)&&"[object String]"==t(n)}}var Ei=ie(ji());class Bi{context;pluginName;props;onlyOne=!0;constructor(t,e,r={}){this.context=t,this.pluginName=e,this.props=r,this.setConfig(this.getInitialProps(r))}getInitialProps(t){const e=this.context.options[this.pluginName],r=vi(this.context.shared,this.pluginName);return e||t?si({},r,t,e):{}}get logger(){return this.context.logger}get shell(){return this.context.shell}get options(){return this.context.getConfig(this.pluginName,{})}getEnv(t,e){return this.context.env.get(t)??e}enabled(t,e){return!0}getConfig(t,e){return t?this.context.getConfig([this.pluginName,...Array.isArray(t)?t:[t]],e):this.context.getConfig(this.pluginName,e)}setConfig(t){this.context.setConfig({[this.pluginName]:t})}onBefore(t){}onExec(t){}onSuccess(t){}onError(t){}async step({label:t,task:e}){this.logger.log(),this.logger.info(t),this.logger.log();try{const r=await e();return this.logger.info(`${t} - success`),r}catch(t){throw this.logger.error(t),t}}}class Ti extends Bi{async onBefore(){const t=await this.getUserInfo();if(!t)throw new Error("Failed to get repoInfo");let e=this.context.shared.currentBranch;e||(e=await this.getCurrentBranch()),e&&await this.context.shell.exec(`git checkout ${e}`,{dryRun:!1}),this.context.setShared({repoName:t.repoName,authorName:t.authorName,currentBranch:e})}async getCurrentBranch(){return await new Promise((t=>setTimeout(t,100))),this.context.shell.exec("git rev-parse --abbrev-ref HEAD",{dryRun:!1})}async getRemoteUrl(){return(await this.context.shell.exec("git config --get remote.origin.url",{dryRun:!1})).trim()}async getUserInfo(){let t;try{t=await this.getRemoteUrl()}catch{throw new Error("Failed to get git remote url. Please ensure this is a git repository with a valid remote.")}if(!t)throw new Error("Git remote URL is empty. Please set a valid GitHub remote URL.");this.context.logger.debug("repoUrl: ",t);const e=t.match(/github\.com[:/]([^/]+)\/([^/.]+)(?:\.git)?$/);if(!e)throw new Error("Invalid GitHub repository URL format. Please ensure the remote URL is from GitHub.");const[,r,n]=e;if(!this.isValidString(r)||!this.isValidString(n))throw new Error("Failed to extract owner or repository name from GitHub URL");return{repoName:n,authorName:r}}isValidString(t){return!!t&&Ei(t)}commit(t,e=[]){return this.context.shell.exec(["git","commit","--message",JSON.stringify(t),...e])}}class Oi{options;constructor(t){this.options=t}compare(t,e){return"function"==typeof this.options.compare?this.options.compare(t,e):t.startsWith(e)}toChangeLabel(t,e=this.options.changePackagesLabel){return e.replace("${name}",t)}toChangeLabels(t,e=this.options.changePackagesLabel){return t.map((t=>this.toChangeLabel(t,e)))}pick(t,e=this.options.packagesDirectories){const r=[];for(const n of e)for(const e of t)if(this.compare(e,n)){r.push(n);break}return r}}class Ai{static readJson(t){const e=a(t,"utf-8");return JSON.parse(e)}static toWorkspace(t,e){let{root:r,packageJson:n}=t;const o=t.path;if(!o)throw new Error("path is not required!");return r=r||h(e,o),n=n||Ai.readJson(h(r,wi)),{name:n.name,version:n.version,path:o,root:r,packageJson:n}}}class Si extends Bi{releaseTask=null;workspacesList=[];_skip=!1;releaseLabel;constructor(t){super(t,"workspaces"),this.releaseLabel=new Oi({changePackagesLabel:this.context.shared.changePackagesLabel||"change:${name}",packagesDirectories:this.context.shared.packagesDirectories||[]})}enabled(){return!this._skip&&!this.getConfig("skip")}async onBefore(){const t=this.getConfig("workspace");if(t)return this.logger.debug("Use the specified workspace",t),void this.setCurrentWorkspace(t,[]);const e=await this.getWorkspaces();if(this.getConfig("skipCheckPackage")||0===e.length)throw new Error("No changes to publish packages");const{publishPath:r}=this.context.shared;if(r){const t=e.find((t=>o(t.root)===o(r)));if(this.nextSkip(),!t)throw new Error(`No workspace found for: ${r}`);return this.logger.debug(`Workspace of ${r} find!`,i(t.root,wi)),void this.setCurrentWorkspace(t,[t])}const[n,...s]=e;this.workspacesList=s,this.setCurrentWorkspace(n,e)}nextSkip(){this._skip=!0,this.logger.debug("skip next workspace")}setReleaseTask(t){this.releaseTask=t}setCurrentWorkspace(t,e){this.context.setShared({publishPath:t.path}),this.setConfig({workspace:t,workspaces:e})}getPackages(){const t=this.context.shared.packagesDirectories;return Array.isArray(t)?t:[]}async getGitWorkspaces(){const t=this.context.sourceBranch,e=await this.shell.exec(`git diff --name-only origin/${t}...HEAD`,{dryRun:!1});return"string"==typeof e?e.split("\n"):[]}async getChangedPackages(t,e){if(this.logger.debug("changeLabels",e),Array.isArray(e)&&e.length>0){const r=t.filter((t=>{const r=this.releaseLabel.toChangeLabel(t);return e.includes(r)}));return this.logger.debug("changed by labels",r),r}const r=await this.getGitWorkspaces();return this.logger.debug("changed by git",r),this.releaseLabel.pick(r,t)}async getWorkspaces(){const t=this.getPackages();this.logger.debug("packages",t);const e=await this.getChangedPackages(t,this.getConfig("changeLabels"));this.setConfig({packages:t,changedPaths:e}),this.logger.debug("changedPaths",e);return e.map((t=>Ai.toWorkspace({path:t},this.context.rootPath)))}}function Li(t,...e){return"function"==typeof t&&t.prototype&&t.prototype.constructor===t?new t(...e):t(...e)}function Ui(t){return t.startsWith(".")?s(t).name:t}async function Wi(t){let e=null;try{e=(await import(t)).default}catch{try{e=(await import(i(process.cwd(),t))).default}catch{const r=l(process.cwd());e=(await import(g(r.resolve(t,{paths:[process.cwd()]})).href)).default}}return[Ui(t),e]}async function Fi(t,e,r=5){const n=f(r),o=e.map((([e,...r])=>n((()=>(async(e,...r)=>{if("string"==typeof e){const[,n]=await Wi(e);return Li(n,t,...r)}return Li(e,t,...r)})(e,...r)))));return Promise.all(o)}const Mi="- ${message}${prRef}\n",Gi="%H%n%s%n%b%n----------------------";class Hi{formatFlatCommits(t,e,r){const{types:n=[],formatTemplate:o=Mi}=e,i=new Map;for(const e of t){const t=e.type||"other";i.has(t)||i.set(t,[]),i.get(t).push(e)}const s=[];for(const{type:t,section:e,hidden:a}of n){if(a)continue;const n=i.get(t);if(n?.length){s.push(`${e||t}`);for(const t of n){const e=t.prNumber?` (#${t.prNumber})`:"";if(s.push(r.format(o,{...t,prRef:e})),t.body){const e=t.body.split("\n").map((t=>` ${t}`));s.push(e.join("\n"))}}}}return s}}class Ii{shell;options;constructor(t,e){this.shell=t,this.options=e}parseCommitBody(t){const e=t.split("\n").filter(Boolean),r=[];let n=null;for(let t=0;t<e.length;t++){const o=e[t].trim();if(o.startsWith("Co-authored-by:")||"---------"===o||0===o.length)continue;const i=o.match(/^\*?\s*(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);if(i&&o.startsWith("*")){n&&r.push({...n,body:n.bodyLines?.join("\n").trim()});const[t,e,s,a]=i;n={matchRaw:t,raw:o,type:e?.toLowerCase(),scope:s?.trim(),message:a.trim(),bodyLines:[]}}else n&&o.startsWith("-")&&n.bodyLines?.push(o)}return n&&r.push({...n,body:n.bodyLines?.join("\n").trim()}),r}async getPRCommits(t){const{from:e,to:r,directory:n,format:o}={...this.options,...t};return(await this.getLog({from:e,to:r,directory:n,format:o,noMerges:!1})).split("\n----------------------\n").filter(Boolean).map((t=>{const[e,r,...n]=t.trim().split("\n"),o=n.join("\n"),i=r.match(/\(#(\d+)\)/),s=r.replace(/\s*\(#\d+\)\s*$/,"").match(/^(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);return{hash:e,raw:{title:r,body:o},title:s?{type:s[1]?.toLowerCase(),scope:s[2]?.trim(),message:s[3].trim()}:{message:r.replace(/\s*\(#\d+\)\s*$/,"").trim()},commits:this.parseCommitBody(o),prNumber:i?.[1]}}))}async hasTag(t){return this.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((()=>!0)).catch((()=>!1))}async resolveTag(t,e){if(t)try{if(await this.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((t=>!!t.trim())))return t}catch{}return"root"===e?this.shell.exec("git rev-list --max-parents=0 HEAD",{dryRun:!1}).then((t=>t.trim())):"HEAD"}async getLog(t){const{directory:e,format:r=Gi,noMerges:n=!0}=t;if(t.logCommand)return this.shell.exec(t.logCommand,{dryRun:!1});const o=await this.resolveTag(t.from,"root"),i=await this.resolveTag(t.to,"HEAD"),s=`git log --pretty=format:"${r}" ${n?"--no-merges":""} ${o===i?i:`${o}..${i}`} ${e?`-- "${e}"`:""}`;return this.shell.exec(s.trim(),{dryRun:!1})}flatCommits(t){const e=[];for(const r of t){const t={title:r.title,raw:r.raw,hash:r.hash,prNumber:r.prNumber};if(Array.isArray(r.commits)&&r.commits.length>0){const n=r.commits.map((e=>({...e,prNumber:r.prNumber,hash:r.hash,parentHash:r.hash,parentCommit:t})));e.push(...n)}else e.push({raw:r.raw.title,type:r.title.type,scope:r.title.scope,message:r.title.message,body:r.raw.body,prNumber:r.prNumber,hash:r.hash,parentHash:r.hash,parentCommit:t})}return e}formatFlatCommits(t,e){const{types:r=[],formatter:n}={...this.options,...e};return(n||new Hi).formatFlatCommits(t,{types:r},this.shell)}}const Di=[xi(Si),xi(class extends Bi{constructor(t,e){super(t,"changelog",{increment:"patch",changesetRoot:".changeset",tagTemplate:"${name}@${version}",tagPrefix:"${name}",tagMatch:"${name}@*",...e})}get changesetRoot(){return h(this.context.rootPath,this.getConfig("changesetRoot"))}get changesetConfigPath(){return h(this.changesetRoot,"config.json")}enabled(){return!this.getConfig("skip")}async onBefore(){if(!c(this.changesetRoot))throw new Error(`Changeset directory ${this.changesetRoot} does not exist`);this.logger.debug(`${this.changesetRoot} exists`)}mergeWorkspaces(t){return t.map((t=>{const e=Ai.toWorkspace({path:t.path},this.context.rootPath),r={...t,version:e.version};return r.tagName=this.generateTagName(r),r}))}async onExec(){const t=await this.step({label:"Generate Changelogs",task:()=>Promise.all(this.context.workspaces.map((t=>this.generateChangelog(t))))});this.getConfig("skipChangeset")?this.logger.debug("Skip generate changeset files"):(await this.step({label:"Changeset Version",task:()=>Promise.all(t.map((t=>this.generateChangesetFile(t))))}),await this.context.runChangesetsCli("version",["--no-changelog","--update-dependencies"]),this.getConfig("ignoreNonUpdatedPackages")&&await this.restoreIgnorePackages());const e=this.mergeWorkspaces(t);this.logger.debug("new workspaces",e),this.context.setWorkspaces(e)}async restoreIgnorePackages(){const{changedPaths:t=[],packages:e=[]}=this.context.getConfig("workspaces"),r=e.filter((e=>!t.includes(e))).map((t=>Ai.toWorkspace({path:t},this.context.rootPath).path));this.logger.debug("noChangedPackages",r),await this.shell.exec(["git","restore",...r])}getTagPrefix(t){return this.shell.format(this.getConfig("tagPrefix"),t)}async createChangelog({lastTag:t,workspace:e}){const r=new Ii(this.context.shell,{...this.getConfig("gitChangelogOptions"),from:t,directory:e.path});return r.getPRCommits().then((t=>{const e=r.flatCommits(t);return r.formatFlatCommits(e).join("\n")}))}async generateChangelog(t){const e=await this.getTagName(t);this.logger.debug("tagName is:",e);const r=await this.createChangelog({workspace:t,lastTag:e});return{...t,lastTag:e,changelog:r}}generateTagName(t){try{const e=this.getConfig("tagTemplate");return this.shell.format(e,t)}catch(e){return console.error(`Error generating tag name for ${t.name}:`,e),`${t.name}-v0.0.0`}}async getTagName(t){try{const e=this.generateTagName(t),r=this.shell.format(this.getConfig("tagMatch"),t),n=await this.shell.exec(`git for-each-ref --sort=-creatordate --format "%(refname:short)|%(creatordate:iso8601)" "refs/tags/${r}"`,{dryRun:!1});if(!n)return e;const o=n.split("\n").filter(Boolean);if(0===o.length)return e;return o[0].split("|")[0]}catch(e){console.error(`Error getting tag for ${t.name}:`,e);return this.generateTagName(t)}}getIncrement(){const t=this.context.getConfig("workspaces.changeLabels");if(Array.isArray(t)&&t.length>0){if(t.includes("increment:major"))return"major";if(t.includes("increment:minor"))return"minor"}return this.getConfig("increment","patch")}async generateChangesetFile(t){const{name:e,version:r}=t,n=`${e}-${r}`.replace(/[\/\\]/g,"_"),o=h(this.changesetRoot,`${n}.md`),i=this.getIncrement();this.logger.debug("increment is:",[i]);const s=this.shell.format("---\n'${name}': '${increment}'\n---\n\n${changelog}",{...t,increment:i});if(this.context.dryRun)return this.logger.info(`Changeset [${o}] will be created, content is:`),void this.logger.log(s);c(o)?this.logger.info(`Changeset ${n} already exists`):u(o,s,"utf-8")}},{}),xi(class extends Ti{context;releaseParams;githubManager;constructor(t,e){super(t,"githubPR",{releaseName:"Release ${name} v${version}",...e}),this.context=t,this.githubManager=new Ci(this.context),this.releaseParams=new Pi(t.shell,t.logger,{PRTitle:this.getConfig("PRTitle",this.context.shared.PRTitle),PRBody:this.getConfig("PRBody",this.context.shared.PRBody),...this.props})}enabled(t){return!this.getConfig("skip")&&("onExec"===t?!this.isPublish:"onSuccess"!==t||this.isPublish)}get isPublish(){return!this.getConfig("releasePR")}async isGithubRepository(){try{return(await this.getRemoteUrl()).includes("github.com")}catch{return!1}}async onBefore(){this.logger.debug("GithubPR onBefore");if(!await this.isGithubRepository())throw new Error("Current repository is not a GitHub repository. GitHub PR workflow is only available for GitHub repositories.");if(await super.onBefore(),this.isPublish){const t=this.getEnv("NPM_TOKEN");if(!t)throw new Error("NPM_TOKEN is not set");await this.shell.exec(`npm config set //registry.npmjs.org/:_authToken=${t}`)}}async onExec(){const t=this.context.workspaces;await this.step({label:"Release Commit",task:()=>this.relesaeCommit(t)});const e=await this.step({label:"Create Release Branch",task:()=>this.createReleaseBranch(t)});await this.releasePullRequest(t,e)}async onSuccess(){const t=this.context.workspaces;this.getConfig("dryRunCreatePR")||(await this.context.runChangesetsCli("publish"),await this.shell.exec("git push origin --tags")),await this.step({label:"Release Github",task:()=>Promise.all(t.map((t=>(this.logger.debug(t),this.githubManager.createRelease(t)))))})}async relesaeCommit(t){const e=this.getConfig("commitArgs",[]);if(1===t.length)return await this.shell.exec("git add ."),void await this.commitWorkspace(t[0],e);await this.shell.exec("git add .");const r=`chore(tag): ${t.map((t=>`${t.name} v${t.version}`)).join(",")}`;await this.commit(r,e)}async releasePullRequest(t,e){const r=await this.step({label:"Create Release PR",task:()=>this.createReleasePR(t,e)});if(this.githubManager.autoMergeReleasePR){const{releaseBranch:t}=e;return await this.step({label:`Merge Release PR(${r})`,task:()=>this.githubManager.mergePR(r,t)}),void await this.step({label:`Checked Release PR(${r})`,task:()=>this.githubManager.checkedPR(r,t)})}this.logger.info(`Please manually merge PR(#${r}) and complete the publishing process afterwards`)}async commitWorkspace(t,e=[]){const r=this.shell.format(this.getConfig("commitMessage","chore(tag): ${name} v${version}"),t);return await this.commit(r,e)}async createReleaseBranch(t){const e=this.releaseParams.getReleaseBranchParams(t,this.context.getTemplateContext()),{tagName:r,releaseBranch:n}=e;if("string"!=typeof r)throw new Error("Tag name is not a string");const{sourceBranch:o,currentBranch:i}=this.context.shared;this.context.logger.debug("PR TagName is:",r),this.context.logger.debug("PR CurrentBranch is:",i),this.context.logger.debug("PR SourceBranch is:",o),this.context.logger.debug("PR ReleaseBranch is:",n);try{await this.context.shell.exec(`git fetch origin ${o} ${i}`),await this.context.shell.exec(`git checkout -b ${n} ${i}`),await this.context.shell.exec(`git push origin ${n}`)}catch(t){throw t.message.includes("remote: Permission to ")&&this.context.logger.warn('Token maybe not allow Workflow permissions, can you try to open "Workflow permissions" -> "Read and write permissions" for this token?'),t}return{tagName:r,releaseBranch:n}}async createReleasePR(t,e){let r=[(await this.githubManager.createReleasePRLabel()).name];if(this.getConfig("pushChangeLabels")){const t=this.context.getConfig("workspaces.changeLabels");Array.isArray(t)&&t.length>0&&r.push(...t)}r=Array.from(new Set(r)),this.logger.debug("Release PR labels:",r);const n=this.context.getTemplateContext(),o=this.releaseParams.getPRTitle(e,n),i=this.releaseParams.getPRBody(t,e,n);return this.githubManager.createReleasePR({title:o,body:i,base:this.context.sourceBranch,head:e.releaseBranch,labels:r})}},{})];class zi{executor;defaultTuples;context;constructor(t={},e=new r,n=Di){this.executor=e,this.defaultTuples=n,this.context=new ki(t)}getContext(){return this.context}async usePlugins(t){t=t||this.context.shared.plugins||[];const e=await Fi(this.context,[...this.defaultTuples,...t]);return e.forEach((t=>{t instanceof Si&&t.setReleaseTask(this),this.executor.use(t)})),e}async run(){return this.executor.exec(this.context,(t=>Promise.resolve(t)))}async exec(t){if("false"===this.context.env.get("FE_RELEASE"))throw new Error("Skip Release");return await this.usePlugins(t),this.run()}}var qi,Vi,Ji,Yi;function Ki(){if(Vi)return qi;Vi=1;var t=fo(),e=mi(),r=yo(),n=_e(),o=di();return qi=function(i,s,a,c){if(!n(i))return i;for(var u=-1,h=(s=e(s,i)).length,l=h-1,g=i;null!=g&&++u<h;){var f=o(s[u]),p=a;if("__proto__"===f||"constructor"===f||"prototype"===f)return i;if(u!=l){var m=g[f];void 0===(p=c?c(m,f,g):void 0)&&(p=n(m)?m:r(s[u+1])?[]:{})}t(g,f,p),g=g[f]}return i}}function Qi(){if(Yi)return Ji;Yi=1;var t=Ki();return Ji=function(e,r,n){return null==e?e:t(e,r,n)}}var Xi=ie(Qi());function Zi(t,e){return Object.entries(t).reduce(((t,[r,n])=>(r.includes(".")?Xi(t,r,n):Xi(t,e?`${e}.${r}`:r,n),t)),{})}export{Bi as Plugin,ki as ReleaseContext,Oi as ReleaseLabel,zi as ReleaseTask,Li as factory,Wi as load,Fi as loaderPluginsFromPluginTuples,Zi as reduceOptions,xi as tuple};
1
+ import{FeScriptContext as t}from"@qlover/scripts-context";import{Env as e}from"@qlover/env-loader";import{AsyncExecutor as r}from"@qlover/fe-corekit";import{Octokit as n}from"@octokit/rest";import o from"gitlog";import{resolve as i,join as a,relative as s,parse as u}from"node:path";import{findWorkspaces as c}from"find-workspaces";import{readFileSync as f,existsSync as h,writeFileSync as l}from"fs";import{join as g}from"path";import{createRequire as p}from"node:module";import{pathToFileURL as m}from"node:url";import v from"p-limit";var d,b,y,w,k,_,R,x,P,j,C,$,N,O,E,B,T,S,A,L,W,U,M,D,H,G,F,I,z,q,V,J,Y,K,Q,X,Z,tt,et,rt,nt,ot,it,at,st,ut,ct,ft,ht,lt,gt,pt,mt,vt,dt,bt,yt,wt,kt,_t,Rt,xt,Pt,jt,Ct,$t,Nt,Ot,Et,Bt,Tt,St,At,Lt,Wt,Ut,Mt,Dt,Ht,Gt,Ft,It,zt,qt,Vt,Jt,Yt,Kt,Qt,Xt,Zt,te,ee,re,ne,oe,ie,ae,se="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function ue(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function ce(){if(b)return d;return b=1,d=function(){this.__data__=[],this.size=0}}function fe(){if(w)return y;return w=1,y=function(t,e){return t===e||t!=t&&e!=e}}function he(){if(_)return k;_=1;var t=fe();return k=function(e,r){for(var n=e.length;n--;)if(t(e[n][0],r))return n;return-1}}function le(){if(x)return R;x=1;var t=he(),e=Array.prototype.splice;return R=function(r){var n=this.__data__,o=t(n,r);return!(o<0)&&(o==n.length-1?n.pop():e.call(n,o,1),--this.size,!0)}}function ge(){if(j)return P;j=1;var t=he();return P=function(e){var r=this.__data__,n=t(r,e);return n<0?void 0:r[n][1]}}function pe(){if($)return C;$=1;var t=he();return C=function(e){return t(this.__data__,e)>-1}}function me(){if(O)return N;O=1;var t=he();return N=function(e,r){var n=this.__data__,o=t(n,e);return o<0?(++this.size,n.push([e,r])):n[o][1]=r,this}}function ve(){if(B)return E;B=1;var t=ce(),e=le(),r=ge(),n=pe(),o=me();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,E=i}function de(){if(S)return T;S=1;var t=ve();return T=function(){this.__data__=new t,this.size=0}}function be(){if(L)return A;return L=1,A=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}}function ye(){if(U)return W;return U=1,W=function(t){return this.__data__.get(t)}}function we(){if(D)return M;return D=1,M=function(t){return this.__data__.has(t)}}function ke(){if(G)return H;G=1;var t="object"==typeof se&&se&&se.Object===Object&&se;return H=t}function _e(){if(I)return F;I=1;var t=ke(),e="object"==typeof self&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return F=r}function Re(){if(q)return z;q=1;var t=_e().Symbol;return z=t}function xe(){if(J)return V;J=1;var t=Re(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,o=t?t.toStringTag:void 0;return V=function(t){var e=r.call(t,o),i=t[o];try{t[o]=void 0;var a=!0}catch(t){}var s=n.call(t);return a&&(e?t[o]=i:delete t[o]),s}}function Pe(){if(K)return Y;K=1;var t=Object.prototype.toString;return Y=function(e){return t.call(e)}}function je(){if(X)return Q;X=1;var t=Re(),e=xe(),r=Pe(),n=t?t.toStringTag:void 0;return Q=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":n&&n in Object(t)?e(t):r(t)}}function Ce(){if(tt)return Z;return tt=1,Z=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}}function $e(){if(rt)return et;rt=1;var t=je(),e=Ce();return et=function(r){if(!e(r))return!1;var n=t(r);return"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n}}function Ne(){if(ot)return nt;ot=1;var t=_e()["__core-js_shared__"];return nt=t}function Oe(){if(at)return it;at=1;var t,e=Ne(),r=(t=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||""))?"Symbol(src)_1."+t:"";return it=function(t){return!!r&&r in t}}function Ee(){if(ut)return st;ut=1;var t=Function.prototype.toString;return st=function(e){if(null!=e){try{return t.call(e)}catch(t){}try{return e+""}catch(t){}}return""}}function Be(){if(ft)return ct;ft=1;var t=$e(),e=Oe(),r=Ce(),n=Ee(),o=/^\[object .+?Constructor\]$/,i=Function.prototype,a=Object.prototype,s=i.toString,u=a.hasOwnProperty,c=RegExp("^"+s.call(u).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return ct=function(i){return!(!r(i)||e(i))&&(t(i)?c:o).test(n(i))}}function Te(){if(lt)return ht;return lt=1,ht=function(t,e){return null==t?void 0:t[e]}}function Se(){if(pt)return gt;pt=1;var t=Be(),e=Te();return gt=function(r,n){var o=e(r,n);return t(o)?o:void 0}}function Ae(){if(vt)return mt;vt=1;var t=Se()(_e(),"Map");return mt=t}function Le(){if(bt)return dt;bt=1;var t=Se()(Object,"create");return dt=t}function We(){if(wt)return yt;wt=1;var t=Le();return yt=function(){this.__data__=t?t(null):{},this.size=0}}function Ue(){if(_t)return kt;return _t=1,kt=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}}function Me(){if(xt)return Rt;xt=1;var t=Le(),e=Object.prototype.hasOwnProperty;return Rt=function(r){var n=this.__data__;if(t){var o=n[r];return"__lodash_hash_undefined__"===o?void 0:o}return e.call(n,r)?n[r]:void 0}}function De(){if(jt)return Pt;jt=1;var t=Le(),e=Object.prototype.hasOwnProperty;return Pt=function(r){var n=this.__data__;return t?void 0!==n[r]:e.call(n,r)}}function He(){if($t)return Ct;$t=1;var t=Le();return Ct=function(e,r){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=t&&void 0===r?"__lodash_hash_undefined__":r,this}}function Ge(){if(Ot)return Nt;Ot=1;var t=We(),e=Ue(),r=Me(),n=De(),o=He();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,Nt=i}function Fe(){if(Bt)return Et;Bt=1;var t=Ge(),e=ve(),r=Ae();return Et=function(){this.size=0,this.__data__={hash:new t,map:new(r||e),string:new t}}}function Ie(){if(St)return Tt;return St=1,Tt=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}}function ze(){if(Lt)return At;Lt=1;var t=Ie();return At=function(e,r){var n=e.__data__;return t(r)?n["string"==typeof r?"string":"hash"]:n.map}}function qe(){if(Ut)return Wt;Ut=1;var t=ze();return Wt=function(e){var r=t(this,e).delete(e);return this.size-=r?1:0,r}}function Ve(){if(Dt)return Mt;Dt=1;var t=ze();return Mt=function(e){return t(this,e).get(e)}}function Je(){if(Gt)return Ht;Gt=1;var t=ze();return Ht=function(e){return t(this,e).has(e)}}function Ye(){if(It)return Ft;It=1;var t=ze();return Ft=function(e,r){var n=t(this,e),o=n.size;return n.set(e,r),this.size+=n.size==o?0:1,this}}function Ke(){if(qt)return zt;qt=1;var t=Fe(),e=qe(),r=Ve(),n=Je(),o=Ye();function i(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=n,i.prototype.set=o,zt=i}function Qe(){if(Jt)return Vt;Jt=1;var t=ve(),e=Ae(),r=Ke();return Vt=function(n,o){var i=this.__data__;if(i instanceof t){var a=i.__data__;if(!e||a.length<199)return a.push([n,o]),this.size=++i.size,this;i=this.__data__=new r(a)}return i.set(n,o),this.size=i.size,this}}function Xe(){if(Kt)return Yt;Kt=1;var t=ve(),e=de(),r=be(),n=ye(),o=we(),i=Qe();function a(e){var r=this.__data__=new t(e);this.size=r.size}return a.prototype.clear=e,a.prototype.delete=r,a.prototype.get=n,a.prototype.has=o,a.prototype.set=i,Yt=a}function Ze(){if(Xt)return Qt;Xt=1;var t=Se(),e=function(){try{var e=t(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();return Qt=e}function tr(){if(te)return Zt;te=1;var t=Ze();return Zt=function(e,r,n){"__proto__"==r&&t?t(e,r,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[r]=n}}function er(){if(re)return ee;re=1;var t=tr(),e=fe();return ee=function(r,n,o){(void 0!==o&&!e(r[n],o)||void 0===o&&!(n in r))&&t(r,n,o)}}function rr(){if(oe)return ne;return oe=1,ne=function(t){return function(e,r,n){for(var o=-1,i=Object(e),a=n(e),s=a.length;s--;){var u=a[t?s:++o];if(!1===r(i[u],u,i))break}return e}}}function nr(){if(ae)return ie;ae=1;var t=rr()();return ie=t}var or,ir,ar,sr,ur,cr,fr,hr,lr,gr,pr,mr,vr,dr,br,yr,wr,kr,_r,Rr,xr,Pr,jr,Cr,$r,Nr,Or,Er,Br,Tr,Sr,Ar,Lr,Wr={exports:{}};function Ur(){return or||(or=1,t=Wr,e=Wr.exports,r=_e(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n?r.Buffer:void 0,a=i?i.allocUnsafe:void 0,t.exports=function(t,e){if(e)return t.slice();var r=t.length,n=a?a(r):new t.constructor(r);return t.copy(n),n}),Wr.exports;var t,e,r,n,o,i,a}function Mr(){if(ar)return ir;ar=1;var t=_e().Uint8Array;return ir=t}function Dr(){if(ur)return sr;ur=1;var t=Mr();return sr=function(e){var r=new e.constructor(e.byteLength);return new t(r).set(new t(e)),r}}function Hr(){if(fr)return cr;fr=1;var t=Dr();return cr=function(e,r){var n=r?t(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}}function Gr(){if(lr)return hr;return lr=1,hr=function(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r<n;)e[r]=t[r];return e}}function Fr(){if(pr)return gr;pr=1;var t=Ce(),e=Object.create,r=function(){function r(){}return function(n){if(!t(n))return{};if(e)return e(n);r.prototype=n;var o=new r;return r.prototype=void 0,o}}();return gr=r}function Ir(){if(vr)return mr;return vr=1,mr=function(t,e){return function(r){return t(e(r))}}}function zr(){if(br)return dr;br=1;var t=Ir()(Object.getPrototypeOf,Object);return dr=t}function qr(){if(wr)return yr;wr=1;var t=Object.prototype;return yr=function(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||t)}}function Vr(){if(_r)return kr;_r=1;var t=Fr(),e=zr(),r=qr();return kr=function(n){return"function"!=typeof n.constructor||r(n)?{}:t(e(n))}}function Jr(){if(xr)return Rr;return xr=1,Rr=function(t){return null!=t&&"object"==typeof t}}function Yr(){if(jr)return Pr;jr=1;var t=je(),e=Jr();return Pr=function(r){return e(r)&&"[object Arguments]"==t(r)}}function Kr(){if($r)return Cr;$r=1;var t=Yr(),e=Jr(),r=Object.prototype,n=r.hasOwnProperty,o=r.propertyIsEnumerable,i=t(function(){return arguments}())?t:function(t){return e(t)&&n.call(t,"callee")&&!o.call(t,"callee")};return Cr=i}function Qr(){if(Or)return Nr;Or=1;var t=Array.isArray;return Nr=t}function Xr(){if(Br)return Er;Br=1;return Er=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}}function Zr(){if(Sr)return Tr;Sr=1;var t=$e(),e=Xr();return Tr=function(r){return null!=r&&e(r.length)&&!t(r)}}function tn(){if(Lr)return Ar;Lr=1;var t=Zr(),e=Jr();return Ar=function(r){return e(r)&&t(r)}}var en,rn,nn,on,an,sn,un,cn,fn,hn={exports:{}};function ln(){if(rn)return en;return rn=1,en=function(){return!1}}function gn(){return nn||(nn=1,function(t,e){var r=_e(),n=ln(),o=e&&!e.nodeType&&e,i=o&&t&&!t.nodeType&&t,a=i&&i.exports===o?r.Buffer:void 0,s=(a?a.isBuffer:void 0)||n;t.exports=s}(hn,hn.exports)),hn.exports}function pn(){if(an)return on;an=1;var t=je(),e=zr(),r=Jr(),n=Function.prototype,o=Object.prototype,i=n.toString,a=o.hasOwnProperty,s=i.call(Object);return on=function(n){if(!r(n)||"[object Object]"!=t(n))return!1;var o=e(n);if(null===o)return!0;var u=a.call(o,"constructor")&&o.constructor;return"function"==typeof u&&u instanceof u&&i.call(u)==s}}function mn(){if(un)return sn;un=1;var t=je(),e=Xr(),r=Jr(),n={};return n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1,sn=function(o){return r(o)&&e(o.length)&&!!n[t(o)]}}function vn(){if(fn)return cn;return fn=1,cn=function(t){return function(e){return t(e)}}}var dn,bn,yn,wn,kn,_n,Rn,xn,Pn,jn,Cn,$n,Nn,On,En,Bn,Tn,Sn,An,Ln,Wn,Un,Mn,Dn,Hn,Gn,Fn,In,zn,qn,Vn,Jn,Yn,Kn,Qn,Xn,Zn,to,eo,ro,no,oo,io,ao,so,uo,co,fo,ho,lo={exports:{}};function go(){return dn||(dn=1,t=lo,e=lo.exports,r=ke(),n=e&&!e.nodeType&&e,o=n&&t&&!t.nodeType&&t,i=o&&o.exports===n&&r.process,a=function(){try{var t=o&&o.require&&o.require("util").types;return t||i&&i.binding&&i.binding("util")}catch(t){}}(),t.exports=a),lo.exports;var t,e,r,n,o,i,a}function po(){if(yn)return bn;yn=1;var t=mn(),e=vn(),r=go(),n=r&&r.isTypedArray,o=n?e(n):t;return bn=o}function mo(){if(kn)return wn;return kn=1,wn=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}}function vo(){if(Rn)return _n;Rn=1;var t=tr(),e=fe(),r=Object.prototype.hasOwnProperty;return _n=function(n,o,i){var a=n[o];r.call(n,o)&&e(a,i)&&(void 0!==i||o in n)||t(n,o,i)}}function bo(){if(Pn)return xn;Pn=1;var t=vo(),e=tr();return xn=function(r,n,o,i){var a=!o;o||(o={});for(var s=-1,u=n.length;++s<u;){var c=n[s],f=i?i(o[c],r[c],c,o,r):void 0;void 0===f&&(f=r[c]),a?e(o,c,f):t(o,c,f)}return o}}function yo(){if(Cn)return jn;return Cn=1,jn=function(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n}}function wo(){if(Nn)return $n;Nn=1;var t=/^(?:0|[1-9]\d*)$/;return $n=function(e,r){var n=typeof e;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e<r}}function ko(){if(En)return On;En=1;var t=yo(),e=Kr(),r=Qr(),n=gn(),o=wo(),i=po(),a=Object.prototype.hasOwnProperty;return On=function(s,u){var c=r(s),f=!c&&e(s),h=!c&&!f&&n(s),l=!c&&!f&&!h&&i(s),g=c||f||h||l,p=g?t(s.length,String):[],m=p.length;for(var v in s)!u&&!a.call(s,v)||g&&("length"==v||h&&("offset"==v||"parent"==v)||l&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||o(v,m))||p.push(v);return p}}function _o(){if(Tn)return Bn;return Tn=1,Bn=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}}function Ro(){if(An)return Sn;An=1;var t=Ce(),e=qr(),r=_o(),n=Object.prototype.hasOwnProperty;return Sn=function(o){if(!t(o))return r(o);var i=e(o),a=[];for(var s in o)("constructor"!=s||!i&&n.call(o,s))&&a.push(s);return a}}function xo(){if(Wn)return Ln;Wn=1;var t=ko(),e=Ro(),r=Zr();return Ln=function(n){return r(n)?t(n,!0):e(n)}}function Po(){if(Mn)return Un;Mn=1;var t=bo(),e=xo();return Un=function(r){return t(r,e(r))}}function jo(){if(Hn)return Dn;Hn=1;var t=er(),e=Ur(),r=Hr(),n=Gr(),o=Vr(),i=Kr(),a=Qr(),s=tn(),u=gn(),c=$e(),f=Ce(),h=pn(),l=po(),g=mo(),p=Po();return Dn=function(m,v,d,b,y,w,k){var _=g(m,d),R=g(v,d),x=k.get(R);if(x)t(m,d,x);else{var P=w?w(_,R,d+"",m,v,k):void 0,j=void 0===P;if(j){var C=a(R),$=!C&&u(R),N=!C&&!$&&l(R);P=R,C||$||N?a(_)?P=_:s(_)?P=n(_):$?(j=!1,P=e(R,!0)):N?(j=!1,P=r(R,!0)):P=[]:h(R)||i(R)?(P=_,i(_)?P=p(_):f(_)&&!c(_)||(P=o(R))):j=!1}j&&(k.set(R,P),y(P,R,b,w,k),k.delete(R)),t(m,d,P)}}}function Co(){if(Fn)return Gn;Fn=1;var t=Xe(),e=er(),r=nr(),n=jo(),o=Ce(),i=xo(),a=mo();return Gn=function s(u,c,f,h,l){u!==c&&r(c,(function(r,i){if(l||(l=new t),o(r))n(u,c,i,f,s,h,l);else{var g=h?h(a(u,i),r,i+"",u,c,l):void 0;void 0===g&&(g=r),e(u,i,g)}}),i)},Gn}function $o(){if(zn)return In;return zn=1,In=function(t){return t}}function No(){if(Vn)return qn;return Vn=1,qn=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}}function Oo(){if(Yn)return Jn;Yn=1;var t=No(),e=Math.max;return Jn=function(r,n,o){return n=e(void 0===n?r.length-1:n,0),function(){for(var i=arguments,a=-1,s=e(i.length-n,0),u=Array(s);++a<s;)u[a]=i[n+a];a=-1;for(var c=Array(n+1);++a<n;)c[a]=i[a];return c[n]=o(u),t(r,this,c)}},Jn}function Eo(){if(Qn)return Kn;return Qn=1,Kn=function(t){return function(){return t}}}function Bo(){if(Zn)return Xn;Zn=1;var t=Eo(),e=Ze();return Xn=e?function(r,n){return e(r,"toString",{configurable:!0,enumerable:!1,value:t(n),writable:!0})}:$o()}function To(){if(eo)return to;eo=1;var t=Date.now;return to=function(e){var r=0,n=0;return function(){var o=t(),i=16-(o-n);if(n=o,i>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}},to}function So(){if(no)return ro;no=1;var t=Bo(),e=To()(t);return ro=e}function Ao(){if(io)return oo;io=1;var t=$o(),e=Oo(),r=So();return oo=function(n,o){return r(e(n,o,t),n+"")}}function Lo(){if(so)return ao;so=1;var t=fe(),e=Zr(),r=wo(),n=Ce();return ao=function(o,i,a){if(!n(a))return!1;var s=typeof i;return!!("number"==s?e(a)&&r(i,a.length):"string"==s&&i in a)&&t(a[i],o)}}function Wo(){if(co)return uo;co=1;var t=Ao(),e=Lo();return uo=function(r){return t((function(t,n){var o=-1,i=n.length,a=i>1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(a=r.length>3&&"function"==typeof a?(i--,a):void 0,s&&e(n[0],n[1],s)&&(a=i<3?void 0:a,i=1),t=Object(t);++o<i;){var u=n[o];u&&r(t,u,o,a)}return t}))}}function Uo(){if(ho)return fo;ho=1;var t=Co(),e=Wo()((function(e,r,n){t(e,r,n)}));return fo=e}var Mo,Do,Ho,Go,Fo,Io,zo,qo,Vo,Jo,Yo,Ko,Qo,Xo,Zo,ti,ei,ri,ni,oi,ii,ai,si,ui,ci=ue(Uo());function fi(){if(Do)return Mo;Do=1;var t=je(),e=Jr();return Mo=function(r){return"symbol"==typeof r||e(r)&&"[object Symbol]"==t(r)}}function hi(){if(Go)return Ho;Go=1;var t=Qr(),e=fi(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;return Ho=function(o,i){if(t(o))return!1;var a=typeof o;return!("number"!=a&&"symbol"!=a&&"boolean"!=a&&null!=o&&!e(o))||(n.test(o)||!r.test(o)||null!=i&&o in Object(i))}}function li(){if(Io)return Fo;Io=1;var t=Ke();function e(r,n){if("function"!=typeof r||null!=n&&"function"!=typeof n)throw new TypeError("Expected a function");var o=function(){var t=arguments,e=n?n.apply(this,t):t[0],i=o.cache;if(i.has(e))return i.get(e);var a=r.apply(this,t);return o.cache=i.set(e,a)||i,a};return o.cache=new(e.Cache||t),o}return e.Cache=t,Fo=e}function gi(){if(qo)return zo;qo=1;var t=li();return zo=function(e){var r=t(e,(function(t){return 500===n.size&&n.clear(),t})),n=r.cache;return r}}function pi(){if(Jo)return Vo;Jo=1;var t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,e=/\\(\\)?/g,r=gi()((function(r){var n=[];return 46===r.charCodeAt(0)&&n.push(""),r.replace(t,(function(t,r,o,i){n.push(o?i.replace(e,"$1"):r||t)})),n}));return Vo=r}function mi(){if(Ko)return Yo;return Ko=1,Yo=function(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r<n;)o[r]=e(t[r],r,t);return o}}function vi(){if(Xo)return Qo;Xo=1;var t=Re(),e=mi(),r=Qr(),n=fi(),o=t?t.prototype:void 0,i=o?o.toString:void 0;return Qo=function t(o){if("string"==typeof o)return o;if(r(o))return e(o,t)+"";if(n(o))return i?i.call(o):"";var a=o+"";return"0"==a&&1/o==-1/0?"-0":a},Qo}function di(){if(ti)return Zo;ti=1;var t=vi();return Zo=function(e){return null==e?"":t(e)}}function bi(){if(ri)return ei;ri=1;var t=Qr(),e=hi(),r=pi(),n=di();return ei=function(o,i){return t(o)?o:e(o,i)?[o]:r(n(o))}}function yi(){if(oi)return ni;oi=1;var t=fi();return ni=function(e){if("string"==typeof e||t(e))return e;var r=e+"";return"0"==r&&1/e==-1/0?"-0":r}}function wi(){if(ai)return ii;ai=1;var t=bi(),e=yi();return ii=function(r,n){for(var o=0,i=(n=t(n,r)).length;null!=r&&o<i;)r=r[e(n[o++])];return o&&o==i?r:void 0}}function ki(){if(ui)return si;ui=1;var t=wi();return si=function(e,r,n){var o=null==e?void 0:t(e,r);return void 0===o?n:o}}var _i=ue(ki());const Ri="package.json",xi=[".env.local",".env"];class Pi extends t{_env;shared;constructor(t){super(t),this._env=e.searchEnv({logger:this.logger,preloadList:this.feConfig.envOrder||xi}),this.shared=Object.assign({},this.feConfig.release,this.getDefaultShreadOptions(t.shared))}getDefaultShreadOptions(t){return{rootPath:process.cwd(),sourceBranch:this._env.get("FE_RELEASE_BRANCH")||this._env.get("FE_RELEASE_SOURCE_BRANCH")||"master",releaseEnv:this._env.get("FE_RELEASE_ENV")||this._env.get("NODE_ENV")||"development",...t}}get rootPath(){return this.shared.rootPath}get sourceBranch(){return this.shared.sourceBranch}get releaseEnv(){return this.shared.releaseEnv}get env(){return this._env}get workspaces(){return this.getConfig("workspaces.workspaces")}get workspace(){return this.getConfig("workspaces.workspace")}setWorkspaces(t){this.options.workspaces={...this.options.workspaces,workspaces:t}}setConfig(t){this.options=ci(this.options,t)}getConfig(t,e){return _i(this.options,t,e)}setShared(t){this.shared=ci(this.shared,t)}getPkg(t,e){const r=this.workspace?.packageJson;if(!r)throw new Error("package.json is not found");return t?_i(r,t,e):r}getTemplateContext(){return{...this.shared,...this.workspace,publishPath:this.workspace?.path||"",env:this.releaseEnv,branch:this.sourceBranch}}async runChangesetsCli(t,e){let r="pnpm";try{await this.shell.exec("pnpm -v",{dryRun:!1})}catch{r="npx"}return await this.shell.exec([r,"changeset",t,...e??[]])}}function ji(t,...e){return[t,...e]}const Ci={maxWorkspace:3,multiWorkspaceSeparator:"_",workspaceVersionSeparator:"@",batchBranchName:"batch-${releaseName}-${length}-packages-${timestamp}",batchTagName:"batch-${length}-packages-${timestamp}"};class $i{shell;logger;config;constructor(t,e,r={}){this.shell=t,this.logger=e,this.config={...Ci,...r}}getReleaseBranchName(t,e,r){const n=r.branchName||"release-${tagName}";if("string"!=typeof n)throw new Error("Branch name template is not a string");return this.logger.debug("Release Branch template is:",n),this.shell.format(n,{pkgName:t,releaseName:t,tagName:e,...r})}getBatchReleaseBranchName(t,e,r,n){const o=this.config.batchBranchName;if("string"!=typeof o)throw new Error("Branch name template is not a string");return this.logger.debug("Release Batch Branch template is:",o),this.shell.format(o,{pkgName:t,releaseName:t,tagName:e,...r,length:n,timestamp:Date.now()})}getReleaseName(t){if(1===t.length)return t[0].name;const{maxWorkspace:e,multiWorkspaceSeparator:r,workspaceVersionSeparator:n}=this.config;return t.slice(0,e).map((({name:t,version:e})=>`${t}${n}${e}`)).join(r)}getReleaseTagName(t){if(1===t.length)return t[0].version;const{batchTagName:e}=this.config;return this.shell.format(e,{length:t.length,timestamp:Date.now()})}getReleaseBranchParams(t,e){const r=this.getReleaseTagName(t),n=this.getReleaseName(t);return{tagName:r,releaseBranch:t.length>1?this.getBatchReleaseBranchName(n,r,e,t.length):this.getReleaseBranchName(n,r,e)}}getPRTitle(t,e){const r=this.config.PRTitle||"Release ${env} ${pkgName} ${tagName}";return this.shell.format(r,{...e,tagName:t.tagName,pkgName:t.releaseBranch})}getPRBody(t,e,r){const n=this.config.PRBody,o=t.length>1?t.map((t=>this.shell.format("\n## ${name} ${version}\n${changelog}\n",t))).join("\n"):t[0].changelog,{workspaceVersionSeparator:i}=this.config,a=1===t.length?e.tagName:t.map((t=>`${t.name}${i}${t.version}`)).join(" ");return this.shell.format(n,{...r,tagName:a,changelog:o})}}class Ni{context;_octokit=null;constructor(t){this.context=t}getGitHubUserInfo(){const{authorName:t,repoName:e}=this.context.shared;if(!t||!e)throw new Error("Author name or repo name is not set");return{owner:t,repo:e}}getToken(){const{tokenRef:t="GITHUB_TOKEN"}=this.context.getConfig("githubPR"),e=this.context.env.get(t);if(!e)throw new Error(`Token is not set. Please set ${t} environment variable.`);return e}get octokit(){if(this._octokit)return this._octokit;const{timeout:t}=this.context.getConfig("githubPR"),e={auth:this.getToken(),request:{timeout:t}};return this._octokit=new n(e),this._octokit}get logger(){return this.context.logger}get shell(){return this.context.shell}get autoMergeType(){return this.context.shared.autoMergeType||"squash"}get dryRunPRNumber(){return this.context.getConfig("githubPR.dryRunPRNumber","999999")}get autoMergeReleasePR(){return this.context.shared.autoMergeReleasePR||false}async mergePR(t,e){if(!t)return void this.logger.error("Failed to create Pull Request.",t);const r=this.autoMergeType;if(this.context.dryRun){const{repoName:n,authorName:o}=this.context.shared;this.logger.info(`[DRY RUN] Would merge PR #${t} with method '${r}' in repo ${o}/${n}, branch ${e}`)}else await this.octokit.rest.pulls.merge({...this.getGitHubUserInfo(),pull_number:Number(t),merge_method:r})}async getPullRequestCommits(t){return(await this.octokit.rest.pulls.listCommits({...this.getGitHubUserInfo(),pull_number:t})).data}async getPullRequest(t){return(await this.octokit.rest.pulls.get({...this.getGitHubUserInfo(),pull_number:t})).data}async checkedPR(t,e){try{await this.getPullRequest(Number(t)),await this.octokit.rest.git.deleteRef({...this.getGitHubUserInfo(),ref:`heads/${e}`}),this.logger.info(`Branch ${e} has been deleted`)}catch(r){if(404===r.status)return void this.logger.warn(`PR #${t} or branch ${e} not found`);throw this.logger.error("Failed to check PR or delete branch",r),r}}async createReleasePRLabel(){const t=this.context.shared.label;if(!(t&&t.name&&t.description&&t.color))throw new Error("Label is not valid, skipping creation");if(this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR label with:",t),t;try{const e=await this.octokit.rest.issues.createLabel({...this.getGitHubUserInfo(),name:t.name,description:t.description,color:t.color.replace("#","")});return this.logger.debug("Create PR label Success",e),t}catch(e){if(422===e.status)return this.logger.warn(`Label ${t.name} already exists, skipping!`),t;throw this.logger.error("Create PR label Failed",e),e}}async createReleasePR(t){if(this.context.getConfig("githubPR.dryRunCreatePR")||this.context.dryRun)return this.logger.info("[DRY RUN] Would create PR with:",{...t,labels:t.labels}),this.dryRunPRNumber;try{const e=await this.octokit.rest.pulls.create({...this.getGitHubUserInfo(),...t}),r=e.data.number;if(!r)throw new Error("CreateReleasePR Failed, prNumber is empty");if(this.logger.debug("Create PR Success",[e?.url]),t.labels&&t.labels.length){const e=await this.octokit.rest.issues.addLabels({...this.getGitHubUserInfo(),issue_number:r,labels:t.labels});this.logger.debug("Add PR label Success",[e.url])}return r.toString()}catch(t){if(422===t.status&&t.message.includes("already exists")){this.logger.warn("PR already exists");const e=t.message.match(/pull request #(\d+)/);return e?e[1]:""}throw this.logger.error("Failed to create PR",t),t}}truncateBody(t){return t&&t.length>=124e3?t.substring(0,124e3)+"...":t}getOctokitReleaseOptions(t){const{releaseName:e,draft:r=!1,preRelease:n=!1,autoGenerate:o=!1,makeLatest:i=!0,releaseNotes:a,discussionCategoryName:s}=this.context.getConfig("githubPR"),u=e,c=o?"":this.truncateBody(String(a));return{name:u,make_latest:i.toString(),body:c,draft:r,prerelease:n,generate_release_notes:o,discussion_category_name:s,tag_name:"",...t,...this.getGitHubUserInfo()}}async createRelease(t){const e=this.getOctokitReleaseOptions({tag_name:t.tagName,body:t.changelog});if(e.name=this.shell.format(e.name,t),this.logger.log(`[DRY RUN] octokit repos.createRelease "${e.name}" (${e.tag_name})`,{isDryRun:this.context.dryRun}),!e.tag_name)throw new Error("TagName is undefined");if(!this.context.dryRun)try{const t=await this.octokit.repos.createRelease(e);this.logger.debug(`[DONE] octokit repos.createRelease "${e.name}" (${e.tag_name}) (${t.headers.location})`)}catch(t){this.logger.error(`[FAILED] octokit repos.createRelease "${e.name}" (${e.tag_name})`,t)}}}var Oi,Ei;function Bi(){if(Ei)return Oi;Ei=1;var t=je(),e=Qr(),r=Jr();return Oi=function(n){return"string"==typeof n||!e(n)&&r(n)&&"[object String]"==t(n)}}var Ti=ue(Bi());class Si{context;pluginName;props;onlyOne=!0;constructor(t,e,r={}){this.context=t,this.pluginName=e,this.props=r,this.setConfig(this.getInitialProps(r))}getInitialProps(t){const e=this.context.options[this.pluginName],r=_i(this.context.shared,this.pluginName);return e||t?ci({},r,t,e):{}}get logger(){return this.context.logger}get shell(){return this.context.shell}get options(){return this.context.getConfig(this.pluginName,{})}getEnv(t,e){return this.context.env.get(t)??e}enabled(t,e){return!0}getConfig(t,e){return t?this.context.getConfig([this.pluginName,...Array.isArray(t)?t:[t]],e):this.context.getConfig(this.pluginName,e)}setConfig(t){this.context.setConfig({[this.pluginName]:t})}onBefore(t){}onExec(t){}onSuccess(t){}onError(t){}async step({label:t,task:e}){this.logger.log(),this.logger.info(t),this.logger.log();try{const r=await e();return this.logger.info(`${t} - success`),r}catch(t){throw this.logger.error(t),t}}}class Ai extends Si{async onBefore(){const t=await this.getUserInfo();if(!t)throw new Error("Failed to get repoInfo");let e=this.context.shared.currentBranch;e||(e=await this.getCurrentBranch()),e&&await this.context.shell.exec(`git checkout ${e}`,{dryRun:!1}),this.context.setShared({repoName:t.repoName,authorName:t.authorName,currentBranch:e})}async getCurrentBranch(){return await new Promise((t=>setTimeout(t,100))),this.context.shell.exec("git rev-parse --abbrev-ref HEAD",{dryRun:!1})}async getRemoteUrl(){return(await this.context.shell.exec("git config --get remote.origin.url",{dryRun:!1})).trim()}async getUserInfo(){let t;try{t=await this.getRemoteUrl()}catch{throw new Error("Failed to get git remote url. Please ensure this is a git repository with a valid remote.")}if(!t)throw new Error("Git remote URL is empty. Please set a valid GitHub remote URL.");this.context.logger.debug("repoUrl: ",t);const e=t.match(/github\.com[:/]([^/]+)\/([^/.]+)(?:\.git)?$/);if(!e)throw new Error("Invalid GitHub repository URL format. Please ensure the remote URL is from GitHub.");const[,r,n]=e;if(!this.isValidString(r)||!this.isValidString(n))throw new Error("Failed to extract owner or repository name from GitHub URL");return{repoName:n,authorName:r}}isValidString(t){return!!t&&Ti(t)}commit(t,e=[]){return this.context.shell.exec(["git","commit","--message",JSON.stringify(t),...e])}}const Li=["hash","abbrevHash","treeHash","abbrevTreeHash","parentHashes","abbrevParentHashes","authorName","authorEmail","authorDate","authorDateRel","committerName","committerEmail","committerDate","committerDateRel","subject","body","rawBody","tag"];class Wi{options;constructor(t){this.options=t}async getGitLog(t={}){const{directory:e,noMerges:r=!0,fileds:n}=t,i=await this.resolveTag(t.from,"root"),a=await this.resolveTag(t.to,"HEAD"),s=i===a?a:`${i}..${a}`;return await o({repo:".",number:1e3,fields:n,branch:s,file:e,nameStatus:!1,includeMergeCommitFiles:!r})}async getCommits(t){return(await this.getGitLog(t)).map((t=>{const{subject:e,rawBody:r}=t;return{base:t,commitlint:this.parseCommitlint(e||r||""),commits:[]}}))}createBaseCommit(t,e){return{subject:t,rawBody:t,body:t,...e}}parseCommitBody(t){const e=t.split("\n").filter(Boolean),r=[];for(let t=0;t<e.length;t++){const n=e[t].trim();if(!n)continue;const o=n.match(/\(#(\d+)\)/),i=this.parseCommitlint(n);if(!i.message)continue;const a=this.createBaseCommit(n);r.push({base:a,commitlint:i,commits:[],prNumber:o?.[1]})}return r}parseCommitlint(t){const[e]=t.trim().split("\n"),r=e.replace(/\s*\(#\d+\)\s*$/,"").match(/^(?:([a-z]+)(?:\((.*?)\))?: )?(.+)$/i);return r?{type:r[1]?.toLowerCase(),scope:r[2]?.trim(),message:r[3].trim()}:{message:e}}toCommitValue(t,e){const[r]=e.trim().split("\n"),n=r.match(/\(#(\d+)\)/),o=this.parseCommitlint(r);return{base:this.createBaseCommit(r,{hash:t,abbrevHash:t.substring(0,7),rawBody:e}),commitlint:o,commits:[],prNumber:n?.[1]}}async resolveTag(t,e){if(t)try{if(await this.options.shell.exec(`git tag --list "${t}"`,{dryRun:!1}).then((t=>!!t.trim())))return t}catch{}return"root"===e?this.options.shell.exec("git rev-list --max-parents=0 HEAD",{dryRun:!1}).then((t=>t.trim())):"HEAD"}}var Ui,Mi,Di,Hi,Gi,Fi,Ii,zi,qi,Vi,Ji,Yi,Ki,Qi,Xi,Zi,ta,ea,ra,na,oa,ia,aa,sa,ua,ca,fa,ha,la,ga,pa,ma,va,da,ba,ya,wa,ka,_a,Ra,xa,Pa,ja,Ca,$a,Na,Oa,Ea,Ba,Ta,Sa,Aa,La,Wa,Ua,Ma,Da,Ha,Ga,Fa,Ia,za,qa,Va,Ja,Ya,Ka,Qa,Xa,Za,ts,es,rs,ns,os,is,as,ss,us,cs,fs,hs,ls,gs,ps,ms,vs,ds,bs,ys,ws,ks;function _s(){if(Mi)return Ui;return Mi=1,Ui=function(t,e,r,n){for(var o=-1,i=null==t?0:t.length;++o<i;){var a=t[o];e(n,a,r(a),t)}return n}}function Rs(){if(Hi)return Di;Hi=1;var t=Ir()(Object.keys,Object);return Di=t}function xs(){if(Fi)return Gi;Fi=1;var t=qr(),e=Rs(),r=Object.prototype.hasOwnProperty;return Gi=function(n){if(!t(n))return e(n);var o=[];for(var i in Object(n))r.call(n,i)&&"constructor"!=i&&o.push(i);return o}}function Ps(){if(zi)return Ii;zi=1;var t=ko(),e=xs(),r=Zr();return Ii=function(n){return r(n)?t(n):e(n)}}function js(){if(Vi)return qi;Vi=1;var t=nr(),e=Ps();return qi=function(r,n){return r&&t(r,n,e)}}function Cs(){if(Yi)return Ji;Yi=1;var t=Zr();return Ji=function(e,r){return function(n,o){if(null==n)return n;if(!t(n))return e(n,o);for(var i=n.length,a=r?i:-1,s=Object(n);(r?a--:++a<i)&&!1!==o(s[a],a,s););return n}}}function $s(){if(Qi)return Ki;Qi=1;var t=js(),e=Cs()(t);return Ki=e}function Ns(){if(Zi)return Xi;Zi=1;var t=$s();return Xi=function(e,r,n,o){return t(e,(function(t,e,i){r(o,t,n(t),i)})),o}}function Os(){if(ea)return ta;ea=1;return ta=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}}function Es(){if(na)return ra;return na=1,ra=function(t){return this.__data__.has(t)}}function Bs(){if(ia)return oa;ia=1;var t=Ke(),e=Os(),r=Es();function n(e){var r=-1,n=null==e?0:e.length;for(this.__data__=new t;++r<n;)this.add(e[r])}return n.prototype.add=n.prototype.push=e,n.prototype.has=r,oa=n}function Ts(){if(sa)return aa;return sa=1,aa=function(t,e){for(var r=-1,n=null==t?0:t.length;++r<n;)if(e(t[r],r,t))return!0;return!1}}function Ss(){if(ca)return ua;return ca=1,ua=function(t,e){return t.has(e)}}function As(){if(ha)return fa;ha=1;var t=Bs(),e=Ts(),r=Ss();return fa=function(n,o,i,a,s,u){var c=1&i,f=n.length,h=o.length;if(f!=h&&!(c&&h>f))return!1;var l=u.get(n),g=u.get(o);if(l&&g)return l==o&&g==n;var p=-1,m=!0,v=2&i?new t:void 0;for(u.set(n,o),u.set(o,n);++p<f;){var d=n[p],b=o[p];if(a)var y=c?a(b,d,p,o,n,u):a(d,b,p,n,o,u);if(void 0!==y){if(y)continue;m=!1;break}if(v){if(!e(o,(function(t,e){if(!r(v,e)&&(d===t||s(d,t,i,a,u)))return v.push(e)}))){m=!1;break}}else if(d!==b&&!s(d,b,i,a,u)){m=!1;break}}return u.delete(n),u.delete(o),m}}function Ls(){if(ga)return la;return ga=1,la=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t,n){r[++e]=[n,t]})),r}}function Ws(){if(ma)return pa;return ma=1,pa=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t){r[++e]=t})),r},pa}function Us(){if(da)return va;da=1;var t=Re(),e=Mr(),r=fe(),n=As(),o=Ls(),i=Ws(),a=t?t.prototype:void 0,s=a?a.valueOf:void 0;return va=function(t,a,u,c,f,h,l){switch(u){case"[object DataView]":if(t.byteLength!=a.byteLength||t.byteOffset!=a.byteOffset)return!1;t=t.buffer,a=a.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=a.byteLength||!h(new e(t),new e(a)));case"[object Boolean]":case"[object Date]":case"[object Number]":return r(+t,+a);case"[object Error]":return t.name==a.name&&t.message==a.message;case"[object RegExp]":case"[object String]":return t==a+"";case"[object Map]":var g=o;case"[object Set]":var p=1&c;if(g||(g=i),t.size!=a.size&&!p)return!1;var m=l.get(t);if(m)return m==a;c|=2,l.set(t,a);var v=n(g(t),g(a),c,f,h,l);return l.delete(t),v;case"[object Symbol]":if(s)return s.call(t)==s.call(a)}return!1}}function Ms(){if(ya)return ba;return ya=1,ba=function(t,e){for(var r=-1,n=e.length,o=t.length;++r<n;)t[o+r]=e[r];return t}}function Ds(){if(ka)return wa;ka=1;var t=Ms(),e=Qr();return wa=function(r,n,o){var i=n(r);return e(r)?i:t(i,o(r))}}function Hs(){if(Ra)return _a;return Ra=1,_a=function(t,e){for(var r=-1,n=null==t?0:t.length,o=0,i=[];++r<n;){var a=t[r];e(a,r,t)&&(i[o++]=a)}return i}}function Gs(){if(Pa)return xa;return Pa=1,xa=function(){return[]}}function Fs(){if(Ca)return ja;Ca=1;var t=Hs(),e=Gs(),r=Object.prototype.propertyIsEnumerable,n=Object.getOwnPropertySymbols;return ja=n?function(e){return null==e?[]:(e=Object(e),t(n(e),(function(t){return r.call(e,t)})))}:e}function Is(){if(Na)return $a;Na=1;var t=Ds(),e=Fs(),r=Ps();return $a=function(n){return t(n,r,e)}}function zs(){if(Ea)return Oa;Ea=1;var t=Is(),e=Object.prototype.hasOwnProperty;return Oa=function(r,n,o,i,a,s){var u=1&o,c=t(r),f=c.length;if(f!=t(n).length&&!u)return!1;for(var h=f;h--;){var l=c[h];if(!(u?l in n:e.call(n,l)))return!1}var g=s.get(r),p=s.get(n);if(g&&p)return g==n&&p==r;var m=!0;s.set(r,n),s.set(n,r);for(var v=u;++h<f;){var d=r[l=c[h]],b=n[l];if(i)var y=u?i(b,d,l,n,r,s):i(d,b,l,r,n,s);if(!(void 0===y?d===b||a(d,b,o,i,s):y)){m=!1;break}v||(v="constructor"==l)}if(m&&!v){var w=r.constructor,k=n.constructor;w==k||!("constructor"in r)||!("constructor"in n)||"function"==typeof w&&w instanceof w&&"function"==typeof k&&k instanceof k||(m=!1)}return s.delete(r),s.delete(n),m}}function qs(){if(Ta)return Ba;Ta=1;var t=Se()(_e(),"DataView");return Ba=t}function Vs(){if(Aa)return Sa;Aa=1;var t=Se()(_e(),"Promise");return Sa=t}function Js(){if(Wa)return La;Wa=1;var t=Se()(_e(),"Set");return La=t}function Ys(){if(Ma)return Ua;Ma=1;var t=Se()(_e(),"WeakMap");return Ua=t}function Ks(){if(Ha)return Da;Ha=1;var t=qs(),e=Ae(),r=Vs(),n=Js(),o=Ys(),i=je(),a=Ee(),s="[object Map]",u="[object Promise]",c="[object Set]",f="[object WeakMap]",h="[object DataView]",l=a(t),g=a(e),p=a(r),m=a(n),v=a(o),d=i;return(t&&d(new t(new ArrayBuffer(1)))!=h||e&&d(new e)!=s||r&&d(r.resolve())!=u||n&&d(new n)!=c||o&&d(new o)!=f)&&(d=function(t){var e=i(t),r="[object Object]"==e?t.constructor:void 0,n=r?a(r):"";if(n)switch(n){case l:return h;case g:return s;case p:return u;case m:return c;case v:return f}return e}),Da=d}function Qs(){if(Fa)return Ga;Fa=1;var t=Xe(),e=As(),r=Us(),n=zs(),o=Ks(),i=Qr(),a=gn(),s=po(),u="[object Arguments]",c="[object Array]",f="[object Object]",h=Object.prototype.hasOwnProperty;return Ga=function(l,g,p,m,v,d){var b=i(l),y=i(g),w=b?c:o(l),k=y?c:o(g),_=(w=w==u?f:w)==f,R=(k=k==u?f:k)==f,x=w==k;if(x&&a(l)){if(!a(g))return!1;b=!0,_=!1}if(x&&!_)return d||(d=new t),b||s(l)?e(l,g,p,m,v,d):r(l,g,w,p,m,v,d);if(!(1&p)){var P=_&&h.call(l,"__wrapped__"),j=R&&h.call(g,"__wrapped__");if(P||j){var C=P?l.value():l,$=j?g.value():g;return d||(d=new t),v(C,$,p,m,d)}}return!!x&&(d||(d=new t),n(l,g,p,m,v,d))}}function Xs(){if(za)return Ia;za=1;var t=Qs(),e=Jr();return Ia=function r(n,o,i,a,s){return n===o||(null==n||null==o||!e(n)&&!e(o)?n!=n&&o!=o:t(n,o,i,a,r,s))},Ia}function Zs(){if(Va)return qa;Va=1;var t=Xe(),e=Xs();return qa=function(r,n,o,i){var a=o.length,s=a,u=!i;if(null==r)return!s;for(r=Object(r);a--;){var c=o[a];if(u&&c[2]?c[1]!==r[c[0]]:!(c[0]in r))return!1}for(;++a<s;){var f=(c=o[a])[0],h=r[f],l=c[1];if(u&&c[2]){if(void 0===h&&!(f in r))return!1}else{var g=new t;if(i)var p=i(h,l,f,r,n,g);if(!(void 0===p?e(l,h,3,i,g):p))return!1}}return!0}}function tu(){if(Ya)return Ja;Ya=1;var t=Ce();return Ja=function(e){return e==e&&!t(e)}}function eu(){if(Qa)return Ka;Qa=1;var t=tu(),e=Ps();return Ka=function(r){for(var n=e(r),o=n.length;o--;){var i=n[o],a=r[i];n[o]=[i,a,t(a)]}return n}}function ru(){if(Za)return Xa;return Za=1,Xa=function(t,e){return function(r){return null!=r&&(r[t]===e&&(void 0!==e||t in Object(r)))}}}function nu(){if(es)return ts;es=1;var t=Zs(),e=eu(),r=ru();return ts=function(n){var o=e(n);return 1==o.length&&o[0][2]?r(o[0][0],o[0][1]):function(e){return e===n||t(e,n,o)}}}function ou(){if(ns)return rs;return ns=1,rs=function(t,e){return null!=t&&e in Object(t)}}function iu(){if(is)return os;is=1;var t=bi(),e=Kr(),r=Qr(),n=wo(),o=Xr(),i=yi();return os=function(a,s,u){for(var c=-1,f=(s=t(s,a)).length,h=!1;++c<f;){var l=i(s[c]);if(!(h=null!=a&&u(a,l)))break;a=a[l]}return h||++c!=f?h:!!(f=null==a?0:a.length)&&o(f)&&n(l,f)&&(r(a)||e(a))}}function au(){if(ss)return as;ss=1;var t=ou(),e=iu();return as=function(r,n){return null!=r&&e(r,n,t)}}function su(){if(cs)return us;cs=1;var t=Xs(),e=ki(),r=au(),n=hi(),o=tu(),i=ru(),a=yi();return us=function(s,u){return n(s)&&o(u)?i(a(s),u):function(n){var o=e(n,s);return void 0===o&&o===u?r(n,s):t(u,o,3)}}}function uu(){if(hs)return fs;return hs=1,fs=function(t){return function(e){return null==e?void 0:e[t]}}}function cu(){if(gs)return ls;gs=1;var t=wi();return ls=function(e){return function(r){return t(r,e)}}}function fu(){if(ms)return ps;ms=1;var t=uu(),e=cu(),r=hi(),n=yi();return ps=function(o){return r(o)?t(n(o)):e(o)}}function hu(){if(ds)return vs;ds=1;var t=nu(),e=su(),r=$o(),n=Qr(),o=fu();return vs=function(i){return"function"==typeof i?i:null==i?r:"object"==typeof i?n(i)?e(i[0],i[1]):t(i):o(i)}}function lu(){if(ys)return bs;ys=1;var t=_s(),e=Ns(),r=hu(),n=Qr();return bs=function(o,i){return function(a,s){var u=n(a)?t:e,c=i?i():{};return u(a,o,r(s,2),c)}}}function gu(){if(ks)return ws;ks=1;var t=tr(),e=lu(),r=Object.prototype.hasOwnProperty,n=e((function(e,n,o){r.call(e,o)?e[o].push(n):t(e,o,[n])}));return ws=n}var pu=ue(gu());const mu="\n- ${scopeHeader} ${commitlint.message} ${commitLink} ${prLink}";class vu{options;constructor(t){this.options=t}format(t,e){const{types:r=[]}={...this.options,...e},n=[],o=pu(t,(t=>t.commitlint.type?t.commitlint.type:t.commitlint.message));return r.forEach((t=>{const{type:r,section:i,hidden:a}=t;if(a)return;const s=o[r]||[];s.length>0&&(n.push(i||""),s.forEach((t=>{if(n.push(this.formatCommit(t,e)),t.base.body){const e=t.base.body.split("\n").map((t=>` ${t}`));n.push(...e)}})))})),n}formatCommit(t,e){const{commitlint:r,base:{hash:n},prNumber:o}=t,{repoUrl:i,formatTemplate:a=mu}={...this.options,...e},s=r.scope?this.formatScope(r.scope):"",u=o?this.foramtLink("#"+o,i?`${i}/pull/${o}`:""):"",c=n?this.foramtLink(n.slice(0,7),i?`${i}/commit/${n}`:""):"";return this.options.shell.format(a,{...t,scopeHeader:s,commitLink:c,prLink:u})}foramtLink(t,e){return e?`([${t}](${e}))`:`(${t})`}formatCommitLink(t,e){return e?`([${t}](${e}))`:`(${t})`}formatScope(t){return`**${t}:**`}}const du="https://github.com";class bu extends Wi{options;githubManager;constructor(t,e){super(t),this.options=t,this.githubManager=e}async getFullCommit(t){const e={...this.options,...t},r=await this.getCommits(e);return(await Promise.all(r.map((async t=>{let{prNumber:e}=t;if(!e&&t.base.subject){const r=t.base.subject.match(/\(#(\d+)\)/);r&&(e=r[1],t.prNumber=e)}if(!e)return t;return(await this.githubManager.getPullRequestCommits(+e)).map((({sha:t,commit:{message:r}})=>Object.assign(this.toCommitValue(t,r),{prNumber:e})))})))).flat()}async transformWorkspace(t,e){const r=[du,e.shared.authorName,e.shared.repoName].join("/"),n={...e.getConfig("changelog"),githubRootPath:r,mergePRcommit:!0,shell:e.shell},o=new bu(n,this.githubManager),i=new vu(n);return await Promise.all(t.map((async t=>{const e=await o.getFullCommit({from:t.lastTag??"",directory:t.path,fileds:Li});if("string"==typeof e)return{...t,changelog:e};const a=i.format(e,{...n,repoUrl:r});return{...t,changelog:a.join("\n")}})))}}class yu{options;constructor(t){this.options=t}compare(t,e){return"function"==typeof this.options.compare?this.options.compare(t,e):t.startsWith(e)}toChangeLabel(t,e=this.options.changePackagesLabel){return e.replace("${name}",t)}toChangeLabels(t,e=this.options.changePackagesLabel){return t.map((t=>this.toChangeLabel(t,e)))}pick(t,e=this.options.packagesDirectories){const r=[];for(const n of e)for(const e of t)if(this.compare(e,n)){r.push(n);break}return r}}class wu{static readJson(t){const e=f(t,"utf-8");return JSON.parse(e)}static toWorkspace(t,e){let{root:r,packageJson:n}=t;const o=t.path;if(!o)throw new Error("path is not required!");return r=r||g(e,o),n=n||wu.readJson(g(r,Ri)),{name:n.name,version:n.version,path:o,root:r,packageJson:n}}}class ku extends Si{releaseTask=null;workspacesList=[];_skip=!1;releaseLabel;constructor(t){super(t,"workspaces"),this.releaseLabel=new yu({changePackagesLabel:this.context.shared.changePackagesLabel||"change:${name}",packagesDirectories:this.context.shared.packagesDirectories||[],compare:(t,e)=>i(t).startsWith(i(e))})}enabled(){return!this._skip&&!this.getConfig("skip")}async onBefore(){const t=this.getConfig("workspace");if(t)return this.logger.debug("Use the specified workspace",t),void this.setCurrentWorkspace(t,[]);const e=await this.getWorkspaces();if(this.getConfig("skipCheckPackage")||0===e.length)throw new Error("No changes to publish packages");const{publishPath:r}=this.context.shared;if(r){const t=e.find((t=>i(t.root)===i(r)));if(this.nextSkip(),!t)throw new Error(`No workspace found for: ${r}`);return this.logger.debug(`Workspace of ${r} find!`,a(t.root,Ri)),void this.setCurrentWorkspace(t,[t])}const[n,...o]=e;this.workspacesList=o,this.setCurrentWorkspace(n,e)}nextSkip(){this._skip=!0,this.logger.debug("skip next workspace")}setReleaseTask(t){this.releaseTask=t}setCurrentWorkspace(t,e){this.context.setShared({publishPath:t.path}),this.setConfig({workspace:t,workspaces:e})}async getGitWorkspaces(){const t=this.context.sourceBranch,e=await this.shell.exec(`git diff --name-only origin/${t}...HEAD`,{dryRun:!1});return"string"==typeof e?e.split("\n"):[]}async getChangedPackages(t,e){if(this.logger.debug("changeLabels",e),Array.isArray(e)&&e.length>0){const r=t.filter((t=>{const r=this.releaseLabel.toChangeLabel(t);return e.includes(r)}));return this.logger.debug("changed by labels",r),r}const r=await this.getGitWorkspaces();return this.logger.debug("changed by git",r),this.releaseLabel.pick(r,t)}getProjectWorkspaces(){const t=this.context.rootPath,e=this.context.shared.packagesDirectories;if(Array.isArray(e)&&e.length>0)return e.map((e=>wu.toWorkspace({path:e},t)));return(c(t)||[]).map((e=>({name:e.package.name,version:e.package.version,path:s(t,e.location),root:i(t,e.location),packageJson:e.package})))}async getWorkspaces(){const t=this.getProjectWorkspaces(),e=t.map((({path:t})=>t));this.logger.debug("packages",e);const r=this.getConfig("changeLabels"),n=await this.getChangedPackages(e,r);return this.setConfig({packages:e,changedPaths:n,projectWorkspaces:t}),this.logger.debug("changedPaths",n),t.filter((t=>n.includes(t.path)))}}function _u(t,...e){return"function"==typeof t&&t.prototype&&t.prototype.constructor===t?new t(...e):t(...e)}function Ru(t){return t.startsWith(".")?u(t).name:t}async function xu(t){let e=null;try{e=(await import(t)).default}catch{try{e=(await import(a(process.cwd(),t))).default}catch{const r=p(process.cwd());e=(await import(m(r.resolve(t,{paths:[process.cwd()]})).href)).default}}return[Ru(t),e]}async function Pu(t,e,r=5){const n=v(r),o=e.map((([e,...r])=>n((()=>(async(e,...r)=>{if("string"==typeof e){const[,n]=await xu(e);return _u(n,t,...r)}return _u(e,t,...r)})(e,...r)))));return Promise.all(o)}const ju=[ji(ku),ji(class extends Si{constructor(t,e){super(t,"changelog",{increment:"patch",changesetRoot:".changeset",tagTemplate:"${name}@${version}",tagPrefix:"${name}",tagMatch:"${name}@*",...e})}get changesetRoot(){return g(this.context.rootPath,this.getConfig("changesetRoot"))}get changesetConfigPath(){return g(this.changesetRoot,"config.json")}enabled(){return!this.getConfig("skip")}async onBefore(){if(!h(this.changesetRoot))throw new Error(`Changeset directory ${this.changesetRoot} does not exist`);this.logger.debug(`${this.changesetRoot} exists`)}mergeWorkspaces(t){return t.map((t=>{const e=wu.toWorkspace({path:t.path},this.context.rootPath),r={...t,version:e.version};return r.tagName=this.generateTagName(r),r}))}async onExec(t){const e=await this.step({label:"Generate Changelogs",task:()=>Promise.all(this.context.workspaces.map((t=>this.generateChangelog(t))))});this.context.setWorkspaces(e)}async onSuccess(){const t=this.context.workspaces;this.getConfig("skipChangeset")?this.logger.debug("Skip generate changeset files"):(await this.step({label:"Changeset Version",task:()=>Promise.all(t.map((t=>this.generateChangesetFile(t))))}),await this.context.runChangesetsCli("version",["--no-changelog","--update-dependencies"]),this.getConfig("ignoreNonUpdatedPackages")&&await this.restoreIgnorePackages());const e=this.mergeWorkspaces(t);this.logger.debug("new workspaces",e),this.context.setWorkspaces(e)}async restoreIgnorePackages(){const{changedPaths:t=[],packages:e=[]}=this.context.getConfig("workspaces"),r=e.filter((e=>!t.includes(e))).map((t=>wu.toWorkspace({path:t},this.context.rootPath).path));this.logger.debug("noChangedPackages",r),await this.shell.exec(["git","restore",...r])}getTagPrefix(t){return this.shell.format(this.getConfig("tagPrefix"),t)}async generateChangelog(t){const e=await this.getTagName(t);this.logger.debug("tagName is:",e);const r={...this.getConfig(),from:e,directory:t.path,shell:this.shell,fileds:Li},n=new Wi(r),o=await n.getCommits(r),i=new vu(r).format(o);return{...t,lastTag:e,changelog:i.join("\n")}}generateTagName(t){try{const e=this.getConfig("tagTemplate");return this.shell.format(e,t)}catch(e){return console.error(`Error generating tag name for ${t.name}:`,e),`${t.name}-v0.0.0`}}async getTagName(t){try{const e=this.generateTagName(t),r=this.shell.format(this.getConfig("tagMatch"),t),n=await this.shell.exec(`git for-each-ref --sort=-creatordate --format "%(refname:short)|%(creatordate:iso8601)" "refs/tags/${r}"`,{dryRun:!1});if(!n)return e;const o=n.split("\n").filter(Boolean);if(0===o.length)return e;return o[0].split("|")[0]}catch(e){console.error(`Error getting tag for ${t.name}:`,e);return this.generateTagName(t)}}getIncrement(){const t=this.context.getConfig("workspaces.changeLabels");if(Array.isArray(t)&&t.length>0){if(t.includes("increment:major"))return"major";if(t.includes("increment:minor"))return"minor"}return this.getConfig("increment","patch")}async generateChangesetFile(t){const{name:e,version:r}=t,n=`${e}-${r}`.replace(/[\/\\]/g,"_"),o=g(this.changesetRoot,`${n}.md`),i=this.getIncrement();this.logger.debug("increment is:",[i]);const a=this.shell.format("---\n'${name}': '${increment}'\n---\n\n${changelog}",{...t,increment:i});if(this.context.dryRun)return this.logger.info(`Changeset [${o}] will be created, content is:`),void this.logger.log(a);h(o)?this.logger.info(`Changeset ${n} already exists`):l(o,a,"utf-8")}},{}),ji(class extends Ai{context;releaseParams;githubManager;constructor(t,e){super(t,"githubPR",{releaseName:"Release ${name} v${version}",...e}),this.context=t,this.githubManager=new Ni(this.context),this.releaseParams=new $i(t.shell,t.logger,{PRTitle:this.getConfig("PRTitle",this.context.shared.PRTitle),PRBody:this.getConfig("PRBody",this.context.shared.PRBody),...this.props})}enabled(t){return!this.getConfig("skip")}get isPublish(){return!this.getConfig("releasePR")}async isGithubRepository(){try{return(await this.getRemoteUrl()).includes("github.com")}catch{return!1}}async onBefore(){this.logger.debug("GithubPR onBefore");if(!await this.isGithubRepository())throw new Error("Current repository is not a GitHub repository. GitHub PR workflow is only available for GitHub repositories.");if(await super.onBefore(),this.isPublish){const t=this.getEnv("NPM_TOKEN");if(!t)throw new Error("NPM_TOKEN is not set");await this.shell.exec(`npm config set //registry.npmjs.org/:_authToken=${t}`)}}async onExec(){const t=this.context.workspaces,e=new bu(this.context.getConfig("changelog"),this.githubManager),r=await this.step({label:"GithubPR Changelogs",task:()=>e.transformWorkspace(t,this.context)});this.context.setWorkspaces(r),this.logger.debug("github changelog",this.context.workspaces)}async onSuccess(){this.isPublish?await this.publishPR(this.context.workspaces):await this.releasePR(this.context.workspaces)}async releasePR(t){await this.step({label:"Release Commit",task:()=>this.relesaeCommit(t)});const e=await this.step({label:"Create Release Branch",task:()=>this.createReleaseBranch(t)});await this.releasePullRequest(t,e)}async publishPR(t){this.getConfig("dryRunCreatePR")||(await this.context.runChangesetsCli("publish"),await this.shell.exec("git push origin --tags")),await this.step({label:"Release Github",task:()=>Promise.all(t.map((t=>(this.logger.debug(t),this.githubManager.createRelease(t)))))})}async relesaeCommit(t){const e=this.getConfig("commitArgs",[]);if(1===t.length)return await this.shell.exec("git add ."),void await this.commitWorkspace(t[0],e);await this.shell.exec("git add .");const r=`chore(tag): ${t.map((t=>`${t.name} v${t.version}`)).join(",")}`;await this.commit(r,e)}async releasePullRequest(t,e){const r=await this.step({label:"Create Release PR",task:()=>this.createReleasePR(t,e)});if(this.githubManager.autoMergeReleasePR){const{releaseBranch:t}=e;return await this.step({label:`Merge Release PR(${r})`,task:()=>this.githubManager.mergePR(r,t)}),void await this.step({label:`Checked Release PR(${r})`,task:()=>this.githubManager.checkedPR(r,t)})}this.logger.info(`Please manually merge PR(#${r}) and complete the publishing process afterwards`)}async commitWorkspace(t,e=[]){const r=this.shell.format(this.getConfig("commitMessage","chore(tag): ${name} v${version}"),t);return await this.commit(r,e)}async createReleaseBranch(t){const e=this.releaseParams.getReleaseBranchParams(t,this.context.getTemplateContext()),{tagName:r,releaseBranch:n}=e;if("string"!=typeof r)throw new Error("Tag name is not a string");const{sourceBranch:o,currentBranch:i}=this.context.shared;this.context.logger.debug("PR TagName is:",r),this.context.logger.debug("PR CurrentBranch is:",i),this.context.logger.debug("PR SourceBranch is:",o),this.context.logger.debug("PR ReleaseBranch is:",n);try{await this.context.shell.exec(`git fetch origin ${o} ${i}`),await this.context.shell.exec(`git checkout -b ${n} ${i}`),await this.context.shell.exec(`git push origin ${n}`)}catch(t){throw t.message.includes("remote: Permission to ")&&this.context.logger.warn('Token maybe not allow Workflow permissions, can you try to open "Workflow permissions" -> "Read and write permissions" for this token?'),t}return{tagName:r,releaseBranch:n}}async createReleasePR(t,e){let r=[(await this.githubManager.createReleasePRLabel()).name];if(this.getConfig("pushChangeLabels")){const t=this.context.getConfig("workspaces.changeLabels");Array.isArray(t)&&t.length>0&&r.push(...t)}r=Array.from(new Set(r)),this.logger.debug("Release PR labels:",r);const n=this.context.getTemplateContext(),o=this.releaseParams.getPRTitle(e,n),i=this.releaseParams.getPRBody(t,e,n);return this.githubManager.createReleasePR({title:o,body:i,base:this.context.sourceBranch,head:e.releaseBranch,labels:r})}},{})];class Cu{executor;defaultTuples;context;constructor(t={},e=new r,n=ju){this.executor=e,this.defaultTuples=n,this.context=new Pi(t)}getContext(){return this.context}async usePlugins(t){t=t||this.context.shared.plugins||[];const e=await Pu(this.context,[...this.defaultTuples,...t]);return e.forEach((t=>{t instanceof ku&&t.setReleaseTask(this),this.executor.use(t)})),e}async run(){return this.executor.exec(this.context,(t=>Promise.resolve(t)))}async exec(t){if("false"===this.context.env.get("FE_RELEASE"))throw new Error("Skip Release");return await this.usePlugins(t),this.run()}}var $u,Nu,Ou,Eu;function Bu(){if(Nu)return $u;Nu=1;var t=vo(),e=bi(),r=wo(),n=Ce(),o=yi();return $u=function(i,a,s,u){if(!n(i))return i;for(var c=-1,f=(a=e(a,i)).length,h=f-1,l=i;null!=l&&++c<f;){var g=o(a[c]),p=s;if("__proto__"===g||"constructor"===g||"prototype"===g)return i;if(c!=h){var m=l[g];void 0===(p=u?u(m,g,l):void 0)&&(p=n(m)?m:r(a[c+1])?[]:{})}t(l,g,p),l=l[g]}return i}}function Tu(){if(Eu)return Ou;Eu=1;var t=Bu();return Ou=function(e,r,n){return null==e?e:t(e,r,n)}}var Su=ue(Tu());function Au(t,e){return Object.entries(t).reduce(((t,[r,n])=>(r.includes(".")?Su(t,r,n):Su(t,e?`${e}.${r}`:r,n),t)),{})}export{Li as CHANGELOG_ALL_FIELDS,Wi as GitChangelog,vu as GitChangelogFormatter,Si as Plugin,Pi as ReleaseContext,yu as ReleaseLabel,Cu as ReleaseTask,_u as factory,xu as load,Pu as loaderPluginsFromPluginTuples,Au as reduceOptions,ji as tuple};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@qlover/fe-release",
3
3
  "description": "A tool for releasing front-end projects, supporting multiple release modes and configurations, simplifying the release process and improving efficiency.",
4
- "version": "2.1.5",
4
+ "version": "2.2.0",
5
5
  "type": "module",
6
6
  "private": false,
7
7
  "homepage": "https://github.com/qlover/fe-base/tree/master/packages/fe-release",
@@ -53,10 +53,12 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "@octokit/rest": "^21.0.2",
56
+ "find-workspaces": "^0.3.1",
57
+ "gitlog": "^5.1.0",
56
58
  "lodash": "^4.17.21",
57
59
  "@qlover/env-loader": "0.3.0",
58
- "@qlover/logger": "0.1.1",
59
60
  "@qlover/scripts-context": "0.2.1",
61
+ "@qlover/logger": "0.1.1",
60
62
  "@qlover/fe-corekit": "1.3.1"
61
63
  },
62
64
  "scripts": {