diff --git a/Makefile b/Makefile
index 11d7e3fec..c25feec5a 100644
--- a/Makefile
+++ b/Makefile
@@ -46,12 +46,5 @@ docker_build_ee: pull_image docker_install_node_modules
docker_build_demo: pull_image docker_install_node_modules
$(DOCKER) run -v $(MAIN_MODULE):/usr/src/app --user $(UID):$(GID) -w /usr/src/app --rm $(DOCKER_IMAGE) sh -c "pnpm build:demo"
-docker_build_icons_docs: pull_image docker_install_node_modules
- $(DOCKER) run -v $(MAIN_MODULE):/usr/src/app --user $(UID):$(GID) -w /usr/src/app --rm $(DOCKER_IMAGE) sh -c "pnpm icon:docs:g && pnpm icon:docs:build && mv packages/icons/docs-dist ./docs-dist && tar zcf $(ICONS_DOCS_OUTER_BUILD_NAME) ./docs-dist"
-
-docker_upload_icons_docs:
- curl -T $(ICONS_DOCS_OUTER_BUILD_NAME) \
- ftp://$(RELEASE_FTP_HOST)/actiontech-dms-ui/icons/$(ICONS_DOCS_OUTER_BUILD_NAME) --ftp-create-dirs
-
-docker_sync_icons_docs_static:
- curl -X POST ${SYNC_ICONS_DOCS_STATIC_HOST}/sync-static
\ No newline at end of file
+docker_publish_and_docs_deploy: docker_install_node_modules
+ $(DOCKER) run -v $(MAIN_MODULE):/usr/src/app --user $(UID):$(GID) -w /usr/src/app --rm $(DOCKER_IMAGE) sh -c "git config --global --add safe.directory /usr/src/app && pnpm publishAndDocsDeploy"
diff --git a/package.json b/package.json
index 549863e54..bf5c55434 100644
--- a/package.json
+++ b/package.json
@@ -34,7 +34,9 @@
"api_client:g": "npm_config_registry=http://10.186.18.19:4873 pnpx @actiontech/cli api-client -y",
"api_mocks:g": "npm_config_registry=http://10.186.18.19:4873 pnpx @actiontech/cli api-mocks -y",
"ai-doc": "npm_config_registry=http://10.186.18.19:4873 pnpx @actiontech/cli ai-doc",
- "postinstall": "pnpm --filter @actiontech/dms-kit build"
+ "postinstall": "pnpm --filter @actiontech/dms-kit build",
+ "publish_and_docs_deploy": "pnpm install && pnpm -C scripts/publishAndDocsDeploy install --ignore-workspace && tsx scripts/publishAndDocsDeploy/index.ts",
+ "publish_and_docs_deploy1": "tsx scripts/publishAndDocsDeploy/index.ts"
},
"keywords": [],
"author": "",
@@ -92,6 +94,7 @@
"stylelint-config-styled-components": "^0.1.1",
"stylelint-prettier": "^4.0.2",
"ts-jest": "27.1.5",
+ "tsx": "^4.20.5",
"typescript": "^5.0.2",
"typescript-eslint": "^8.28.0",
"vite": "^5.2.6",
diff --git a/packages/dms-kit/package.json b/packages/dms-kit/package.json
index 6396154e2..6239002d4 100644
--- a/packages/dms-kit/package.json
+++ b/packages/dms-kit/package.json
@@ -1,6 +1,6 @@
{
"name": "@actiontech/dms-kit",
- "version": "0.0.2-beta.6",
+ "version": "0.0.2-beta.7",
"main": "lib/index.js",
"module": "es/index.js",
"types": "es/index.d.ts",
diff --git a/packages/icons/.dumi/tsconfig.json b/packages/icons/.dumi/tsconfig.json
new file mode 100644
index 000000000..79711a82b
--- /dev/null
+++ b/packages/icons/.dumi/tsconfig.json
@@ -0,0 +1,6 @@
+{
+ "extends": "../tsconfig.json",
+ "include": [
+ "**/*"
+ ]
+}
\ No newline at end of file
diff --git a/packages/icons/docs/icon/Common.md b/packages/icons/docs/icon/Common.md
index f3faaa138..dc928e70e 100644
--- a/packages/icons/docs/icon/Common.md
+++ b/packages/icons/docs/icon/Common.md
@@ -361,6 +361,20 @@ import { EyeClosedOutlined } from '@actiontech/icons';
export default () =>
```
+## FaLessThanEqualOutlined
+```jsx
+import { FaLessThanEqualOutlined } from '@actiontech/icons';
+
+export default () =>
+```
+
+## FilterOutlined
+```jsx
+import { FilterOutlined } from '@actiontech/icons';
+
+export default () =>
+```
+
## HexagonOutlined
```jsx
import { HexagonOutlined } from '@actiontech/icons';
diff --git a/packages/icons/docs/icon/Data.md b/packages/icons/docs/icon/Data.md
index 3fbd8e0ef..ca59ecbb2 100644
--- a/packages/icons/docs/icon/Data.md
+++ b/packages/icons/docs/icon/Data.md
@@ -144,6 +144,13 @@ import { TrendCardFilled } from '@actiontech/icons';
export default () =>
```
+## DashboardOutlined
+```jsx
+import { DashboardOutlined } from '@actiontech/icons';
+
+export default () =>
+```
+
## DoubleDatabaseOutlined
```jsx
import { DoubleDatabaseOutlined } from '@actiontech/icons';
diff --git a/packages/icons/package_publish.json b/packages/icons/package_publish.json
index 112a4072d..c6a5b2803 100644
--- a/packages/icons/package_publish.json
+++ b/packages/icons/package_publish.json
@@ -1,6 +1,5 @@
{
"name": "@actiontech/icons",
- "version": "0.0.1-rc.7",
"description": "",
"main": "./dist/index.js",
"module": "./es/index.js",
diff --git a/packages/icons/publish-icons.mjs b/packages/icons/publish-icons.mjs
index 793ae5089..c01bab98b 100755
--- a/packages/icons/publish-icons.mjs
+++ b/packages/icons/publish-icons.mjs
@@ -124,27 +124,10 @@ async function confirmPublish() {
});
}
-function updatePackagePublishVersion(iconsDir, version) {
- const pubPkgPath = path.join(iconsDir, 'package_publish.json');
- try {
- const pubPkgContent = readJson(pubPkgPath);
- pubPkgContent.version = version;
- writeJson(pubPkgPath, pubPkgContent);
- console.log(`✅ 已更新 package_publish.json 版本号为: ${version}`);
- } catch (err) {
- console.warn(`⚠️ 更新 package_publish.json 版本号失败: ${err.message}`);
- }
-}
-
async function main() {
- const { version, skipConfirm } = parseArgs(process.argv);
- if (!version) {
- console.error('请通过 --version 或 -v 指定版本号,例如:');
- console.error(
- ' node packages/icons/publish-icons.mjs --version 0.0.1-rc.3'
- );
- process.exit(1);
- }
+ const { skipConfirm } = parseArgs(process.argv);
+
+ const version = readJson(path.join(iconsDir, 'package.json')).version;
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
@@ -230,9 +213,6 @@ async function main() {
console.log('[6/7] 执行发布: npm publish');
runCmd('npm', ['publish'], tmpDir);
- console.log('[7/7] 更新 package_publish.json 版本号');
- updatePackagePublishVersion(iconsDir, version);
-
console.log('✅ 发布完成');
} catch (err) {
console.error('❌ 发布流程发生错误:', err?.message || err);
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c4db7791d..2d052c501 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -285,6 +285,9 @@ importers:
ts-jest:
specifier: 27.1.5
version: 27.1.5(@babel/core@7.26.10)(@types/jest@29.5.12)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.1.2(@types/node@18.19.84)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.1))(@types/node@18.19.84)(typescript@5.8.2)))(typescript@5.8.2)
+ tsx:
+ specifier: ^4.20.5
+ version: 4.20.5
typescript:
specifier: ^5.0.2
version: 5.8.2
@@ -23650,7 +23653,6 @@ snapshots:
get-tsconfig: 4.10.0
optionalDependencies:
fsevents: 2.3.3
- optional: true
tty-browserify@0.0.0: {}
diff --git a/scripts/publishAndDocsDeploy/.npmrc b/scripts/publishAndDocsDeploy/.npmrc
new file mode 100644
index 000000000..5e775f322
--- /dev/null
+++ b/scripts/publishAndDocsDeploy/.npmrc
@@ -0,0 +1,2 @@
+registry=https://registry.npmmirror.com
+@actiontech:registry=http://10.186.18.19:4873/
\ No newline at end of file
diff --git a/scripts/publishAndDocsDeploy/index.ts b/scripts/publishAndDocsDeploy/index.ts
new file mode 100644
index 000000000..db0755096
--- /dev/null
+++ b/scripts/publishAndDocsDeploy/index.ts
@@ -0,0 +1,416 @@
+// 从 package.json 中获取对应包名称和版本
+// `[包]@[版本]`未发布时,发布包
+// 构建文档和部署文档
+// 推送 tag
+
+import * as fs from 'fs';
+import * as path from 'path';
+import { Client as ftpClient } from 'basic-ftp';
+import archiver from 'archiver';
+import axios from 'axios';
+import { execa } from 'execa';
+import chalk from 'chalk';
+import { ServerSDK } from '@actiontech/robot-server-sdk';
+
+// 配置
+const config = {
+ pnpm: {
+ registry: 'http://10.186.18.19:4873/',
+ name: '@actiontech:registry',
+ preCom: '@actiontech',
+ auth: '//10.186.18.19:4873/:_auth="cHVibGlzaGVyOnB1Ymxpc2hlcg=="'
+ },
+ ftpServer: {
+ host: '10.186.18.90',
+ user: 'ftpadmin',
+ password: 'KFQsB9g0aut7'
+ },
+ ftpDir: path.join('/actiontech-dms-ui', 'docs'),
+ githubApi: {
+ owner: 'actiontech', // GitHub 用户名或组织名
+ repo: 'dms-ui', // GitHub 仓库名
+ baseUrl: 'https://api.github.com', // GitHub API 基础 URL
+ projectId: 706476902
+ }
+};
+
+// 包配置
+const packages = [
+ {
+ dir: 'icons',
+ distDir: path.join(process.cwd(), 'packages/icons/docs-dist'),
+ changelogPath: path.join(process.cwd(), 'packages/icons/docs/CHANGELOG.md')
+ },
+ {
+ dir: 'dms-kit',
+ distDir: path.join(process.cwd(), 'packages/dms-kit/docs-dist'),
+ changelogPath: path.join(
+ process.cwd(),
+ 'packages/dms-kit/docs/CHANGELOG.md'
+ )
+ }
+];
+
+// 日志工具
+const stepLog = (msg: string) => console.log(chalk.magenta(`>> ${msg}`));
+const successLog = (msg: string) => console.log(chalk.green(msg));
+const errorLog = (msg: string) => console.log(chalk.red(msg));
+
+const robotSDK = new ServerSDK({ baseUrl: 'http://10.186.18.19:8000' });
+
+interface PackageInfo {
+ name: string;
+ version: string;
+ dir: string;
+ distDir: string;
+ changelogPath: string;
+}
+
+class DmsUiDeploy {
+ private pkgs: PackageInfo[] = [];
+ private cwd = process.cwd();
+
+ async start() {
+ try {
+ stepLog('获取包信息');
+ await this.loadPkgInfo();
+
+ if (!this.pkgs.length) {
+ console.log('未找到有效的包信息');
+ return;
+ }
+
+ // stepLog('步骤1: 发布包');
+ // await this.publishPkg();
+
+ stepLog('步骤2: 部署文档');
+ await this.deployDocs();
+
+ // stepLog('步骤3: 推送版本标签');
+ // 没有 github token 暂不推送
+ // await this.setGitRegistryTag();
+
+ successLog('所有步骤执行完成');
+ process.exit(0);
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ private async loadPkgInfo() {
+ // 检查 Git 状态
+ // const { stdout: unSubmitted } = await execa('git', [
+ // 'status',
+ // '--porcelain'
+ // ]);
+ // if (unSubmitted || !this.cwd.endsWith('/app')) {
+ // errorLog('禁止手动执行该脚本');
+ // process.exit(1);
+ // }
+
+ for (const pkg of packages) {
+ try {
+ const packageJsonPath = path.join(
+ this.cwd,
+ `packages/${pkg.dir}/package.json`
+ );
+ const packageJson = JSON.parse(
+ fs.readFileSync(packageJsonPath, 'utf-8')
+ );
+ const { name, version } = packageJson;
+
+ this.pkgs.push({
+ ...pkg,
+ name,
+ version
+ });
+ } catch (error) {
+ errorLog(`加载包信息失败: ${pkg.dir} - ${error}`);
+ throw error;
+ }
+ }
+ }
+
+ private async publishPkg() {
+ for (const pkg of this.pkgs) {
+ // 检查包是否已发布
+ let isPublished = false;
+ try {
+ const { stdout } = await execa('pnpm', [
+ 'info',
+ `${pkg.name}@${pkg.version}`,
+ '--registry',
+ config.pnpm.registry
+ ]);
+ if (stdout.length) {
+ isPublished = true;
+ }
+ } catch {
+ isPublished = false;
+ }
+
+ if (isPublished) {
+ console.log(`包 ${pkg.name}@${pkg.version} 已发布,跳过发布步骤`);
+ continue;
+ }
+
+ try {
+ stepLog(`发布包 ${pkg.name}@${pkg.version}`);
+ if (pkg.dir === 'icons') {
+ await execa(
+ 'node',
+ ['packages/icons/publish-icons.mjs', '--skip-confirm'],
+ {
+ cwd: path.join(this.cwd, 'packages', 'icons')
+ }
+ );
+ return;
+ }
+ const pkgPath = path.join(this.cwd, 'packages', pkg.dir);
+
+ // 设置 npm 认证
+ await execa('pnpm', ['config', 'set', config.pnpm.auth], {
+ cwd: pkgPath
+ });
+
+ // 发布包
+ const tag = pkg.version.includes('beta') ? 'beta' : 'latest';
+ await execa(
+ 'pnpm',
+ [
+ 'publish',
+ '--registry',
+ config.pnpm.registry,
+ '--tag',
+ tag,
+ '--no-git-checks'
+ ],
+ { cwd: pkgPath }
+ );
+
+ successLog(`包 ${pkg.name}@${pkg.version} 发布成功`);
+ } catch (error) {
+ errorLog(`包 ${pkg.name}@${pkg.version} 发布失败`);
+ this.handleError(error);
+ }
+ }
+ }
+
+ private async deployDocs() {
+ stepLog('上传文档到 FTP 服务器');
+ const ftp = new ftpClient();
+
+ try {
+ await ftp.access(config.ftpServer);
+
+ const packageList: Array<{
+ filepath: string;
+ name: string;
+ version: string;
+ changelog: string;
+ }> = [];
+
+ for (const pkg of this.pkgs) {
+ const zipFileName = `${pkg.dir}-v${pkg.version}.zip`;
+
+ // 检查文档是否已部署
+ let isDeployed = false;
+ try {
+ await ftp.ensureDir(config.ftpDir);
+ const list = await ftp.list(config.ftpDir);
+ isDeployed = list.some((file) => file.name === zipFileName);
+ } catch {
+ isDeployed = false;
+ }
+
+ if (isDeployed) {
+ console.log(`文档 ${zipFileName} 已存在,跳过上传`);
+ continue;
+ }
+
+ stepLog(`构建并上传文档: ${pkg.dir}`);
+ if (pkg.dir === 'icons') {
+ await execa('pnpm', ['docs:g'], {
+ cwd: path.join(this.cwd, 'packages', 'icons')
+ });
+ }
+ const dumiConfigPath = path.join(
+ this.cwd,
+ 'packages',
+ pkg.dir,
+ '.dumirc.ts'
+ );
+
+ // 读取原始配置
+ const originalConfig = fs.readFileSync(dumiConfigPath, 'utf-8');
+
+ // 修改配置用于构建
+ const modifiedConfig = originalConfig.replaceAll(
+ '/dms-docs',
+ `/doc/${pkg.dir}-v${pkg.version.split('.')[0]}`
+ );
+
+ // 写入修改后的配置
+ fs.writeFileSync(dumiConfigPath, modifiedConfig);
+
+ try {
+ // 构建文档
+ await execa('pnpm', ['docs:build'], {
+ cwd: path.join(this.cwd, 'packages', pkg.dir)
+ });
+
+ // 压缩文档
+ await this.compressFolder(
+ pkg.distDir,
+ path.join(this.cwd, zipFileName)
+ );
+
+ // 上传到 FTP
+ const readStream = fs.createReadStream(
+ path.join(this.cwd, zipFileName)
+ );
+ await ftp.uploadFrom(
+ readStream,
+ path.join(config.ftpDir, zipFileName)
+ );
+
+ // 清理临时文件
+ fs.unlinkSync(path.join(this.cwd, zipFileName));
+ packageList.push({
+ filepath: path.join(config.ftpDir, zipFileName),
+ name: pkg.name,
+ version: pkg.version,
+ changelog: getChangelogForVersion(pkg.changelogPath, pkg.version)
+ });
+
+ successLog(`${zipFileName} 已上传至 FTP 服务器`);
+ } finally {
+ // 恢复原始配置
+ fs.writeFileSync(dumiConfigPath, originalConfig);
+ }
+ }
+
+ successLog('文档网站产物传输成功');
+ // 发送部署请求
+ if (packageList.length) {
+ stepLog('发送文档部署请求');
+ await robotSDK.docManagement.dmpKitDeploy({
+ body: {
+ package_list: packageList,
+ project_id: config.githubApi.projectId
+ }
+ });
+ successLog('文档部署请求发送成功');
+ }
+ } catch (err) {
+ errorLog('文档部署失败');
+ this.handleError(err);
+ } finally {
+ ftp.close();
+ }
+ }
+
+ private async setGitRegistryTag() {
+ const { stdout: tagShell } = await execa('git', ['tag']);
+ const githubToken = (
+ await robotSDK.project.getProject({
+ params: { id: config.githubApi.projectId }
+ })
+ ).data.data?.token;
+
+ for (const pkg of this.pkgs) {
+ const tag = `v${pkg.version}@${pkg.dir}`;
+
+ if (tagShell.includes(tag)) {
+ console.log(`标签 ${tag} 已存在,跳过推送`);
+ continue;
+ }
+
+ try {
+ const { stdout: localCommit } = await execa('git', [
+ 'rev-parse',
+ 'HEAD'
+ ]);
+
+ const tagUrl = `${config.githubApi.baseUrl}/repos/${config.githubApi.owner}/${config.githubApi.repo}/git/refs`;
+
+ await axios.post(
+ tagUrl,
+ {
+ ref: `refs/tags/${tag}`,
+ sha: localCommit
+ },
+ {
+ headers: {
+ Authorization: `token ${githubToken}`,
+ Accept: 'application/vnd.github.v3+json',
+ 'User-Agent': 'dms-ui-deploy-script'
+ }
+ }
+ );
+
+ successLog(`Git 仓库标签 ${tag} 添加成功`);
+ } catch (error) {
+ errorLog(`Git 仓库标签 ${tag} 添加失败`);
+ this.handleError(error);
+ }
+ }
+ }
+
+ private async compressFolder(
+ sourceDir: string,
+ outputZipPath: string
+ ): Promise {
+ return new Promise((resolve, reject) => {
+ const archive = archiver('zip', { zlib: { level: 9 } });
+ const outputStream = fs.createWriteStream(outputZipPath);
+
+ outputStream.on('close', resolve);
+ outputStream.on('error', reject);
+
+ archive.pipe(outputStream);
+ archive.directory(sourceDir, path.basename(sourceDir));
+ archive.finalize();
+ });
+ }
+
+ private handleError(error: any) {
+ console.error(error);
+ process.exit(1);
+ }
+}
+
+// 运行部署
+new DmsUiDeploy().start();
+
+function getChangelogForVersion(changelogPath: string, version: string) {
+ try {
+ const changelogContent = fs.readFileSync(changelogPath, 'utf-8');
+
+ // 构建版本标题的正则表达式
+ // 匹配 ## version 后面的内容,直到下一个 ## 或文件结尾
+ const versionPattern = new RegExp(
+ `## ${version}(?:\\s+[^\\n]*)?\\s*\\n([\\s\\S]*?)(?=\\n## |$)`,
+ 'i'
+ );
+ const match = changelogContent.match(versionPattern);
+
+ if (match && match[1]) {
+ // 清理内容,移除多余的空行和缩进
+ const content = match[1]
+ .trim()
+ .split('\n')
+ .map((line) => line.trim())
+ .filter((line) => line.length > 0)
+ .join('\n');
+
+ return content;
+ }
+
+ console.log(`未找到版本 ${version} 的 changelog`);
+ return `未找到版本 ${version} 的 changelog`;
+ } catch (error) {
+ console.error('读取 changelog.md 文件失败:', error);
+ return `读取 changelog.md 文件失败: ${error}`;
+ }
+}
diff --git a/scripts/publishAndDocsDeploy/package.json b/scripts/publishAndDocsDeploy/package.json
new file mode 100644
index 000000000..d4f877ff0
--- /dev/null
+++ b/scripts/publishAndDocsDeploy/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@actiontech/dms-ui-publish-deploy",
+ "version": "1.0.0",
+ "description": "DMS UI 包发布和文档部署脚本",
+ "main": "index.ts",
+ "type": "module",
+ "scripts": {
+ "start": "tsx index.ts",
+ "build": "tsc",
+ "dev": "tsx watch index.ts"
+ },
+ "keywords": [
+ "dms-ui",
+ "publish",
+ "deploy",
+ "docs",
+ "actiontech"
+ ],
+ "author": "ActionTech",
+ "license": "MIT",
+ "dependencies": {
+ "archiver": "^7.0.1",
+ "axios": "^0.27.2",
+ "basic-ftp": "^5.0.5",
+ "chalk": "^4.1.2",
+ "execa": "^8.0.1",
+ "@actiontech/robot-server-sdk": "latest",
+ "zod": "^3.22.3"
+ },
+ "devDependencies": {
+ "@types/archiver": "^6.0.3",
+ "@types/node": "^18.0.4",
+ "typescript": "^5.0.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+}
\ No newline at end of file
diff --git a/scripts/publishAndDocsDeploy/pnpm-lock.yaml b/scripts/publishAndDocsDeploy/pnpm-lock.yaml
new file mode 100644
index 000000000..9e9a2c034
--- /dev/null
+++ b/scripts/publishAndDocsDeploy/pnpm-lock.yaml
@@ -0,0 +1,937 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@actiontech/robot-server-sdk':
+ specifier: latest
+ version: 1.0.0(@types/node@18.19.123)(zod@3.25.76)
+ archiver:
+ specifier: ^7.0.1
+ version: 7.0.1
+ axios:
+ specifier: ^0.27.2
+ version: 0.27.2
+ basic-ftp:
+ specifier: ^5.0.5
+ version: 5.0.5
+ chalk:
+ specifier: ^4.1.2
+ version: 4.1.2
+ execa:
+ specifier: ^8.0.1
+ version: 8.0.1
+ zod:
+ specifier: ^3.22.3
+ version: 3.25.76
+ devDependencies:
+ '@types/archiver':
+ specifier: ^6.0.3
+ version: 6.0.3
+ '@types/node':
+ specifier: ^18.0.4
+ version: 18.19.123
+ typescript:
+ specifier: ^5.0.2
+ version: 5.9.2
+
+packages:
+
+ '@actiontech/robot-server-sdk@1.0.0':
+ resolution: {integrity: sha512-+nYQ9LdzuGmrjx0IugE51aQwKN/+r2Pmt3FxmVat1ZtGMBZlD4Ydh96LNQHkYhNwP2Kb5KzKn3YfeMYg3l/hbg==}
+ engines: {node: '>=18.11.18', pnpm: '>=9.7.0'}
+
+ '@isaacs/cliui@8.0.2':
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+
+ '@pkgjs/parseargs@0.11.0':
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+
+ '@ts-rest/core@3.52.1':
+ resolution: {integrity: sha512-tAjz7Kxq/grJodcTA1Anop4AVRDlD40fkksEV5Mmal88VoZeRKAG8oMHsDwdwPZz+B/zgnz0q2sF+cm5M7Bc7g==}
+ peerDependencies:
+ '@types/node': ^18.18.7 || >=20.8.4
+ zod: ^3.22.3
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ zod:
+ optional: true
+
+ '@types/archiver@6.0.3':
+ resolution: {integrity: sha512-a6wUll6k3zX6qs5KlxIggs1P1JcYJaTCx2gnlr+f0S1yd2DoaEwoIK10HmBaLnZwWneBz+JBm0dwcZu0zECBcQ==}
+
+ '@types/node@18.19.123':
+ resolution: {integrity: sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg==}
+
+ '@types/readdir-glob@1.1.5':
+ resolution: {integrity: sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==}
+
+ abort-controller@3.0.0:
+ resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+ engines: {node: '>=6.5'}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@6.2.0:
+ resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==}
+ engines: {node: '>=12'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ ansi-styles@6.2.1:
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ engines: {node: '>=12'}
+
+ archiver-utils@5.0.2:
+ resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==}
+ engines: {node: '>= 14'}
+
+ archiver@7.0.1:
+ resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==}
+ engines: {node: '>= 14'}
+
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ axios@0.27.2:
+ resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==}
+
+ b4a@1.6.7:
+ resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ bare-events@2.6.1:
+ resolution: {integrity: sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==}
+
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ basic-ftp@5.0.5:
+ resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==}
+ engines: {node: '>=10.0.0'}
+
+ brace-expansion@2.0.2:
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+
+ buffer-crc32@1.0.0:
+ resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==}
+ engines: {node: '>=8.0.0'}
+
+ buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ compress-commons@6.0.2:
+ resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==}
+ engines: {node: '>= 14'}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ crc-32@1.2.2:
+ resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
+ engines: {node: '>=0.8'}
+ hasBin: true
+
+ crc32-stream@6.0.0:
+ resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==}
+ engines: {node: '>= 14'}
+
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+
+ es-set-tostringtag@2.1.0:
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+ engines: {node: '>= 0.4'}
+
+ event-target-shim@5.0.1:
+ resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+ engines: {node: '>=6'}
+
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
+ execa@8.0.1:
+ resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
+ engines: {node: '>=16.17'}
+
+ fast-fifo@1.3.2:
+ resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
+
+ follow-redirects@1.15.11:
+ resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
+ foreground-child@3.3.1:
+ resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
+ engines: {node: '>=14'}
+
+ form-data@4.0.4:
+ resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==}
+ engines: {node: '>= 6'}
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
+ get-stream@8.0.1:
+ resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
+ engines: {node: '>=16'}
+
+ glob@10.4.5:
+ resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
+ hasBin: true
+
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ human-signals@5.0.0:
+ resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
+ engines: {node: '>=16.17.0'}
+
+ ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+
+ is-stream@3.0.0:
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ jackspeak@3.4.3:
+ resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+
+ lazystream@1.0.1:
+ resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
+ engines: {node: '>= 0.6.3'}
+
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ lru-cache@10.4.3:
+ resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mimic-fn@4.0.0:
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
+
+ minimatch@5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
+
+ minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minipass@7.1.2:
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ npm-run-path@5.3.0:
+ resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ onetime@6.0.0:
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
+
+ package-json-from-dist@1.0.1:
+ resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-key@4.0.0:
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
+
+ path-scurry@1.11.1:
+ resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+ engines: {node: '>=16 || 14 >=14.18'}
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ process@0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.0'}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ readable-stream@4.7.0:
+ resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ readdir-glob@1.1.3:
+ resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
+ streamx@2.22.1:
+ resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+
+ strip-final-newline@3.0.0:
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
+
+ supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+
+ tar-stream@3.1.7:
+ resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
+
+ text-decoder@1.2.3:
+ resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
+
+ typescript@5.9.2:
+ resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+
+ zip-stream@6.0.1:
+ resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==}
+ engines: {node: '>= 14'}
+
+ zod@3.25.76:
+ resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
+
+snapshots:
+
+ '@actiontech/robot-server-sdk@1.0.0(@types/node@18.19.123)(zod@3.25.76)':
+ dependencies:
+ '@ts-rest/core': 3.52.1(@types/node@18.19.123)(zod@3.25.76)
+ transitivePeerDependencies:
+ - '@types/node'
+ - zod
+
+ '@isaacs/cliui@8.0.2':
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
+
+ '@pkgjs/parseargs@0.11.0':
+ optional: true
+
+ '@ts-rest/core@3.52.1(@types/node@18.19.123)(zod@3.25.76)':
+ optionalDependencies:
+ '@types/node': 18.19.123
+ zod: 3.25.76
+
+ '@types/archiver@6.0.3':
+ dependencies:
+ '@types/readdir-glob': 1.1.5
+
+ '@types/node@18.19.123':
+ dependencies:
+ undici-types: 5.26.5
+
+ '@types/readdir-glob@1.1.5':
+ dependencies:
+ '@types/node': 18.19.123
+
+ abort-controller@3.0.0:
+ dependencies:
+ event-target-shim: 5.0.1
+
+ ansi-regex@5.0.1: {}
+
+ ansi-regex@6.2.0: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@6.2.1: {}
+
+ archiver-utils@5.0.2:
+ dependencies:
+ glob: 10.4.5
+ graceful-fs: 4.2.11
+ is-stream: 2.0.1
+ lazystream: 1.0.1
+ lodash: 4.17.21
+ normalize-path: 3.0.0
+ readable-stream: 4.7.0
+
+ archiver@7.0.1:
+ dependencies:
+ archiver-utils: 5.0.2
+ async: 3.2.6
+ buffer-crc32: 1.0.0
+ readable-stream: 4.7.0
+ readdir-glob: 1.1.3
+ tar-stream: 3.1.7
+ zip-stream: 6.0.1
+
+ async@3.2.6: {}
+
+ asynckit@0.4.0: {}
+
+ axios@0.27.2:
+ dependencies:
+ follow-redirects: 1.15.11
+ form-data: 4.0.4
+ transitivePeerDependencies:
+ - debug
+
+ b4a@1.6.7: {}
+
+ balanced-match@1.0.2: {}
+
+ bare-events@2.6.1:
+ optional: true
+
+ base64-js@1.5.1: {}
+
+ basic-ftp@5.0.5: {}
+
+ brace-expansion@2.0.2:
+ dependencies:
+ balanced-match: 1.0.2
+
+ buffer-crc32@1.0.0: {}
+
+ buffer@6.0.3:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ compress-commons@6.0.2:
+ dependencies:
+ crc-32: 1.2.2
+ crc32-stream: 6.0.0
+ is-stream: 2.0.1
+ normalize-path: 3.0.0
+ readable-stream: 4.7.0
+
+ core-util-is@1.0.3: {}
+
+ crc-32@1.2.2: {}
+
+ crc32-stream@6.0.0:
+ dependencies:
+ crc-32: 1.2.2
+ readable-stream: 4.7.0
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ delayed-stream@1.0.0: {}
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ eastasianwidth@0.2.0: {}
+
+ emoji-regex@8.0.0: {}
+
+ emoji-regex@9.2.2: {}
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
+ event-target-shim@5.0.1: {}
+
+ events@3.3.0: {}
+
+ execa@8.0.1:
+ dependencies:
+ cross-spawn: 7.0.6
+ get-stream: 8.0.1
+ human-signals: 5.0.0
+ is-stream: 3.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 5.3.0
+ onetime: 6.0.0
+ signal-exit: 4.1.0
+ strip-final-newline: 3.0.0
+
+ fast-fifo@1.3.2: {}
+
+ follow-redirects@1.15.11: {}
+
+ foreground-child@3.3.1:
+ dependencies:
+ cross-spawn: 7.0.6
+ signal-exit: 4.1.0
+
+ form-data@4.0.4:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ hasown: 2.0.2
+ mime-types: 2.1.35
+
+ function-bind@1.1.2: {}
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
+ get-stream@8.0.1: {}
+
+ glob@10.4.5:
+ dependencies:
+ foreground-child: 3.3.1
+ jackspeak: 3.4.3
+ minimatch: 9.0.5
+ minipass: 7.1.2
+ package-json-from-dist: 1.0.1
+ path-scurry: 1.11.1
+
+ gopd@1.2.0: {}
+
+ graceful-fs@4.2.11: {}
+
+ has-flag@4.0.0: {}
+
+ has-symbols@1.1.0: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ human-signals@5.0.0: {}
+
+ ieee754@1.2.1: {}
+
+ inherits@2.0.4: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-stream@2.0.1: {}
+
+ is-stream@3.0.0: {}
+
+ isarray@1.0.0: {}
+
+ isexe@2.0.0: {}
+
+ jackspeak@3.4.3:
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+
+ lazystream@1.0.1:
+ dependencies:
+ readable-stream: 2.3.8
+
+ lodash@4.17.21: {}
+
+ lru-cache@10.4.3: {}
+
+ math-intrinsics@1.1.0: {}
+
+ merge-stream@2.0.0: {}
+
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mimic-fn@4.0.0: {}
+
+ minimatch@5.1.6:
+ dependencies:
+ brace-expansion: 2.0.2
+
+ minimatch@9.0.5:
+ dependencies:
+ brace-expansion: 2.0.2
+
+ minipass@7.1.2: {}
+
+ normalize-path@3.0.0: {}
+
+ npm-run-path@5.3.0:
+ dependencies:
+ path-key: 4.0.0
+
+ onetime@6.0.0:
+ dependencies:
+ mimic-fn: 4.0.0
+
+ package-json-from-dist@1.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-key@4.0.0: {}
+
+ path-scurry@1.11.1:
+ dependencies:
+ lru-cache: 10.4.3
+ minipass: 7.1.2
+
+ process-nextick-args@2.0.1: {}
+
+ process@0.11.10: {}
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ readable-stream@4.7.0:
+ dependencies:
+ abort-controller: 3.0.0
+ buffer: 6.0.3
+ events: 3.3.0
+ process: 0.11.10
+ string_decoder: 1.3.0
+
+ readdir-glob@1.1.3:
+ dependencies:
+ minimatch: 5.1.6
+
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ signal-exit@4.1.0: {}
+
+ streamx@2.22.1:
+ dependencies:
+ fast-fifo: 1.3.2
+ text-decoder: 1.2.3
+ optionalDependencies:
+ bare-events: 2.6.1
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string-width@5.1.2:
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.0
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-ansi@7.1.0:
+ dependencies:
+ ansi-regex: 6.2.0
+
+ strip-final-newline@3.0.0: {}
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ tar-stream@3.1.7:
+ dependencies:
+ b4a: 1.6.7
+ fast-fifo: 1.3.2
+ streamx: 2.22.1
+
+ text-decoder@1.2.3:
+ dependencies:
+ b4a: 1.6.7
+
+ typescript@5.9.2: {}
+
+ undici-types@5.26.5: {}
+
+ util-deprecate@1.0.2: {}
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@8.1.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+
+ zip-stream@6.0.1:
+ dependencies:
+ archiver-utils: 5.0.2
+ compress-commons: 6.0.2
+ readable-stream: 4.7.0
+
+ zod@3.25.76: {}