docs: 📝 配置git规范

This commit is contained in:
CodiceFabbrica 2026-03-17 17:36:55 +08:00
parent 871cbcb831
commit 0e489da387
16 changed files with 829 additions and 370 deletions

View File

@ -19,7 +19,9 @@
"Bash(npm view @typescript-eslint/parser@latest peerDependencies)",
"Bash(npm view @typescript-eslint/parser@latest version)",
"Bash(pnpm list typescript)",
"Bash(pnpm list @typescript-eslint/parser @typescript-eslint/eslint-plugin typescript-eslint)"
"Bash(pnpm list @typescript-eslint/parser @typescript-eslint/eslint-plugin typescript-eslint)",
"Bash(npm view @commitlint/cz-commitlint@latest peerDependencies)",
"Bash(npm view inquirer@9 version)"
]
}
}

2
.czrc
View File

@ -1,3 +1,3 @@
{
"path": "@commitlint/cz-commitlint"
"path": "node_modules/cz-git"
}

View File

@ -0,0 +1,95 @@
## PR 类型
请勾选此 PR 的类型:
- [ ] 🐛 Bug 修复
- [ ] ✨ 新功能
- [ ] 📚 文档更新
- [ ] 🚀 性能优化
- [ ] 📦 代码重构
- [ ] 🚨 测试相关
- [ ] 🛠 构建/工具相关
- [ ] ♻️ 其他
## 相关 Issue
关联的 Issue: #(issue 编号)
## 变更说明
请简要描述此 PR 的变更内容:
<!--
例如:
- 添加了 debounce 防抖函数
- 修复了蓝牙连接超时的问题
- 优化了 mergeClass 的性能
-->
## 变更详情
### 主要改动
<!-- 详细说明主要的代码变更 -->
### 影响范围
- [ ] @r-utils/common
- [ ] @r-utils/vue3
- [ ] @r-utils/vue2
- [ ] @r-utils/uni-app
- [ ] 构建配置
- [ ] 文档
- [ ] 其他: ___________
## 测试
### 测试用例
- [ ] 已添加/更新单元测试
- [ ] 所有测试通过 (`pnpm test`)
- [ ] 已手动测试
### 测试说明
<!-- 描述如何测试此变更,包括测试环境、测试步骤等 -->
## 检查清单
请确认以下事项:
- [ ] 代码遵循项目的代码规范
- [ ] 已运行 `pnpm lint` 且无错误
- [ ] 已运行 `pnpm format` 格式化代码
- [ ] 提交信息符合 Conventional Commits 规范
- [ ] 已更新相关文档(如有必要)
- [ ] 已添加/更新测试用例(如有必要)
- [ ] 所有测试通过
- [ ] 不包含破坏性变更(或已在下方说明)
## 破坏性变更
- [ ] 此 PR 包含破坏性变更
如果包含破坏性变更,请详细说明:
<!--
- 变更了什么 API
- 为什么需要这个变更
- 迁移指南
-->
## 截图/录屏
<!-- 如果是 UI 相关的变更,请提供截图或录屏 -->
## 其他信息
<!-- 任何其他需要说明的信息 -->
---
**注意事项:**
- 请确保 PR 标题简洁明了,遵循 Conventional Commits 规范
- 如果 PR 解决了某个 Issue,请在描述中使用 `fix #123``close #123` 关联
- 大型 PR 建议先创建 Issue 讨论方案

95
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,95 @@
## PR 类型
请勾选此 PR 的类型:
- [ ] 🐛 Bug 修复
- [ ] ✨ 新功能
- [ ] 📚 文档更新
- [ ] 🚀 性能优化
- [ ] 📦 代码重构
- [ ] 🚨 测试相关
- [ ] 🛠 构建/工具相关
- [ ] ♻️ 其他
## 相关 Issue
关联的 Issue: #(issue 编号)
## 变更说明
请简要描述此 PR 的变更内容:
<!--
例如:
- 添加了 debounce 防抖函数
- 修复了蓝牙连接超时的问题
- 优化了 mergeClass 的性能
-->
## 变更详情
### 主要改动
<!-- 详细说明主要的代码变更 -->
### 影响范围
- [ ] @r-utils/common
- [ ] @r-utils/vue3
- [ ] @r-utils/vue2
- [ ] @r-utils/uni-app
- [ ] 构建配置
- [ ] 文档
- [ ] 其他: ___________
## 测试
### 测试用例
- [ ] 已添加/更新单元测试
- [ ] 所有测试通过 (`pnpm test`)
- [ ] 已手动测试
### 测试说明
<!-- 描述如何测试此变更,包括测试环境、测试步骤等 -->
## 检查清单
请确认以下事项:
- [ ] 代码遵循项目的代码规范
- [ ] 已运行 `pnpm lint` 且无错误
- [ ] 已运行 `pnpm format` 格式化代码
- [ ] 提交信息符合 Conventional Commits 规范
- [ ] 已更新相关文档(如有必要)
- [ ] 已添加/更新测试用例(如有必要)
- [ ] 所有测试通过
- [ ] 不包含破坏性变更(或已在下方说明)
## 破坏性变更
- [ ] 此 PR 包含破坏性变更
如果包含破坏性变更,请详细说明:
<!--
- 变更了什么 API
- 为什么需要这个变更
- 迁移指南
-->
## 截图/录屏
<!-- 如果是 UI 相关的变更,请提供截图或录屏 -->
## 其他信息
<!-- 任何其他需要说明的信息 -->
---
**注意事项:**
- 请确保 PR 标题简洁明了,遵循 Conventional Commits 规范
- 如果 PR 解决了某个 Issue,请在描述中使用 `fix #123``close #123` 关联
- 大型 PR 建议先创建 Issue 讨论方案

View File

@ -122,12 +122,20 @@ pnpm format
### Git 提交
项目使用 [Conventional Commits](https://www.conventionalcommits.org/) 规范,通过 `commitizen` + `cz-git` 提供交互式提交体验。
```bash
# 使用 commitizen遵循 conventional commits
# 使用交互式提交(推荐)
pnpm commit
```
提交时 husky 会自动运行 lint-staged 和 jest 测试。
提交时 husky 会自动运行:
- `lint-staged` - 代码检查和格式化
- `jest` - 单元测试
- `commitlint` - 提交信息格式校验
详细说明请参考 [提交规范指南](./docs/COMMIT_GUIDE.md)。
## 发布
@ -210,7 +218,14 @@ r-util-js/
## 参与贡献
欢迎贡献代码!请先阅读:
- [贡献指南](./docs/CONTRIBUTING.md) - 了解开发流程和规范
- [提交规范指南](./docs/COMMIT_GUIDE.md) - 了解 Git 提交规范
基本流程:
1. Fork 本仓库
2. 新建 `feat/xxx` 分支
3. 提交代码
2. 新建分支 `feat/xxx``fix/xxx`
3. 提交代码(使用 `pnpm commit`)
4. 新建 Pull Request

View File

@ -14,16 +14,68 @@
module.exports = {
extends: ["@commitlint/config-conventional"],
// rules: {
// "type-enum": [
// 2,
// "always",
// ["feat", "fix", "docs", "style", "refactor", "test", "chore", "revert"],
// ],
// "subject-full-stop": [0, "never"],
// "subject-case": [0, "never"],
// },
rules: {
// 限制提交类型
"type-enum": [
2,
"always",
[
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"build",
"ci",
"chore",
"revert",
],
],
// scope 可选,但如果提供必须是以下之一
"scope-enum": [
2,
"always",
["common", "vue3", "vue2", "uni-app", "deps", "release"],
],
// subject 不能为空
"subject-empty": [2, "never"],
// subject 不能以句号结尾
"subject-full-stop": [2, "never", "."],
// subject 不限制大小写
"subject-case": [0],
// type 必须小写
"type-case": [2, "always", "lower-case"],
// scope 必须小写
"scope-case": [2, "always", "lower-case"],
// subject 最小长度
"subject-min-length": [2, "always", 4],
// subject 最大长度
"subject-max-length": [2, "always", 100],
// header 最大长度(type + scope + subject)
"header-max-length": [2, "always", 120],
// body 每行最大长度
"body-max-line-length": [2, "always", 200],
// footer 每行最大长度
"footer-max-line-length": [2, "always", 200],
},
prompt: {
useEmoji: true,
emojiAlign: "center",
allowCustomIssuePrefix: false,
allowEmptyIssuePrefix: false,
// 定义 scope 选项
scopes: [
{ value: "common", name: "common: @r-utils/common 包" },
{ value: "vue3", name: "vue3: @r-utils/vue3 包" },
{ value: "vue2", name: "vue2: @r-utils/vue2 包" },
{ value: "uni-app", name: "uni-app: @r-utils/uni-app 包" },
{ value: "deps", name: "deps: 依赖更新" },
{ value: "release", name: "release: 版本发布" },
],
allowCustomScopes: false,
allowEmptyScopes: true,
messages: {
skip: "跳过",
max: "最多 %d 个字符",
@ -96,7 +148,7 @@ module.exports = {
},
},
scope: {
description: "更改的范围scope组件 或 文件名",
description: "更改的范围scopecommon、vue3、uni-app",
},
subject: {
description: "主题subject",

234
docs/COMMIT_GUIDE.md Normal file
View File

@ -0,0 +1,234 @@
# Git 提交规范指南
本项目使用 [Conventional Commits](https://www.conventionalcommits.org/) 规范,通过 `commitizen` + `cz-git` 提供交互式提交体验。
## 快速开始
### 使用交互式提交(推荐)
```bash
# 1. 暂存你的更改
git add .
# 2. 使用交互式提交
pnpm commit
```
交互式提交会引导你完成:
1. 选择提交类型(feat/fix/docs 等)
2. 选择影响范围(common/vue3/uni-app 等,可跳过)
3. 输入简短描述(必填,4-100 字符)
4. 输入详细描述(可选)
5. 是否有破坏性变更(可选)
6. 关联 Issue(可选)
### 手动提交
如果你熟悉规范,也可以手动提交:
```bash
git commit -m "feat(common): 添加 debounce 防抖函数"
```
## 提交信息格式
```
<type>(<scope>): <subject>
<body>
<footer>
```
### Type(必填)
| 类型 | Emoji | 说明 | 示例 |
|------|-------|------|------|
| `feat` | ✨ | 新功能 | `feat(common): 添加 throttle 节流函数` |
| `fix` | 🐛 | Bug 修复 | `fix(uni-app): 修复蓝牙连接超时问题` |
| `docs` | 📚 | 文档更新 | `docs: 更新 README 安装说明` |
| `style` | 💎 | 代码格式(不影响逻辑) | `style(vue3): 格式化代码缩进` |
| `refactor` | 📦 | 重构(不是新功能也不是修复) | `refactor(common): 优化 Permission 类实现` |
| `perf` | 🚀 | 性能优化 | `perf(vue3): 优化 mergeClass 性能` |
| `test` | 🚨 | 测试相关 | `test(common): 添加 timer 单元测试` |
| `build` | 🛠 | 构建系统或依赖更新 | `build: 升级 webpack 到 5.80` |
| `ci` | ⚙️ | CI 配置更新 | `ci: 添加 GitHub Actions 配置` |
| `chore` | ♻️ | 其他杂项 | `chore: 更新 .gitignore` |
| `revert` | 🗑 | 回滚之前的提交 | `revert: 回滚 feat(common): xxx` |
### Scope(可选)
影响范围,必须是以下之一:
- `common` - @r-utils/common 包
- `vue3` - @r-utils/vue3 包
- `vue2` - @r-utils/vue2 包
- `uni-app` - @r-utils/uni-app 包
- `deps` - 依赖更新
- `release` - 版本发布
如果改动影响多个包或不属于特定包,可以省略 scope。
### Subject(必填)
简短描述,要求:
- 长度: 4-100 字符
- 使用祈使句,如"添加"而不是"添加了"
- 首字母小写
- 结尾不加句号
### Body(可选)
详细描述,说明:
- 改动的原因
- 与之前行为的对比
- 实现细节
每行不超过 200 字符。
### Footer(可选)
用于:
- 关联 Issue: `fix #123``close #456`
- 说明破坏性变更: `BREAKING CHANGE: xxx`
## 提交示例
### 基础示例
```bash
# 新功能
feat(common): 添加 debounce 防抖函数
# Bug 修复
fix(uni-app): 修复蓝牙连接超时问题
# 文档更新
docs: 更新安装说明
# 重构
refactor(vue3): 优化 mergeClass 实现逻辑
```
### 带 Body 的示例
```bash
feat(common): 添加 throttle 节流函数
实现了一个通用的节流函数,支持:
- 自定义延迟时间
- leading 和 trailing 选项
- 取消功能
```
### 关联 Issue 的示例
```bash
fix(uni-app): 修复蓝牙连接超时问题
修复了在某些 Android 设备上蓝牙连接超时的问题,
通过增加重试机制和优化超时时间来提高连接成功率。
fix #123
```
### 破坏性变更示例
```bash
feat(common)!: 重构 Permission 类 API
BREAKING CHANGE: Permission 类的构造函数参数已更改
之前:
new Permission('module:action')
现在:
new Permission({ module: 'module', action: 'action' })
迁移指南请参考文档。
```
## 提交规则
项目通过 `commitlint` 强制执行以下规则:
1. **type 必须是允许的类型之一**
2. **scope 如果提供,必须是允许的范围之一**
3. **subject 不能为空,长度 4-100 字符**
4. **subject 不能以句号结尾**
5. **type 和 scope 必须小写**
6. **header 总长度不超过 120 字符**
7. **body 和 footer 每行不超过 200 字符**
如果提交信息不符合规范,`commit-msg` hook 会阻止提交并提示错误。
## Git Hooks
项目配置了以下 Git Hooks:
### pre-commit
运行 `lint-staged`,自动检查和修复:
- ESLint 代码检查
- Prettier 代码格式化
- Jest 单元测试
### commit-msg
使用 `commitlint` 校验提交信息格式。
## 常见问题
### Q: 提交被拒绝怎么办?
**A:** 检查以下几点:
1. 提交信息格式是否正确
2. 代码是否通过 ESLint 检查
3. 测试是否全部通过
### Q: 如何跳过 hooks?
**A:** 不建议跳过 hooks,但如果确实需要:
```bash
git commit --no-verify -m "your message"
```
### Q: 如何修改上一次提交?
**A:** 使用 `git commit --amend`:
```bash
# 修改提交信息
git commit --amend
# 添加遗漏的文件
git add forgotten-file.js
git commit --amend --no-edit
```
### Q: 提交信息写错了怎么办?
**A:** 如果还没有 push,可以修改:
```bash
# 修改最后一次提交
git commit --amend
# 修改更早的提交(交互式 rebase)
git rebase -i HEAD~3
```
如果已经 push,不建议修改,可以创建新的提交来修正。
## 参考资料
- [Conventional Commits 规范](https://www.conventionalcommits.org/)
- [cz-git 文档](https://cz-git.qbb.sh/)
- [commitlint 文档](https://commitlint.js.org/)
- [Angular 提交规范](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit)
## 相关文档
- [贡献指南](./CONTRIBUTING.md)
- [Pull Request 模板](../.github/PULL_REQUEST_TEMPLATE.md)

220
docs/CONTRIBUTING.md Normal file
View File

@ -0,0 +1,220 @@
# 贡献指南
感谢你对 `@r-utils` 项目的关注!本文档将帮助你了解如何参与项目贡献。
## 开发环境要求
- Node.js >= 18.12.0
- pnpm 8.15.6
## 快速开始
### 1. Fork 并克隆仓库
```bash
# 克隆你 fork 的仓库
git clone https://gitee.com/your-username/r-util-js.git
cd r-util-js
# 安装依赖
pnpm install
```
### 2. 创建分支
```bash
# 从 master 分支创建新分支
git checkout -b feat/your-feature-name
# 或
git checkout -b fix/your-bug-fix
```
分支命名规范:
- `feat/xxx` - 新功能
- `fix/xxx` - Bug 修复
- `docs/xxx` - 文档更新
- `refactor/xxx` - 代码重构
- `test/xxx` - 测试相关
- `chore/xxx` - 构建/工具相关
### 3. 开发与测试
```bash
# 构建所有包
pnpm build
# 运行测试
pnpm test
# 代码检查
pnpm lint
# 代码格式化
pnpm format
```
### 4. 提交代码
本项目使用 **Conventional Commits** 规范,并通过 `commitizen` + `cz-git` 提供交互式提交体验。
#### 使用交互式提交(推荐)
```bash
# 暂存你的更改
git add .
# 使用交互式提交
pnpm commit
```
交互式提交会引导你完成以下步骤:
1. **选择提交类型** - feat/fix/docs 等
2. **输入影响范围** - 可选,如 common/vue3/uni-app
3. **输入简短描述** - 必填,简明扼要说明改动
4. **输入详细描述** - 可选,提供更多上下文
5. **是否有破坏性变更** - 如果有,需要详细说明
6. **关联 Issue** - 可选,如 `fix #123`
#### 手动提交
如果你熟悉规范,也可以手动提交:
```bash
git commit -m "feat(common): 添加新的工具函数"
git commit -m "fix(vue3): 修复 mergeClass 类型错误"
git commit -m "docs: 更新 README 文档"
```
#### 提交信息格式
```
<type>(<scope>): <subject>
<body>
<footer>
```
**Type 类型:**
- `feat` ✨ - 新功能
- `fix` 🐛 - Bug 修复
- `docs` 📚 - 文档更新
- `style` 💎 - 代码格式(不影响代码逻辑)
- `refactor` 📦 - 重构(既不是新功能也不是修复)
- `perf` 🚀 - 性能优化
- `test` 🚨 - 测试相关
- `build` 🛠 - 构建系统或依赖更新
- `ci` ⚙️ - CI 配置更新
- `chore` ♻️ - 其他杂项(构建流程、依赖管理等)
- `revert` 🗑 - 回滚之前的提交
**Scope 范围(可选):**
- `common` - @r-utils/common 包
- `vue3` - @r-utils/vue3 包
- `vue2` - @r-utils/vue2 包
- `uni-app` - @r-utils/uni-app 包
- 或具体的文件/模块名
**Subject 主题:**
- 简短描述(建议 50 字符以内)
- 使用祈使句,如"添加"而不是"添加了"
- 首字母小写
- 结尾不加句号
**示例:**
```bash
# 好的提交信息
feat(common): 添加 debounce 防抖函数
fix(uni-app): 修复蓝牙连接超时问题
docs: 更新安装说明
refactor(vue3): 优化 mergeClass 实现逻辑
# 不好的提交信息
update code
fix bug
修改了一些文件
```
### 5. 推送并创建 Pull Request
```bash
# 推送到你的 fork 仓库
git push origin feat/your-feature-name
```
然后在 Gitee 上创建 Pull Request,请参考 [PR 模板](.gitee/PULL_REQUEST_TEMPLATE.md)填写相关信息。
## Git Hooks
项目配置了以下 Git Hooks(通过 husky):
- **pre-commit** - 运行 `lint-staged` 检查代码格式和 lint
- **commit-msg** - 使用 `commitlint` 校验提交信息格式
如果提交被拒绝,请检查:
1. 代码是否通过 ESLint 检查
2. 提交信息是否符合规范
3. 测试是否全部通过
## 代码规范
### JavaScript/TypeScript
- 使用 ESLint + Prettier 进行代码检查和格式化
- 遵循项目的 `.eslintrc` 配置
- 提交前运行 `pnpm lint``pnpm format`
### 测试
- 为新功能编写单元测试
- 确保所有测试通过: `pnpm test`
- 测试文件放在各包的 `test/` 目录下
- 使用 Jest 作为测试框架
### 文档
- 为新功能添加 JSDoc 注释
- 更新相关的 README 文档
- 如果是重大变更,更新 CHANGELOG
## Monorepo 结构
```
r-util-js/
├── packages/
│ ├── common/ # 通用工具库
│ ├── vue3/ # Vue3 工具
│ ├── vue2/ # Vue2 工具
│ └── uni-app/ # uni-app 工具
├── scripts/ # 构建和发布脚本
└── docs/ # 文档
```
## 发布流程
发布由维护者负责,使用 `standard-version` 自动生成版本号和 CHANGELOG:
```bash
# 生成版本和 CHANGELOG
pnpm release
# 发布到 npm
pnpm publish -r
```
## 需要帮助?
- 查看 [README.md](../README.md) 了解项目概况
- 查看 [CLAUDE.md](../CLAUDE.md) 了解项目架构
- 在 [Issues](https://gitee.com/codice_fabbrica/r-util-js/issues) 提问或报告 Bug
- 联系维护者: randy1924@163.com
## 行为准则
- 尊重所有贡献者
- 提供建设性的反馈
- 专注于对项目最有利的事情
- 保持友好和专业的态度
感谢你的贡献! 🎉

View File

@ -49,20 +49,20 @@
"@babel/preset-env": "^7.29.2",
"@babel/preset-typescript": "^7.28.5",
"@commitlint/config-conventional": "^20.5.0",
"@commitlint/cz-commitlint": "^20.5.0",
"@eslint/js": "^10.0.1",
"@jest/globals": "^30.3.0",
"@typescript-eslint/eslint-plugin": "^8.57.1",
"@typescript-eslint/parser": "^8.57.1",
"babel-jest": "^30.3.0",
"commitizen": "^4.3.1",
"cz-git": "^1.12.0",
"eslint": "^10.0.3",
"eslint-config-prettier": "^10.1.8",
"eslint-define-config": "^1.18.0",
"eslint-plugin-prettier": "^5.5.5",
"globals": "^17.4.0",
"husky": "^9.1.7",
"inquirer": "^13.3.2",
"inquirer": "^9.3.8",
"jest": "^30.3.0",
"lint-staged": "^16.4.0",
"prettier": "^3.8.1",

View File

@ -1,12 +1,12 @@
{
"name": "@r-utils/common",
"version": "1.0.0",
"version": "1.0.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@r-utils/common",
"version": "1.0.0",
"version": "1.0.2",
"dependencies": {
"@r-utils/common": "file:",
"dayjs": "^1.11.13",

View File

@ -1,6 +1,6 @@
{
"name": "@r-utils/common",
"version": "1.0.1",
"version": "1.0.2",
"private": false,
"description": "js通用工具库",
"type": "module",

View File

@ -1,12 +1,12 @@
{
"name": "@r-utils/uni-app",
"version": "1.0.0",
"version": "1.0.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@r-utils/uni-app",
"version": "1.0.0",
"version": "1.0.1",
"dependencies": {
"@r-utils/root": "file:",
"@r-utils/uni-app": "file:",

View File

@ -1,12 +1,12 @@
{
"name": "@r-utils/vue2",
"version": "1.0.0",
"version": "1.0.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@r-utils/vue2",
"version": "1.0.0",
"version": "1.0.1",
"dependencies": {
"@r-utils/vue2": "file:",
"lodash": "^4.17.21"

View File

@ -1,12 +1,12 @@
{
"name": "@r-utils/vue3",
"version": "1.0.0",
"version": "1.0.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@r-utils/vue3",
"version": "1.0.0",
"version": "1.0.2",
"license": "ISC",
"dependencies": {
"@r-utils/vue3": "file:",

View File

@ -1,6 +1,6 @@
{
"name": "@r-utils/vue3",
"version": "1.0.1",
"version": "1.0.2",
"private": false,
"description": "Vue3 工具",
"type": "module",

View File

@ -20,9 +20,6 @@ importers:
'@commitlint/config-conventional':
specifier: ^20.5.0
version: 20.5.0
'@commitlint/cz-commitlint':
specifier: ^20.5.0
version: 20.5.0(@types/node@25.5.0)(commitizen@4.3.1)(inquirer@13.3.2)(typescript@5.9.3)
'@eslint/js':
specifier: ^10.0.1
version: 10.0.1(eslint@10.0.3)
@ -41,6 +38,9 @@ importers:
commitizen:
specifier: ^4.3.1
version: 4.3.1(@types/node@25.5.0)(typescript@5.9.3)
cz-git:
specifier: ^1.12.0
version: 1.12.0
eslint:
specifier: ^10.0.3
version: 10.0.3
@ -60,8 +60,8 @@ importers:
specifier: ^9.1.7
version: 9.1.7
inquirer:
specifier: ^13.3.2
version: 13.3.2(@types/node@25.5.0)
specifier: ^9.3.8
version: 9.3.8(@types/node@25.5.0)
jest:
specifier: ^30.3.0
version: 30.3.0(@types/node@25.5.0)
@ -1451,44 +1451,14 @@ packages:
'@commitlint/types': 20.5.0
ajv: 8.18.0
dev: true
/@commitlint/cz-commitlint@20.5.0(@types/node@25.5.0)(commitizen@4.3.1)(inquirer@13.3.2)(typescript@5.9.3):
resolution: {integrity: sha512-DqhcftvM+gqAUfidJ91Vq7RUj+czVk/PepJydThY95MsTFBiJVM1NEGfPlhWa9ZVeNNtcRNhXez3dt6+ZXWrSw==}
engines: {node: '>=v18'}
peerDependencies:
commitizen: ^4.0.3
inquirer: ^9.0.0
dependencies:
'@commitlint/ensure': 20.5.0
'@commitlint/load': 20.5.0(@types/node@25.5.0)(typescript@5.9.3)
'@commitlint/types': 20.5.0
commitizen: 4.3.1(@types/node@25.5.0)(typescript@5.9.3)
inquirer: 13.3.2(@types/node@25.5.0)
is-plain-obj: 4.1.0
picocolors: 1.1.1
word-wrap: 1.2.5
transitivePeerDependencies:
- '@types/node'
- typescript
dev: true
/@commitlint/ensure@20.5.0:
resolution: {integrity: sha512-IpHqAUesBeW1EDDdjzJeaOxU9tnogLAyXLRBn03SHlj1SGENn2JGZqSWGkFvBJkJzfXAuCNtsoYzax+ZPS+puw==}
engines: {node: '>=v18'}
dependencies:
'@commitlint/types': 20.5.0
lodash.camelcase: 4.3.0
lodash.kebabcase: 4.1.1
lodash.snakecase: 4.1.1
lodash.startcase: 4.4.0
lodash.upperfirst: 4.3.1
dev: true
optional: true
/@commitlint/execute-rule@20.0.0:
resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==}
engines: {node: '>=v18'}
requiresBuild: true
dev: true
optional: true
/@commitlint/load@20.5.0(@types/node@25.5.0)(typescript@5.9.3):
resolution: {integrity: sha512-sLhhYTL/KxeOTZjjabKDhwidGZan84XKK1+XFkwDYL/4883kIajcz/dZFAhBJmZPtL8+nBx6bnkzA95YxPeDPw==}
@ -1508,6 +1478,7 @@ packages:
- '@types/node'
- typescript
dev: true
optional: true
/@commitlint/resolve-extends@20.5.0:
resolution: {integrity: sha512-3SHPWUW2v0tyspCTcfSsYml0gses92l6TlogwzvM2cbxDgmhSRc+fldDjvGkCXJrjSM87BBaWYTPWwwyASZRrg==}
@ -1521,6 +1492,7 @@ packages:
lodash.mergewith: 4.6.2
resolve-from: 5.0.0
dev: true
optional: true
/@commitlint/types@20.5.0:
resolution: {integrity: sha512-ZJoS8oSq2CAZEpc/YI9SulLrdiIyXeHb/OGqGrkUP6Q7YV+0ouNAa7GjqRdXeQPncHQIDz/jbCTlHScvYvO/gA==}
@ -1658,92 +1630,9 @@ packages:
engines: {node: '>=6.9.0'}
dev: true
/@inquirer/ansi@2.0.4:
resolution: {integrity: sha512-DpcZrQObd7S0R/U3bFdkcT5ebRwbTTC4D3tCc1vsJizmgPLxNJBo+AAFmrZwe8zk30P2QzgzGWZ3Q9uJwWuhIg==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
dev: true
/@inquirer/checkbox@5.1.2(@types/node@25.5.0):
resolution: {integrity: sha512-PubpMPO2nJgMufkoB3P2wwxNXEMUXnBIKi/ACzDUYfaoPuM7gSTmuxJeMscoLVEsR4qqrCMf5p0SiYGWnVJ8kw==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/ansi': 2.0.4
'@inquirer/core': 11.1.7(@types/node@25.5.0)
'@inquirer/figures': 2.0.4
'@inquirer/type': 4.0.4(@types/node@25.5.0)
'@types/node': 25.5.0
dev: true
/@inquirer/confirm@6.0.10(@types/node@25.5.0):
resolution: {integrity: sha512-tiNyA73pgpQ0FQ7axqtoLUe4GDYjNCDcVsbgcA5anvwg2z6i+suEngLKKJrWKJolT//GFPZHwN30binDIHgSgQ==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/core': 11.1.7(@types/node@25.5.0)
'@inquirer/type': 4.0.4(@types/node@25.5.0)
'@types/node': 25.5.0
dev: true
/@inquirer/core@11.1.7(@types/node@25.5.0):
resolution: {integrity: sha512-1BiBNDk9btIwYIzNZpkikIHXWeNzNncJePPqwDyVMhXhD1ebqbpn1mKGctpoqAbzywZfdG0O4tvmsGIcOevAPQ==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/ansi': 2.0.4
'@inquirer/figures': 2.0.4
'@inquirer/type': 4.0.4(@types/node@25.5.0)
'@types/node': 25.5.0
cli-width: 4.1.0
fast-wrap-ansi: 0.2.0
mute-stream: 3.0.0
signal-exit: 4.1.0
dev: true
/@inquirer/editor@5.0.10(@types/node@25.5.0):
resolution: {integrity: sha512-VJx4XyaKea7t8hEApTw5dxeIyMtWXre2OiyJcICCRZI4hkoHsMoCnl/KbUnJJExLbH9csLLHMVR144ZhFE1CwA==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/core': 11.1.7(@types/node@25.5.0)
'@inquirer/external-editor': 2.0.4(@types/node@25.5.0)
'@inquirer/type': 4.0.4(@types/node@25.5.0)
'@types/node': 25.5.0
dev: true
/@inquirer/expand@5.0.10(@types/node@25.5.0):
resolution: {integrity: sha512-fC0UHJPXsTRvY2fObiwuQYaAnHrp3aDqfwKUJSdfpgv18QUG054ezGbaRNStk/BKD5IPijeMKWej8VV8O5Q/eQ==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/core': 11.1.7(@types/node@25.5.0)
'@inquirer/type': 4.0.4(@types/node@25.5.0)
'@types/node': 25.5.0
dev: true
/@inquirer/external-editor@2.0.4(@types/node@25.5.0):
resolution: {integrity: sha512-Prenuv9C1PHj2Itx0BcAOVBTonz02Hc2Nd2DbU67PdGUaqn0nPCnV34oDyyoaZHnmfRxkpuhh/u51ThkrO+RdA==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
/@inquirer/external-editor@1.0.3(@types/node@25.5.0):
resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
@ -1755,131 +1644,9 @@ packages:
iconv-lite: 0.7.2
dev: true
/@inquirer/figures@2.0.4:
resolution: {integrity: sha512-eLBsjlS7rPS3WEhmOmh1znQ5IsQrxWzxWDxO51e4urv+iVrSnIHbq4zqJIOiyNdYLa+BVjwOtdetcQx1lWPpiQ==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
dev: true
/@inquirer/input@5.0.10(@types/node@25.5.0):
resolution: {integrity: sha512-nvZ6qEVeX/zVtZ1dY2hTGDQpVGD3R7MYPLODPgKO8Y+RAqxkrP3i/3NwF3fZpLdaMiNuK0z2NaYIx9tPwiSegQ==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/core': 11.1.7(@types/node@25.5.0)
'@inquirer/type': 4.0.4(@types/node@25.5.0)
'@types/node': 25.5.0
dev: true
/@inquirer/number@4.0.10(@types/node@25.5.0):
resolution: {integrity: sha512-Ht8OQstxiS3APMGjHV0aYAjRAysidWdwurWEo2i8yI5xbhOBWqizT0+MU1S2GCcuhIBg+3SgWVjEoXgfhY+XaA==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/core': 11.1.7(@types/node@25.5.0)
'@inquirer/type': 4.0.4(@types/node@25.5.0)
'@types/node': 25.5.0
dev: true
/@inquirer/password@5.0.10(@types/node@25.5.0):
resolution: {integrity: sha512-QbNyvIE8q2GTqKLYSsA8ATG+eETo+m31DSR0+AU7x3d2FhaTWzqQek80dj3JGTo743kQc6mhBR0erMjYw5jQ0A==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/ansi': 2.0.4
'@inquirer/core': 11.1.7(@types/node@25.5.0)
'@inquirer/type': 4.0.4(@types/node@25.5.0)
'@types/node': 25.5.0
dev: true
/@inquirer/prompts@8.3.2(@types/node@25.5.0):
resolution: {integrity: sha512-yFroiSj2iiBFlm59amdTvAcQFvWS6ph5oKESls/uqPBect7rTU2GbjyZO2DqxMGuIwVA8z0P4K6ViPcd/cp+0w==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/checkbox': 5.1.2(@types/node@25.5.0)
'@inquirer/confirm': 6.0.10(@types/node@25.5.0)
'@inquirer/editor': 5.0.10(@types/node@25.5.0)
'@inquirer/expand': 5.0.10(@types/node@25.5.0)
'@inquirer/input': 5.0.10(@types/node@25.5.0)
'@inquirer/number': 4.0.10(@types/node@25.5.0)
'@inquirer/password': 5.0.10(@types/node@25.5.0)
'@inquirer/rawlist': 5.2.6(@types/node@25.5.0)
'@inquirer/search': 4.1.6(@types/node@25.5.0)
'@inquirer/select': 5.1.2(@types/node@25.5.0)
'@types/node': 25.5.0
dev: true
/@inquirer/rawlist@5.2.6(@types/node@25.5.0):
resolution: {integrity: sha512-jfw0MLJ5TilNsa9zlJ6nmRM0ZFVZhhTICt4/6CU2Dv1ndY7l3sqqo1gIYZyMMDw0LvE1u1nzJNisfHEhJIxq5w==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/core': 11.1.7(@types/node@25.5.0)
'@inquirer/type': 4.0.4(@types/node@25.5.0)
'@types/node': 25.5.0
dev: true
/@inquirer/search@4.1.6(@types/node@25.5.0):
resolution: {integrity: sha512-3/6kTRae98hhDevENScy7cdFEuURnSpM3JbBNg8yfXLw88HgTOl+neUuy/l9W0No5NzGsLVydhBzTIxZP7yChQ==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/core': 11.1.7(@types/node@25.5.0)
'@inquirer/figures': 2.0.4
'@inquirer/type': 4.0.4(@types/node@25.5.0)
'@types/node': 25.5.0
dev: true
/@inquirer/select@5.1.2(@types/node@25.5.0):
resolution: {integrity: sha512-kTK8YIkHV+f02y7bWCh7E0u2/11lul5WepVTclr3UMBtBr05PgcZNWfMa7FY57ihpQFQH/spLMHTcr0rXy50tA==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/ansi': 2.0.4
'@inquirer/core': 11.1.7(@types/node@25.5.0)
'@inquirer/figures': 2.0.4
'@inquirer/type': 4.0.4(@types/node@25.5.0)
'@types/node': 25.5.0
dev: true
/@inquirer/type@4.0.4(@types/node@25.5.0):
resolution: {integrity: sha512-PamArxO3cFJZoOzspzo6cxVlLeIftyBsZw/S9bKY5DzxqJVZgjoj1oP8d0rskKtp7sZxBycsoer1g6UeJV1BBA==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@types/node': 25.5.0
/@inquirer/figures@1.0.15:
resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==}
engines: {node: '>=18'}
dev: true
/@isaacs/cliui@8.0.2:
@ -1888,7 +1655,7 @@ packages:
dependencies:
string-width: 5.1.2
string-width-cjs: /string-width@4.2.3
strip-ansi: 7.1.0
strip-ansi: 7.2.0
strip-ansi-cjs: /strip-ansi@6.0.1
wrap-ansi: 8.1.0
wrap-ansi-cjs: /wrap-ansi@7.0.0
@ -3176,11 +2943,6 @@ packages:
engines: {node: '>=8'}
dev: true
/ansi-regex@6.0.1:
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
engines: {node: '>=12'}
dev: true
/ansi-regex@6.2.2:
resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
engines: {node: '>=12'}
@ -3205,11 +2967,6 @@ packages:
engines: {node: '>=10'}
dev: true
/ansi-styles@6.2.1:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
dev: true
/ansi-styles@6.2.3:
resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
engines: {node: '>=12'}
@ -3231,7 +2988,9 @@ packages:
/argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
requiresBuild: true
dev: true
optional: true
/array-ify@1.0.0:
resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
@ -3894,6 +3653,7 @@ packages:
jiti: 2.4.2
typescript: 5.9.3
dev: true
optional: true
/cosmiconfig@9.0.1(typescript@5.9.3):
resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==}
@ -3911,6 +3671,7 @@ packages:
parse-json: 5.2.0
typescript: 5.9.3
dev: true
optional: true
/cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
@ -3942,6 +3703,11 @@ packages:
- typescript
dev: true
/cz-git@1.12.0:
resolution: {integrity: sha512-LaZ+8whPPUOo6Y0Zy4nIbf6JOleV3ejp41sT6N4RPKiKKA+ICWf4ueeIlxIO8b6JtdlDxRzHH/EcRji07nDxcg==}
engines: {node: '>=v12.20.0'}
dev: true
/dargs@7.0.0:
resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==}
engines: {node: '>=8'}
@ -4091,6 +3857,7 @@ packages:
engines: {node: '>=6'}
requiresBuild: true
dev: true
optional: true
/environment@1.1.0:
resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
@ -4339,27 +4106,11 @@ packages:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
dev: true
/fast-string-truncated-width@3.0.3:
resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==}
dev: true
/fast-string-width@3.0.2:
resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==}
dependencies:
fast-string-truncated-width: 3.0.3
dev: true
/fast-uri@3.1.0:
resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
requiresBuild: true
dev: true
/fast-wrap-ansi@0.2.0:
resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==}
dependencies:
fast-string-width: 3.0.2
dev: true
/fb-watchman@2.0.2:
resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
dependencies:
@ -4620,6 +4371,7 @@ packages:
dependencies:
ini: 4.1.1
dev: true
optional: true
/global-modules@1.0.0:
resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==}
@ -4761,10 +4513,12 @@ packages:
/import-fresh@3.3.1:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
requiresBuild: true
dependencies:
parent-module: 1.0.1
resolve-from: 4.0.0
dev: true
optional: true
/import-lazy@4.0.0:
resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
@ -4784,6 +4538,7 @@ packages:
resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==}
requiresBuild: true
dev: true
optional: true
/imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
@ -4816,25 +4571,7 @@ packages:
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
requiresBuild: true
dev: true
/inquirer@13.3.2(@types/node@25.5.0):
resolution: {integrity: sha512-bh/OjBGxNR9qvfQj1n5bxtIF58mbOTp2InN5dKuwUK03dXcDGFsjlDinQRuXMZ4EGiJaFieUWHCAaxH2p7iUBw==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/ansi': 2.0.4
'@inquirer/core': 11.1.7(@types/node@25.5.0)
'@inquirer/prompts': 8.3.2(@types/node@25.5.0)
'@inquirer/type': 4.0.4(@types/node@25.5.0)
'@types/node': 25.5.0
mute-stream: 3.0.0
run-async: 4.0.6
rxjs: 7.8.2
dev: true
optional: true
/inquirer@8.2.5:
resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==}
@ -4857,6 +4594,26 @@ packages:
wrap-ansi: 7.0.0
dev: true
/inquirer@9.3.8(@types/node@25.5.0):
resolution: {integrity: sha512-pFGGdaHrmRKMh4WoDDSowddgjT1Vkl90atobmTeSmcPGdYiwikch/m/Ef5wRaiamHejtw0cUUMMerzDUXCci2w==}
engines: {node: '>=18'}
dependencies:
'@inquirer/external-editor': 1.0.3(@types/node@25.5.0)
'@inquirer/figures': 1.0.15
ansi-escapes: 4.3.2
cli-width: 4.1.0
mute-stream: 1.0.0
ora: 5.4.1
run-async: 3.0.0
rxjs: 7.8.2
string-width: 4.2.3
strip-ansi: 6.0.1
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.3
transitivePeerDependencies:
- '@types/node'
dev: true
/is-arrayish@0.2.1:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
requiresBuild: true
@ -4885,13 +4642,6 @@ packages:
engines: {node: '>=8'}
dev: true
/is-fullwidth-code-point@5.0.0:
resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==}
engines: {node: '>=18'}
dependencies:
get-east-asian-width: 1.3.0
dev: true
/is-fullwidth-code-point@5.1.0:
resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==}
engines: {node: '>=18'}
@ -4936,6 +4686,7 @@ packages:
engines: {node: '>=12'}
requiresBuild: true
dev: true
optional: true
/is-stream@2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
@ -5442,6 +5193,7 @@ packages:
hasBin: true
requiresBuild: true
dev: true
optional: true
/jju@1.4.0:
resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
@ -5466,6 +5218,7 @@ packages:
dependencies:
argparse: 2.0.1
dev: true
optional: true
/jsesc@3.0.2:
resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
@ -5758,10 +5511,6 @@ packages:
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
dev: false
/lodash.camelcase@4.3.0:
resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
dev: true
/lodash.debounce@4.0.8:
resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
dev: true
@ -5770,29 +5519,15 @@ packages:
resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==}
dev: true
/lodash.kebabcase@4.1.1:
resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==}
dev: true
/lodash.map@4.6.0:
resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==}
dev: true
/lodash.mergewith@4.6.2:
resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==}
requiresBuild: true
dev: true
/lodash.snakecase@4.1.1:
resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==}
dev: true
/lodash.startcase@4.4.0:
resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
dev: true
/lodash.upperfirst@4.3.1:
resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==}
dev: true
optional: true
/lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
@ -5817,7 +5552,7 @@ packages:
ansi-escapes: 7.0.0
cli-cursor: 5.0.0
slice-ansi: 7.1.0
strip-ansi: 7.1.0
strip-ansi: 7.2.0
wrap-ansi: 9.0.0
dev: true
@ -6001,9 +5736,9 @@ packages:
resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
dev: true
/mute-stream@3.0.0:
resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==}
engines: {node: ^20.17.0 || >=22.9.0}
/mute-stream@1.0.0:
resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
dev: true
/nanoid@3.3.11:
@ -6187,9 +5922,11 @@ packages:
/parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
requiresBuild: true
dependencies:
callsites: 3.1.0
dev: true
optional: true
/parse-json@4.0.0:
resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
@ -6542,7 +6279,9 @@ packages:
/resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
requiresBuild: true
dev: true
optional: true
/resolve-from@5.0.0:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
@ -6618,8 +6357,8 @@ packages:
engines: {node: '>=0.12.0'}
dev: true
/run-async@4.0.6:
resolution: {integrity: sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==}
/run-async@3.0.0:
resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==}
engines: {node: '>=0.12.0'}
dev: true
@ -6709,8 +6448,8 @@ packages:
resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==}
engines: {node: '>=18'}
dependencies:
ansi-styles: 6.2.1
is-fullwidth-code-point: 5.0.0
ansi-styles: 6.2.3
is-fullwidth-code-point: 5.1.0
dev: true
/slice-ansi@8.0.0:
@ -6832,7 +6571,7 @@ packages:
dependencies:
eastasianwidth: 0.2.0
emoji-regex: 9.2.2
strip-ansi: 7.1.0
strip-ansi: 7.2.0
dev: true
/string-width@7.2.0:
@ -6841,7 +6580,7 @@ packages:
dependencies:
emoji-regex: 10.4.0
get-east-asian-width: 1.3.0
strip-ansi: 7.1.0
strip-ansi: 7.2.0
dev: true
/string-width@8.2.0:
@ -6876,13 +6615,6 @@ packages:
ansi-regex: 5.0.1
dev: true
/strip-ansi@7.1.0:
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
engines: {node: '>=12'}
dependencies:
ansi-regex: 6.0.1
dev: true
/strip-ansi@7.2.0:
resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==}
engines: {node: '>=12'}
@ -7368,6 +7100,15 @@ packages:
resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
dev: true
/wrap-ansi@6.2.0:
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
engines: {node: '>=8'}
dependencies:
ansi-styles: 4.3.0
string-width: 4.2.3
strip-ansi: 6.0.1
dev: true
/wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@ -7381,18 +7122,18 @@ packages:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'}
dependencies:
ansi-styles: 6.2.1
ansi-styles: 6.2.3
string-width: 5.1.2
strip-ansi: 7.1.0
strip-ansi: 7.2.0
dev: true
/wrap-ansi@9.0.0:
resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
engines: {node: '>=18'}
dependencies:
ansi-styles: 6.2.1
ansi-styles: 6.2.3
string-width: 7.2.0
strip-ansi: 7.1.0
strip-ansi: 7.2.0
dev: true
/wrappy@1.0.2:
@ -7471,3 +7212,8 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
dev: true
/yoctocolors-cjs@2.1.3:
resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}
engines: {node: '>=18'}
dev: true