Merge branch 'dev' into release

This commit is contained in:
Kuingsmile
2025-06-12 09:29:54 +08:00
33 changed files with 888 additions and 304 deletions
+2 -2
View File
@@ -36,9 +36,9 @@ jobs:
# step3: install node env
- name: Install Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v4
with:
node-version: '16.x'
node-version: '18.17.0'
- name: Install system deps
if: matrix.os == 'ubuntu-latest'
+2 -2
View File
@@ -36,9 +36,9 @@ jobs:
# step3: install node env
- name: Install Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v4
with:
node-version: '16.x'
node-version: '18.17.0'
- name: Install system deps
if: matrix.os == 'ubuntu-latest'
+2 -2
View File
@@ -43,9 +43,9 @@ jobs:
# step3: install node env
- name: Install Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v4
with:
node-version: '16.x'
node-version: '18.17.0'
# step3: yarn
- name: Yarn install macos
+2 -2
View File
@@ -44,9 +44,9 @@ jobs:
# step3: install node env
- name: Install Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v4
with:
node-version: '16.x'
node-version: '18.17.0'
- name: Install system deps
if: matrix.os == 'ubuntu-latest'
+2 -2
View File
@@ -43,9 +43,9 @@ jobs:
# step2: install node env
- name: Install Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v4
with:
node-version: '16.x'
node-version: '18.17.0'
# step3: yarn
- name: Yarn install
+69
View File
@@ -0,0 +1,69 @@
# main.yml
# Workflow's name
name: Win Beta Build
# Workflow's trigger
on:
workflow_dispatch:
env:
ELECTRON_OUTPUT_PATH: ./dist_electron
CSC_LINK: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
CSC_KEY_PASSWORD: ${{ secrets.P12_PASSWORD }}
# Workflow's jobs
jobs:
# job's id
release:
# job's name
name: build and release electron app
# the type of machine to run the job on
runs-on: ${{ matrix.os }}
# create a build matrix for jobs
strategy:
fail-fast: false
matrix:
os: [windows-11-arm]
# create steps
steps:
# step1: check out repository
- name: Check out git repository
uses: actions/checkout@v2
# step3: install node env
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: '18.17.0'
architecture: 'x64'
- name: Yarn install windows
if: matrix.os == 'windows-11-arm'
run: |
yarn
yarn run lint:fix
yarn global add xvfb-maybe
- name: Build & release app
run: |
yarn release
yarn upload-beta
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
R2_SECRET_ID: ${{ secrets.R2_SECRET_ID }}
R2_SECRET_KEY: ${{ secrets.R2_SECRET_KEY }}
R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
ELECTRON_SKIP_NOTARIZATION: ${{ secrets.ELECTRON_SKIP_NOTARIZATION }}
XCODE_APP_LOADER_EMAIL: ${{ secrets.XCODE_APP_LOADER_EMAIL }}
XCODE_APP_LOADER_PASSWORD: ${{ secrets.XCODE_APP_LOADER_PASSWORD }}
XCODE_TEAM_ID: ${{ secrets.XCODE_TEAM_ID }}
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
+2 -2
View File
@@ -36,9 +36,9 @@ jobs:
# step3: install node env
- name: Install Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v4
with:
node-version: '16.x'
node-version: '18.17.0'
- name: Yarn install windows
if: matrix.os == 'windows-latest'
+1
View File
@@ -26,3 +26,4 @@ scripts/generateYmlFile.js
/dist_electron
/docs
cloc.exe
desktop.ini
+15
View File
@@ -0,0 +1,15 @@
{
"inputs": [
// The "inputs" section defines the inputs required for the MCP server configuration.
{
"type": "promptString"
}
],
"servers": {
// The "servers" section defines the MCP servers you want to use.
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
}
+39
View File
@@ -1,3 +1,42 @@
## :tada: 2.9.9 (2025-06-12)
### :sparkles: Features
* **custom:** add support of skip process ([0f75afe](https://github.com/Kuingsmile/piclist/commit/0f75afe))
* **custom:** add WebDAV sync configuration options ([d5f137e](https://github.com/Kuingsmile/piclist/commit/d5f137e))
* **custom:** always copy workflow file for macos ([3a25da9](https://github.com/Kuingsmile/piclist/commit/3a25da9))
* **custom:** enhance Gallery page layout and styling for improved user experience ([060e215](https://github.com/Kuingsmile/piclist/commit/060e215))
* **custom:** enhance upload page UI and functionality ([89f8d4c](https://github.com/Kuingsmile/piclist/commit/89f8d4c))
* **custom:** make configuration properties optional for various services ([36706f9](https://github.com/Kuingsmile/piclist/commit/36706f9))
* **custom:** refactor plugin page ([a06b7e8](https://github.com/Kuingsmile/piclist/commit/a06b7e8))
* **custom:** remove auto replace of localhost to 0.0.0.0 ([9deda85](https://github.com/Kuingsmile/piclist/commit/9deda85))
* **custom:** reorder watermark position mapping for improved clarity ([711a89a](https://github.com/Kuingsmile/piclist/commit/711a89a))
* **custom:** update core ([e17b578](https://github.com/Kuingsmile/piclist/commit/e17b578)), closes [#329](https://github.com/Kuingsmile/piclist/issues/329)
* **custom:** update styles for improved UI in Plugin and UploaderConfig pages ([11c694d](https://github.com/Kuingsmile/piclist/commit/11c694d))
### :pencil: Documentation
* **custom:** add official website section to README files ([ea0d19c](https://github.com/Kuingsmile/piclist/commit/ea0d19c))
* **custom:** update release notes for v2.9.9 with new features and important changes ([9080535](https://github.com/Kuingsmile/piclist/commit/9080535))
### :package: Chore
* **custom:** add lint fix ([b0a4454](https://github.com/Kuingsmile/piclist/commit/b0a4454))
* **custom:** add windows arm test workflow ([205f1ce](https://github.com/Kuingsmile/piclist/commit/205f1ce))
* **custom:** test arm64 workflow ([c715f25](https://github.com/Kuingsmile/piclist/commit/c715f25))
* **custom:** update scripts ([5c42690](https://github.com/Kuingsmile/piclist/commit/5c42690))
* **custom:** upgrade setup-node action to v4 in CI workflows ([8ca0bbc](https://github.com/Kuingsmile/piclist/commit/8ca0bbc))
### :back: Revert
* **custom:** revert UI chage, delayed to next major version ([8b92501](https://github.com/Kuingsmile/piclist/commit/8b92501))
## :tada: 2.9.8 (2025-03-04)
+11
View File
@@ -21,6 +21,7 @@
- [📑 Table of Contents](#-table-of-contents)
- [Introduction](#introduction)
- [Official Website](#official-website)
- [How to Migrate from PicGo](#how-to-migrate-from-picgo)
- [PicList-Core](#piclist-core)
- [Key Features](#key-features)
@@ -60,6 +61,12 @@ PicList is an efficient cloud storage and image hosting management tool built up
- Comprehensive cloud storage management with file operations, search, and previews
- Built-in image processing tools (watermarks, compression, scaling, rotation, format conversion)
## Official Website
Please visit the [PicList official website piclist.cn](https://piclist.cn) for more information.
You can also visit the [DeepWiki of PicList](https://deepwiki.com/Kuingsmile/PicList) to learn more about the project architecture and development.
## How to Migrate from PicGo
PicList `V1.5.0` and above provide a `one-click migration` function. Enter the `Settings` page, click the button next to `Migrate from PicGo`, then restart the application for changes to take effect.
@@ -109,6 +116,7 @@ If your Typora version is below 1.8.0, set both the PicList and PicGo (app) uplo
#### **Version < 1.6.0-dev**
For Windows, in Typora settings:
1. Set upload service to `PicGo(app)`
2. Set `PicGo path` to your PicList installation path
@@ -138,6 +146,7 @@ docker run -d \
kuingsmile/piclist:latest \
node /usr/local/bin/picgo-server -k piclist123456
```
Change `./piclist` to your config directory path and `piclist123456` to your preferred secret key.
#### Using docker-compose
@@ -262,11 +271,13 @@ The built installer will be available in the `dist_electron` directory.
For network issues with electron-builder, set the mirror:
**Linux/macOS:**
```bash
export ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"
```
**Windows:**
```cmd
set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
```
+10
View File
@@ -21,6 +21,7 @@
- [📑 目录](#-目录)
- [简介](#简介)
- [官方网址](#官方网址)
- [如何从PicGo迁移](#如何从picgo迁移)
- [PicList-Core](#piclist-core)
- [特色功能](#特色功能)
@@ -60,6 +61,12 @@ PicList是一款高效的云存储和图床平台管理工具,基于PicGo深
- 全面的云存储管理功能,包括文件操作、搜索和预览
- 内置图像处理工具,如水印、压缩、缩放、旋转和格式转换
## 官方网址
请访问 [PicList官网 piclist.cn](https://piclist.cn) 获取更多信息。
此外,你也可以访问[DeepWiki of PicList](https://deepwiki.com/Kuingsmile/PicList)了解更多关于项目架构和开发的内容。
## 如何从PicGo迁移
PicList `V1.5.0`以上版本提供 `一键迁移`功能,进入 `设置`页面,然后在 `从PicGo迁移`选项点击右侧按钮即可,迁移后请重启应用生效。
@@ -109,6 +116,7 @@ PicList的内核使用[PicList-core](https://github.com/Kuingsmile/PicList-Core)
#### **1.6.0版本以下**
Windows系统:
1. 进入Typora设置页面,选择"图像"
2. 将上传服务设置为`PicGo(app)`
3.`PicGo路径`中填写PicList的安装路径
@@ -266,11 +274,13 @@ yarn run build
如果遇到网络问题导致electron-builder下载失败,可以设置镜像源:
**Linux/macOS:**
```bash
export ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"
```
**Windows:**
```cmd
set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
```
+19 -6
View File
@@ -1,9 +1,22 @@
### ✨ Features
## 🎉 [v2.9.9] 更新日志
- 移除了管理界面的额外提示横幅
- 优化了相册缓存机制,现在重复上传同名图片时会正确刷新
- 优化了配置读取机制
本次更新引入了对 WebDAV 配置同步和便携模式的支持,同时提升了安全性和易用性。
### 🐛 Bug Fixes
### ⚠️ 重要变更
- 修复了alist图床在设置自定义域名后图片链接拼接错误的问题
* **环境要求更新**:我们已停止对 Node.js 16 的支持。现在开发本应用所需的 **最低 Node.js 版本为 v18.17.0**
### ✨ 新增功能 (Features)
* **WebDAV 配置同步**:现在您可以使用 WebDAV 在多个设备间同步您的应用配置了。
* **便携模式支持**:新增了便携包,无需安装即可运行,轻松实现“开箱即用”。
* **跳过图片处理**:现在可以设置特定文件后缀名(如 `.gif`),使其在上传时跳过所有图片处理流程。
* **增强的上传器支持**:为腾讯云、阿里云和高级自定义图床增加了 `webPath` 参数。
* **更广泛的系统支持**:通过更新核心图像处理库 (sharp),增加了对 ArchLinux 的支持。
* **增强局域网安全**:内置的 API 服务不再默认监听 `0.0.0.0`,以防止未经授权的局域网访问,提升了安全性。
### 🐛 问题修复 (Bug Fixes)
* **SM.MS 上传**:修复了在特定网络环境下,上传到 SM.MS 图床可能失败的问题。
* **WebDAV 默认路径**:修复了 WebDAV 上传器中 `webPath` 参数默认值不正确的问题。
* **macOS 右键菜单**:修复了 macOS 上右键菜单有时会消失的问题,现在程序会尝试自动恢复它。
+18 -5
View File
@@ -1,9 +1,22 @@
### ✨ Features
## 🎉 [v2.9.9] Release Notes
- Remove the extra prompt banner in the management interface
- Optimized the album cache mechanism, now when uploading images with the same name repeatedly, it will refresh correctly
- Optimized the configuration reading mechanism
This update introduces support for WebDAV configuration synchronization and portable mode, while enhancing security and usability.
### ⚠️ Important Changes
* **Environment Requirement Update**: We have stopped supporting Node.js 16. The **minimum Node.js version required to develop this application is now v18.17.0**.
### ✨ New Features
* **WebDAV Configuration Synchronization**: You can now use WebDAV to synchronize your application configuration across multiple devices.
* **Portable Mode Support**: A portable package has been added, allowing you to run the application without installation for an "out-of-the-box" experience.
* **Skip Image Processing**: You can now set specific file extensions (like `.gif`) to skip all image processing during upload.
* **Enhanced Uploader Support**: Added `webPath` parameter for Tencent Cloud, Alibaba Cloud, and advanced custom image hosts.
* **Broader System Support**: Added support for ArchLinux by updating the core image processing library (sharp).
* **Enhanced LAN Security**: The built-in API service no longer listens on `0.0.0.0` by default, preventing unauthorized access from the local network.
### 🐛 Bug Fixes
- Fixed the problem that the image link of the alist picture bed was spliced incorrectly after setting a custom domain name
* **SM.MS Upload**: Fixed an issue where uploads to the SM.MS image host could fail in certain network environments.
* **WebDAV Default Path**: Fixed an issue with the default value of the `webPath` parameter in the WebDAV uploader.
* **macOS Right-Click Menu**: Fixed an issue where the right-click menu would sometimes disappear on macOS, and the program will now attempt to restore it automatically.
+5 -5
View File
@@ -1,6 +1,6 @@
{
"name": "piclist",
"version": "2.9.8",
"version": "2.9.9",
"author": {
"name": "Kuingsmile",
"email": "pkukuing@gmail.com"
@@ -46,7 +46,7 @@
"@smithy/node-http-handler": "^2.1.6",
"@videojs-player/vue": "^1.0.0",
"ali-oss": "^6.18.1",
"axios": "^1.6.8",
"axios": "^1.9.0",
"compare-versions": "^4.1.3",
"core-js": "^3.37.1",
"cos-nodejs-sdk-v5": "^2.12.5",
@@ -67,7 +67,7 @@
"multer": "^1.4.5-lts.1",
"node-ssh-no-cpu-features": "^2.0.0",
"nodejs-file-downloader": "^4.12.1",
"piclist": "^1.9.11",
"piclist": "^1.9.13",
"pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.1",
"proxy-agent": "^5.0.0",
@@ -97,7 +97,7 @@
"@types/lowdb": "^1.0.15",
"@types/mime-types": "^2.1.4",
"@types/multer": "^1.4.11",
"@types/node": "^22.0.0",
"@types/node": "^18.19.110",
"@types/semver": "^7.5.6",
"@types/tunnel": "^0.0.7",
"@types/upyun": "^3.4.3",
@@ -149,7 +149,7 @@
}
},
"resolutions": {
"@types/node": "^16.10.2",
"@types/node": "^18.19.110",
"vue-cli-plugin-electron-builder/**/electron-builder": "23.3.3"
}
}
+13
View File
@@ -108,6 +108,8 @@ GALLERY_MATCHED: ' Matched: '
UPLOAD_PAGE_COPY_UPLOAD_API: Copy Upload API
UPLOAD_PAGE_IMAGE_PROCESS_NAME: Image Processing
UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE: Image Processing Settings
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST: Skip Process Ext List
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS: Enter the file extensions to skip processing, separated by commas (e.g., jpg,png,gif)
UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM: Add Watermark
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE: Watermark Type
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT: Text
@@ -125,6 +127,7 @@ UPLOAD_PAGE_IMAGE_PROCESS_QUALITY: Compression Quality(1-100)
UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT: Convert Format
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT: Destination Format
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC: 'Specific Format, Please enter in json format, e.g. {"png": "jpg"}'
UPLOAD_PAGE_IMAGE_PROCESS_TRANSFORMATION: Image Rotate Setting
UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP: Whether to flip vertically
UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP: Whether to flip horizontally
UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE: Resize to fixed size
@@ -302,6 +305,16 @@ SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: Please enter GitHub Token
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: Please enter Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: Please enter Gitee Token
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: Please enter proxy
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT: WebDAV Endpoint
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER: Please enter WebDAV endpoint URL
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME: Username
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER: Please enter WebDAV username
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD: Password
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER: Please enter WebDAV password
SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE: Authentication Type
SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED: Enable SSL/HTTPS
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH: Save Path
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER: Please select save path for sync files
SETTINGS_UP_DOWN_DESC: Upload and download configuration files
SETTINGS_UP_DOWN_TITLE: Please use this after filled the synchronization configuration
SETTINGS_SYNC_UPLOAD: Upload
+14 -1
View File
@@ -108,6 +108,8 @@ GALLERY_MATCHED: ' 匹配到: '
UPLOAD_PAGE_COPY_UPLOAD_API: 复制上传API
UPLOAD_PAGE_IMAGE_PROCESS_NAME: 图片处理
UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE: 图片处理设置
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST: 跳过处理的文件扩展名列表
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS: "请填写需要跳过处理的文件扩展名列表, 以英文逗号分隔, 如: jpg,png,gif"
UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM: 是否添加水印
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE: 水印类型
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT: 文字
@@ -125,6 +127,7 @@ UPLOAD_PAGE_IMAGE_PROCESS_QUALITY: 压缩质量(1-100)
UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT: 是否转换格式
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT: 转换目的格式
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC: '精细化转换格式, 请输入JSON格式,如: {"png": "jpg"}'
UPLOAD_PAGE_IMAGE_PROCESS_TRANSFORMATION: 图片旋转设置
UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP: 是否进行垂直翻转
UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP: 是否进行水平翻转
UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE: 是否按固定尺寸调整图片
@@ -305,6 +308,16 @@ SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: 请输入GitHub Token
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: 请输入Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: 请输入Gitee Token
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: 请输入代理地址
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT: WebDAV端点
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER: 请输入WebDAV端点URL
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME: 用户名
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER: 请输入WebDAV用户名
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD: 密码
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER: 请输入WebDAV密码
SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE: 认证类型
SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED: 启用SSL/HTTPS
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH: 保存路径
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER: 请选择同步文件的保存路径
SETTINGS_UP_DOWN_DESC: 上传下载配置文件
SETTINGS_UP_DOWN_TITLE: 请在设置完同步配置后使用
SETTINGS_SYNC_UPLOAD: 上传
@@ -350,7 +363,7 @@ DRAG_FILE_TO_HERE: 将文件拖拽到此处,或
CLICK_TO_UPLOAD: 点击上传
LINK_FORMAT: 链接格式
CUSTOM: 自定义
CLIPBOARD_PICTURE: 剪贴板图片
CLIPBOARD_PICTURE: 剪贴板
TIPS_DRAG_VALID_PICTURE_OR_URL: 请拖入合法的图片文件或者图片URL地址
TIPS_INPUT_URL: 请输入URL
TIPS_HTTP_PREFIX: http://或者https://开头
+14 -1
View File
@@ -108,6 +108,8 @@ GALLERY_MATCHED: ' 匹配到: '
UPLOAD_PAGE_COPY_UPLOAD_API: 複製上傳API
UPLOAD_PAGE_IMAGE_PROCESS_NAME: 圖片處理
UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE: 圖片處理設置
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST: 跳過處理的文件擴展名列表
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS: "請填寫需要跳過處理的文件擴展名列表, 以英文逗號分隔, 如: jpg,png,gif"
UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM: 是否添加水印
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE: 水印類型
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT: 文字
@@ -125,6 +127,7 @@ UPLOAD_PAGE_IMAGE_PROCESS_QUALITY: 壓縮質量(1-100)
UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT: 是否轉換格式
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT: 轉換目的格式
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC: '指定格式, 请输入JSON格式配置,如{"jpg":"png"}'
UPLOAD_PAGE_IMAGE_PROCESS_TRANSFORMATION: 圖片翻轉设置
UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP: 是否進行垂直翻轉
UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP: 是否進行水平翻轉
UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE: 是否按固定尺寸調整圖片
@@ -303,6 +306,16 @@ SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: 請輸入 GitHub Token
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: 請輸入 Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: 請輸入 Gitee Token
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: 請輸入代理地址
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT: WebDAV端點
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER: 請輸入WebDAV端點URL
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME: 用戶名
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER: 請輸入WebDAV用戶名
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD: 密碼
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER: 請輸入WebDAV密碼
SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE: 認證類型
SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED: 啟用SSL/HTTPS
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH: 保存路徑
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER: 請選擇同步檔案的保存路徑
SETTINGS_UP_DOWN_DESC: 上傳和下載配置檔案
SETTINGS_UP_DOWN_TITLE: 請在設置完同步配置後再使用
SETTINGS_SYNC_UPLOAD: 上傳
@@ -348,7 +361,7 @@ DRAG_FILE_TO_HERE: 將檔案拖曳到此處,或
CLICK_TO_UPLOAD: 點擊上傳
LINK_FORMAT: 連結格式
CUSTOM: 自訂
CLIPBOARD_PICTURE: 剪貼簿圖片
CLIPBOARD_PICTURE: 剪貼簿
TIPS_DRAG_VALID_PICTURE_OR_URL: 請拖入合法的圖片檔案或者圖片URL地址
TIPS_INPUT_URL: 請輸入URL
TIPS_HTTP_PREFIX: http://或者https://開頭
+2 -2
View File
@@ -1,7 +1,7 @@
const ncu = require('npm-check-updates')
const axios = require('axios')
async function getRepositoryInfo (packageName) {
async function getRepositoryInfo(packageName) {
try {
const { data } = await axios.get(`https://registry.npmjs.org/${packageName}`)
const repository = data.repository
@@ -17,7 +17,7 @@ async function getRepositoryInfo (packageName) {
return null
}
async function checkUpdates () {
async function checkUpdates() {
const updated = await ncu.run({
packageFile: './package.json',
upgrade: false
+53 -43
View File
@@ -1,53 +1,63 @@
// different platform has different format
// macos
const darwin = [{
appNameWithPrefix: 'PicList-',
ext: '.dmg',
arch: '-arm64',
'version-file': 'latest-mac.yml'
}, {
appNameWithPrefix: 'PicList-',
ext: '.dmg',
arch: '-x64',
'version-file': 'latest-mac.yml'
}, {
appNameWithPrefix: 'PicList-',
ext: '.dmg',
arch: '-universal',
'version-file': 'latest-mac.yml'
}
const darwin = [
{
appNameWithPrefix: 'PicList-',
ext: '.dmg',
arch: '-arm64',
'version-file': 'latest-mac.yml'
},
{
appNameWithPrefix: 'PicList-',
ext: '.dmg',
arch: '-x64',
'version-file': 'latest-mac.yml'
},
{
appNameWithPrefix: 'PicList-',
ext: '.dmg',
arch: '-universal',
'version-file': 'latest-mac.yml'
}
]
const linux = [{
appNameWithPrefix: 'PicList-',
ext: '.AppImage',
arch: '',
'version-file': 'latest-linux.yml'
}, {
appNameWithPrefix: 'piclist_',
ext: '.snap',
arch: '_amd64',
'version-file': 'latest-linux.yml'
}]
const linux = [
{
appNameWithPrefix: 'PicList-',
ext: '.AppImage',
arch: '',
'version-file': 'latest-linux.yml'
},
{
appNameWithPrefix: 'piclist_',
ext: '.snap',
arch: '_amd64',
'version-file': 'latest-linux.yml'
}
]
// windows
const win32 = [{
appNameWithPrefix: 'PicList-Setup-',
ext: '.exe',
arch: '-ia32',
'version-file': 'latest.yml'
}, {
appNameWithPrefix: 'PicList-Setup-',
ext: '.exe',
arch: '-x64',
'version-file': 'latest.yml'
}, {
appNameWithPrefix: 'PicList-Setup-',
ext: '.exe',
arch: '', // 32 & 64
'version-file': 'latest.yml'
}]
const win32 = [
{
appNameWithPrefix: 'PicList-Setup-',
ext: '.exe',
arch: '-ia32',
'version-file': 'latest.yml'
},
{
appNameWithPrefix: 'PicList-Setup-',
ext: '.exe',
arch: '-x64',
'version-file': 'latest.yml'
},
{
appNameWithPrefix: 'PicList-Setup-',
ext: '.exe',
arch: '', // 32 & 64
'version-file': 'latest.yml'
}
]
module.exports = {
darwin,
+1 -2
View File
@@ -12,8 +12,7 @@ const obj = yaml.load(langFile)
const keys = Object.keys(obj)
const types =
`interface ILocales {
const types = `interface ILocales {
${keys.map(key => `${key}: string`).join('\n ')}
}
type ILocalesKey = keyof ILocales
+104 -26
View File
@@ -4,55 +4,133 @@ const path = require('path')
const axios = require('axios')
const fs = require('fs-extra')
const pkg = require('../package.json')
const version = pkg.version
const version = process.argv[2] || pkg.version
const x64URL = `https://release.piclist.cn/latest/PicList-${version}-x64.dmg`
const arm64URL = `https://release.piclist.cn/latest/PicList-${version}-arm64.dmg`
const x64Path = path.join(os.homedir(), 'Downloads', 'PicList-x64.dmg')
const arm64Path = path.join(os.homedir(), 'Downloads', 'PicList-arm64.dmg')
// Configuration
const BASE_URL = `https://github.com/Kuingsmile/PicList/releases/download/v${version}`
const DOWNLOAD_DIR = process.argv[3] || path.join(os.homedir(), 'Downloads')
// File information
const files = [
{
name: 'PicList-x64.dmg',
url: `${BASE_URL}/PicList-${version}-x64.dmg`
},
{
name: 'PicList-arm64.dmg',
url: `${BASE_URL}/PicList-${version}-arm64.dmg`
}
]
/**
* Create progress bar string
*/
function getProgressBar(current, total, length = 20) {
const progress = Math.round((current / total) * length)
const percentage = Math.round((current / total) * 100)
const bar = '█'.repeat(progress) + '░'.repeat(length - progress)
return `[${bar}] ${percentage}% (${formatBytes(current)}/${formatBytes(total)})`
}
/**
* Format bytes to human-readable format
*/
function formatBytes(bytes, decimals = 2) {
if (bytes === 0) return '0 Bytes'
const k = 1024
const sizes = ['Bytes', 'KB', 'MB', 'GB']
const i = Math.floor(Math.log(bytes) / Math.log(k))
return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + ' ' + sizes[i]
}
/**
* Download file and calculate SHA256 hash
*/
async function downloadAndHash(fileInfo) {
const { url, name } = fileInfo
const filePath = path.join(DOWNLOAD_DIR, name)
console.log(`\nStarting download: ${name} from ${url}`)
const downloadAndHash = async (url, path) => {
try {
const response = await axios({
method: 'get',
url,
responseType: 'stream'
})
const writer = fs.createWriteStream(path)
const writer = fs.createWriteStream(filePath)
response.data.pipe(writer)
const hash = crypto.createHash('sha256')
const progressTotal = parseInt(response.headers['content-length'], 10)
let progressCurrent = 0
console.log('\n')
response.data.on('data', (chunk) => {
response.data.on('data', chunk => {
hash.update(chunk)
progressCurrent += chunk.length
const progressBar = Math.round(progressCurrent / progressTotal * 100)
process.stdout.write(`\r${progressBar}% ${path}`)
process.stdout.write(`\r${name}: ${getProgressBar(progressCurrent, progressTotal)}`)
})
await new Promise((resolve, reject) => {
response.data.on('end', () => {
resolve()
})
response.data.on('error', (err) => {
reject(err)
})
writer.on('finish', resolve)
writer.on('error', reject)
response.data.on('error', reject)
})
console.log(`\n${path} SHA256: ${hash.digest('hex')}`)
const hashValue = hash.digest('hex')
console.log(`\n${name} SHA256: ${hashValue}`)
await fs.remove(path)
console.log(`Deleted ${path}`)
// Write hash to a file for reference
await fs.writeFile(`${filePath}.sha256`, hashValue)
console.log(`Hash saved to ${filePath}.sha256`)
if (process.argv.includes('--keep-files')) {
console.log(`Keeping file: ${filePath}`)
} else {
await fs.remove(filePath)
console.log(`Deleted: ${filePath}`)
}
return { name, hash: hashValue }
} catch (err) {
console.error(`\nError downloading ${url}: ${err.message}`)
console.error(`\nError processing ${name}: ${err.message}`)
throw err
}
}
downloadAndHash(x64URL, x64Path).then(() => {
downloadAndHash(arm64URL, arm64Path)
}).catch(() => {
downloadAndHash(arm64URL, arm64Path)
})
/**
* Main function
*/
async function main() {
console.log(`Generating SHA256 hashes for PicList v${version}`)
console.log(`Download directory: ${DOWNLOAD_DIR}`)
try {
// Ensure download directory exists
await fs.ensureDir(DOWNLOAD_DIR)
// Start all downloads concurrently
const results = await Promise.allSettled(files.map(downloadAndHash))
// Output summary
console.log('\n===== SUMMARY =====')
results.forEach((result, index) => {
const fileName = files[index].name
if (result.status === 'fulfilled') {
console.log(`${fileName}: ${result.value.hash}`)
} else {
console.log(`${fileName}: Failed - ${result.reason.message}`)
}
})
// Check if all downloads were successful
if (results.some(r => r.status === 'rejected')) {
process.exit(1)
}
} catch (err) {
console.error(`\nCritical error: ${err.message}`)
process.exit(1)
}
}
main()
+2 -7
View File
@@ -3,14 +3,9 @@
require('dotenv').config()
const { notarize } = require('@electron/notarize')
const {
ELECTRON_SKIP_NOTARIZATION,
XCODE_APP_LOADER_EMAIL,
XCODE_APP_LOADER_PASSWORD,
XCODE_TEAM_ID
} = process.env
const { ELECTRON_SKIP_NOTARIZATION, XCODE_APP_LOADER_EMAIL, XCODE_APP_LOADER_PASSWORD, XCODE_TEAM_ID } = process.env
async function main (context) {
async function main(context) {
const { electronPlatformName, appOutDir } = context
if (
+1 -1
View File
@@ -45,7 +45,7 @@ const uploadFile = async () => {
}
}
})
parallelUploads3.on('httpUploadProgress', (progress) => {
parallelUploads3.on('httpUploadProgress', progress => {
const progressBar = Math.round((progress.loaded / progress.total) * 100)
process.stdout.write(`\r${progressBar}% ${fileName}`)
})
-1
View File
@@ -53,7 +53,6 @@ class Server {
config = { port: DEFAULT_PORT, host: DEFAULT_HOST, enable: true }
picgo.saveConfig({ [configPaths.settings.server]: config })
}
config.host = config.host === '127.0.0.1' ? '0.0.0.0' : config.host
return config
}
-1
View File
@@ -44,7 +44,6 @@ function copyFileOutsideOfElectronAsar(sourceInAsarArchive: string, destOutsideA
*/
function resolveMacWorkFlow() {
const dest = `${os.homedir()}/Library/Services/Upload pictures with PicList.workflow`
if (fs.existsSync(dest)) return true
try {
copyFileOutsideOfElectronAsar(path.join(__static, 'Upload pictures with PicList.workflow'), dest)
} catch (e) {
+95 -1
View File
@@ -4,11 +4,13 @@ import fs from 'fs-extra'
import { HttpsProxyAgent } from 'hpagent'
import path from 'path'
import { Octokit } from '@octokit/rest'
import { createClient, AuthType, WebDAVClientOptions } from 'webdav'
import db from '@core/datastore'
import logger from '@core/picgo/logger'
import { configPaths } from '#/utils/configPaths'
import { formatEndpoint } from '#/utils/common'
const STORE_PATH = app.getPath('userData')
@@ -53,7 +55,30 @@ function getOctokit(syncConfig: ISyncConfig) {
})
}
const isSyncConfigValidate = ({ type, username, repo, branch, token }: ISyncConfig) => {
const isSyncConfigValidate = ({
type,
username,
repo,
branch,
token,
webdavEndpoint,
webdavUsername,
webdavPassword,
webdavAuthType,
webdavSslEnabled,
webdavSavePath
}: ISyncConfig) => {
if (type === 'webdav') {
return (
type &&
webdavEndpoint &&
webdavUsername &&
webdavPassword &&
webdavAuthType !== undefined &&
webdavSslEnabled !== undefined &&
webdavSavePath !== undefined
)
}
return type && username && repo && branch && token
}
@@ -97,6 +122,29 @@ async function uploadLocalToRemote(syncConfig: ISyncConfig, fileName: string) {
const res = await axios.post(apiUrl, defaultConfig, { headers })
return isHttpResSuccess(res)
}
case 'webdav': {
const {
webdavEndpoint = '',
webdavUsername,
webdavPassword,
webdavAuthType = 'basic',
webdavSslEnabled = true,
webdavSavePath = ''
} = syncConfig
const webdavEndpointF = formatEndpoint(webdavEndpoint, webdavSslEnabled)
const options: WebDAVClientOptions = {
username: webdavUsername,
password: webdavPassword
}
if (webdavAuthType === 'digest') {
options.authType = AuthType.Digest
}
const client = createClient(webdavEndpointF, options)
const fileContent = fs.readFileSync(localFilePath)
const remoteFilePath = webdavSavePath ? path.join(webdavSavePath, fileName) : fileName
await client.putFileContents(remoteFilePath, fileContent, { overwrite: true })
return true
}
default:
return false
}
@@ -188,6 +236,29 @@ async function updateLocalToRemote(syncConfig: ISyncConfig, fileName: string) {
)
return isHttpResSuccess(res)
}
case 'webdav': {
const {
webdavEndpoint = '',
webdavUsername,
webdavPassword,
webdavAuthType = 'basic',
webdavSslEnabled = true,
webdavSavePath = ''
} = syncConfig
const webdavEndpointF = formatEndpoint(webdavEndpoint, webdavSslEnabled)
const options: WebDAVClientOptions = {
username: webdavUsername,
password: webdavPassword
}
if (webdavAuthType === 'digest') {
options.authType = AuthType.Digest
}
const client = createClient(webdavEndpointF, options)
const fileContent = fs.readFileSync(localFilePath)
const remoteFilePath = webdavSavePath ? path.join(webdavSavePath, fileName) : fileName
await client.putFileContents(remoteFilePath, fileContent, { overwrite: true })
return true
}
default:
return false
}
@@ -278,6 +349,29 @@ async function downloadRemoteToLocal(syncConfig: ISyncConfig, fileName: string)
}
})
}
case 'webdav': {
const {
webdavEndpoint = '',
webdavUsername,
webdavPassword,
webdavAuthType = 'basic',
webdavSslEnabled = true,
webdavSavePath = ''
} = syncConfig
const webdavEndpointF = formatEndpoint(webdavEndpoint, webdavSslEnabled)
const options: WebDAVClientOptions = {
username: webdavUsername,
password: webdavPassword
}
if (webdavAuthType === 'digest') {
options.authType = AuthType.Digest
}
const client = createClient(webdavEndpointF, options)
const remoteFilePath = webdavSavePath ? path.join(webdavSavePath, fileName) : fileName
const fileContent = await client.getFileContents(remoteFilePath)
await fs.writeFile(localFilePath, fileContent as Buffer)
return true
}
default:
return false
}
@@ -6,6 +6,12 @@
size="default"
:model="waterMarkForm"
>
<el-form-item :label="$T('UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST')">
<el-input v-model="skipProcessForm.skipProcessExtList" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" />
<div class="text-xs text-gray-500">
{{ $T('UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS') }}
</div>
</el-form-item>
<el-form-item :label="$T('UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM')">
<el-switch v-model="waterMarkForm.isAddWatermark" :style="switchStyle" />
</el-form-item>
@@ -189,6 +195,7 @@ const waterMarkForm = reactive<IBuildInWaterMarkOptions>({
watermarkImagePath: '',
watermarkPosition: 'southeast'
})
const compressForm = reactive<IBuildInCompressOptions>({
quality: 100,
isConvert: false,
@@ -207,8 +214,13 @@ const compressForm = reactive<IBuildInCompressOptions>({
})
const formatConvertObj = ref('{}')
const skipProcessForm = reactive({
skipProcessExtList: 'zip,rar,7z,tar,gz,tar.gz,tar.bz2,tar.xz'
})
const waterMarkFormKeys = Object.keys(waterMarkForm) as (keyof typeof waterMarkForm)[]
const compressFormKeys = Object.keys(compressForm) as (keyof typeof compressForm)[]
const skipProcessFormKeys = Object.keys(skipProcessForm) as (keyof typeof skipProcessForm)[]
const switchStyle = '--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949;'
@@ -226,12 +238,14 @@ function handleSaveConfig() {
compressForm.formatConvertObj = formatConvertObjFilter
saveConfig(configPaths.buildIn.compress, toRaw(compressForm))
saveConfig(configPaths.buildIn.watermark, toRaw(waterMarkForm))
saveConfig(configPaths.buildIn.skipProcess, toRaw(skipProcessForm))
closeDialog()
}
async function initData() {
const compress = await getConfig<any>(configPaths.buildIn.compress)
const watermark = await getConfig<any>(configPaths.buildIn.watermark)
const skipProcess = await getConfig<any>(configPaths.buildIn.skipProcess)
if (compress) {
compressFormKeys.forEach(key => {
compressForm[key] = compress[key] ?? compressForm[key]
@@ -252,6 +266,11 @@ async function initData() {
})
waterMarkForm.watermarkColor = watermark.watermarkColor === '' ? '#CCCCCC73' : watermark.watermarkColor
}
if (skipProcess) {
skipProcessFormKeys.forEach(key => {
skipProcessForm[key] = skipProcess[key] ?? skipProcessForm[key]
})
}
}
function closeDialog() {
+80 -14
View File
@@ -858,9 +858,10 @@
draggable
append-to-body
>
<div class="notice-text">
<div class="notice-text" style="align-items: center; display: flex; justify-content: center">
{{ $T('SETTINGS_SYNC_CONFIG_NOTE') }}
</div>
<el-divider />
<el-form label-position="right" label-width="120px">
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_SELECT_TYPE')">
<el-select v-model="sync.type" style="width: 100%" :persistent="false" teleported>
@@ -875,19 +876,65 @@
<el-form-item v-if="sync.type === 'gitea'" :label="$T('SETTINGS_SYNC_CONFIG_GITEA_HOST')">
<el-input v-model.trim="sync.endpoint" type="input" :placeholder="$T('SETTINGS_SYNC_CONFIG_GITEA_HOST')" />
</el-form-item>
<el-form-item
v-for="inputItem in ['username', 'repo', 'branch', 'token']"
:key="inputItem"
:label="$T(`SETTINGS_SYNC_CONFIG_${sync.type.toUpperCase()}_${inputItem.toUpperCase()}` as any)"
>
<el-form-item v-if="sync.type === 'webdav'" :label="$T('SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT')">
<el-input
v-model.trim="sync[inputItem as any]"
v-model.trim="sync.webdavEndpoint"
type="input"
:placeholder="
$T(`SETTINGS_SYNC_CONFIG_${sync.type.toUpperCase()}_${inputItem.toUpperCase()}_PLACEHOLDER` as any)
"
:placeholder="$T('SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER')"
/>
</el-form-item>
<template v-if="sync.type !== 'webdav'">
<el-form-item
v-for="inputItem in ['username', 'repo', 'branch', 'token']"
:key="inputItem"
:label="$T(`SETTINGS_SYNC_CONFIG_${sync.type.toUpperCase()}_${inputItem.toUpperCase()}` as any)"
>
<el-input
v-model.trim="sync[inputItem as any]"
type="input"
:placeholder="
$T(`SETTINGS_SYNC_CONFIG_${sync.type.toUpperCase()}_${inputItem.toUpperCase()}_PLACEHOLDER` as any)
"
/>
</el-form-item>
</template>
<template v-if="sync.type === 'webdav'">
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME')">
<el-input
v-model.trim="sync.webdavUsername"
type="input"
:placeholder="$T('SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER')"
/>
</el-form-item>
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD')">
<el-input
v-model.trim="sync.webdavPassword"
type="password"
show-password
:placeholder="$T('SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER')"
/>
</el-form-item>
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH')">
<el-input
v-model.trim="sync.webdavSavePath"
type="input"
:placeholder="$T('SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER')"
/>
</el-form-item>
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE')">
<el-select v-model="sync.webdavAuthType" style="width: 100%" :persistent="false" teleported>
<el-option label="Basic" value="basic" />
<el-option label="Digest" value="digest" />
</el-select>
</el-form-item>
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED')">
<el-switch
v-model="sync.webdavSslEnabled"
:active-text="$T('SETTINGS_OPEN')"
:inactive-text="$T('SETTINGS_CLOSE')"
/>
</el-form-item>
</template>
<el-form-item v-if="sync.type === 'github'" :label="$T('SETTINGS_SYNC_CONFIG_PROXY')">
<el-input
v-model.trim="sync.proxy"
@@ -1207,10 +1254,15 @@ const sync = ref<any>({
token: '',
endpoint: '',
proxy: '',
interval: 60
interval: 60,
// WebDAV-specific fields
password: '',
authType: 'basic',
sslEnabled: true,
webdavSavePath: ''
})
const syncType = ['github', 'gitee', 'gitea']
const syncType = ['github', 'gitee', 'gitea', 'webdav']
async function cancelSyncSetting() {
syncVisible.value = false
@@ -1222,7 +1274,14 @@ async function cancelSyncSetting() {
token: '',
endpoint: '',
proxy: '',
interval: 60
interval: 60,
// WebDAV-specific fields
webdavEndpoint: '',
webdavUsername: '',
webdavPassword: '',
webdavAuthType: 'basic',
webdavSslEnabled: true,
webdavSavePath: ''
}
}
@@ -1289,7 +1348,14 @@ async function initData() {
token: '',
endpoint: '',
proxy: '',
interval: 60
interval: 60,
// WebDAV-specific fields
webdavEndpoint: '',
webdavUsername: '',
webdavPassword: '',
webdavAuthType: 'basic',
webdavSslEnabled: true,
webdavSavePath: ''
}
formOfSetting.value.logFileSizeLimit = enforceNumber(settings.logFileSizeLimit) || 10
addProxyWatch()
+13
View File
@@ -105,6 +105,8 @@ interface ILocales {
UPLOAD_PAGE_COPY_UPLOAD_API: string
UPLOAD_PAGE_IMAGE_PROCESS_NAME: string
UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE: string
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST: string
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS: string
UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM: string
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE: string
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT: string
@@ -122,6 +124,7 @@ interface ILocales {
UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT: string
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT: string
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC: string
UPLOAD_PAGE_IMAGE_PROCESS_TRANSFORMATION: string
UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP: string
UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP: string
UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE: string
@@ -298,6 +301,16 @@ interface ILocales {
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT: string
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME: string
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD: string
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE: string
SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED: string
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH: string
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER: string
SETTINGS_UP_DOWN_DESC: string
SETTINGS_UP_DOWN_TITLE: string
SETTINGS_SYNC_UPLOAD: string
+34 -25
View File
@@ -47,6 +47,13 @@ interface ISyncConfig {
endpoint?: string
proxy?: string
interval?: number
// WebDAV specific fields
webdavEndpoint?: string
webdavUsername?: string
webdavPassword?: string
webdavAuthType?: 'basic' | 'digest'
webdavSslEnabled?: boolean
webdavSavePath?: string
}
// Image && PicBed
@@ -310,25 +317,26 @@ interface IAliYunConfig {
accessKeySecret: string
bucket: string
area: string
path: string
customUrl: string
options: string
path?: string
webPath?: string
customUrl?: string
options?: string
}
interface IGitHubConfig {
repo: string
token: string
path: string
customUrl: string
path?: string
customUrl?: string
branch: string
}
interface IImgurConfig {
clientId: string
proxy: string
username: string
accessToken: string
album: string
clientId?: string
proxy?: string
username?: string
accessToken?: string
album?: string
}
interface IQiniuConfig {
@@ -337,8 +345,8 @@ interface IQiniuConfig {
bucket: string
url: string
area: 'z0' | 'z1' | 'z2' | 'na0' | 'as0' | string
options: string
path: string
options?: string
path?: string
}
interface ISMMSConfig {
@@ -353,23 +361,24 @@ interface ITcYunConfig {
appId: string
endpoint: string
area: string
path: string
customUrl: string
path?: string
webPath?: string
customUrl?: string
version: 'v4' | 'v5'
options: string
slim: boolean
options?: string
slim?: boolean
}
interface IUpYunConfig {
bucket: string
operator: string
password: string
options: string
path: string
options?: string
path?: string
url: string
antiLeechToken: string
expireTime: number
endpoint: string
antiLeechToken?: string
expireTime?: number
endpoint?: string
}
interface IWebdavPlistConfig {
@@ -377,11 +386,11 @@ interface IWebdavPlistConfig {
sslEnabled: boolean
username: string
password: string
path: string
webpath: string
customUrl: string
path?: string
webpath?: string
customUrl?: string
authType: string
options: string
options?: string
}
interface ISftpPlistConfig {
+5 -1
View File
@@ -99,6 +99,9 @@ export interface IConfigStruct {
enable: boolean
format: string
}
skipProcess: {
skipProcessExtList: string
}
}
debug: boolean
PICGO_ENV: string
@@ -180,7 +183,8 @@ export const configPaths = {
buildIn: {
compress: 'buildIn.compress',
watermark: 'buildIn.watermark',
rename: 'buildIn.rename'
rename: 'buildIn.rename',
skipProcess: 'buildIn.skipProcess'
},
debug: 'debug',
PICGO_ENV: 'PICGO_ENV'
+239 -150
View File
@@ -2009,6 +2009,13 @@
resolved "https://registry.yarnpkg.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz#1f635ad5fdd5c85ed936481525570e82b5a8307a"
integrity sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==
"@emnapi/runtime@^1.4.3":
version "1.4.3"
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d"
integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==
dependencies:
tslib "^2.4.0"
"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.0"
resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
@@ -2099,6 +2106,129 @@
resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz#bf344cc75136039bc41bcf5d1ddbcb40405fca3b"
integrity sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==
"@img/sharp-darwin-arm64@0.34.2":
version "0.34.2"
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.2.tgz#65049ef7c6be7857da742cd028f97602ce209635"
integrity sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==
optionalDependencies:
"@img/sharp-libvips-darwin-arm64" "1.1.0"
"@img/sharp-darwin-x64@0.34.2":
version "0.34.2"
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.2.tgz#d37ff7c75c46d5a68a3756e3f1924ef7ca7b285e"
integrity sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==
optionalDependencies:
"@img/sharp-libvips-darwin-x64" "1.1.0"
"@img/sharp-libvips-darwin-arm64@1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz#843f7c09c7245dc0d3cfec2b3c83bb08799a704f"
integrity sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==
"@img/sharp-libvips-darwin-x64@1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz#1239c24426c06a8e833815562f78047a3bfbaaf8"
integrity sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==
"@img/sharp-libvips-linux-arm64@1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz#20d276cefd903ee483f0441ba35961679c286315"
integrity sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==
"@img/sharp-libvips-linux-arm@1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz#067c0b566eae8063738cf1b1db8f8a8573b5465c"
integrity sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==
"@img/sharp-libvips-linux-ppc64@1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz#682334595f2ca00e0a07a675ba170af165162802"
integrity sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==
"@img/sharp-libvips-linux-s390x@1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz#82fcd68444b3666384235279c145c2b28d8ee302"
integrity sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==
"@img/sharp-libvips-linux-x64@1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz#65b2b908bf47156b0724fde9095676c83a18cf5a"
integrity sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==
"@img/sharp-libvips-linuxmusl-arm64@1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz#72accf924e80b081c8db83b900b444a67c203f01"
integrity sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==
"@img/sharp-libvips-linuxmusl-x64@1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz#1fa052737e203f46bf44192acd01f9faf11522d7"
integrity sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==
"@img/sharp-linux-arm64@0.34.2":
version "0.34.2"
resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.2.tgz#c9690fac5f3137eaab3f7ad6065390d10f66f1fa"
integrity sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==
optionalDependencies:
"@img/sharp-libvips-linux-arm64" "1.1.0"
"@img/sharp-linux-arm@0.34.2":
version "0.34.2"
resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.2.tgz#771dd2ec645f85f98441359bfc118afaf38cbd8b"
integrity sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==
optionalDependencies:
"@img/sharp-libvips-linux-arm" "1.1.0"
"@img/sharp-linux-s390x@0.34.2":
version "0.34.2"
resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.2.tgz#82132d158abff57bd90b53574f2865f72f94e6c8"
integrity sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==
optionalDependencies:
"@img/sharp-libvips-linux-s390x" "1.1.0"
"@img/sharp-linux-x64@0.34.2":
version "0.34.2"
resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.2.tgz#d815fb87899d462b28b62a9252ad127f02fe0740"
integrity sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==
optionalDependencies:
"@img/sharp-libvips-linux-x64" "1.1.0"
"@img/sharp-linuxmusl-arm64@0.34.2":
version "0.34.2"
resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.2.tgz#cfac45b2abbc04628f676e123bfe3aeb300266c7"
integrity sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==
optionalDependencies:
"@img/sharp-libvips-linuxmusl-arm64" "1.1.0"
"@img/sharp-linuxmusl-x64@0.34.2":
version "0.34.2"
resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.2.tgz#b876c23ff51d0fb6d9f3b0a07e2f4d1436c203ad"
integrity sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==
optionalDependencies:
"@img/sharp-libvips-linuxmusl-x64" "1.1.0"
"@img/sharp-wasm32@0.34.2":
version "0.34.2"
resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.34.2.tgz#b1dd0bab547dccf517586eb1fa5852160bba3b82"
integrity sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==
dependencies:
"@emnapi/runtime" "^1.4.3"
"@img/sharp-win32-arm64@0.34.2":
version "0.34.2"
resolved "https://registry.yarnpkg.com/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.2.tgz#f37bee0f60c167f825a09d2b8de6849b823e8b30"
integrity sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==
"@img/sharp-win32-ia32@0.34.2":
version "0.34.2"
resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.2.tgz#8fc30b6655bc6ff8910344a2020d334aa6361672"
integrity sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==
"@img/sharp-win32-x64@0.34.2":
version "0.34.2"
resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.2.tgz#ecf19250f8fe35de684aa2b0ec6f773b3447247b"
integrity sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==
"@isaacs/cliui@^8.0.2":
version "8.0.2"
resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
@@ -3489,17 +3619,12 @@
dependencies:
"@types/express" "*"
"@types/node@*", "@types/node@20.5.1", "@types/node@^16.10.2", "@types/node@^16.11.26", "@types/node@^18.11.18":
version "16.11.18"
resolved "https://registry.npmjs.org/@types/node/-/node-16.11.18.tgz#39ed7c52943b0cee6d7299b717707bd51b1f90b9"
integrity sha512-7N8AOYWWYuw0g+K+GKCmIwfU1VMHcexYNpLPYzFZ4Uq2W6C/ptfeC7XhXgy/4pcwhz/9KoS5yijMfnYQ0u0Udw==
"@types/node@^22.0.0":
version "22.4.1"
resolved "https://registry.yarnpkg.com/@types/node/-/node-22.4.1.tgz#9b595d292c65b94c20923159e2ce947731b6fdce"
integrity sha512-1tbpb9325+gPnKK0dMm+/LMriX0vKxf6RnB0SZUqfyVkQ4fMgUSySqhxE/y8Jvs4NyF1yHzTfG9KlnkIODxPKg==
"@types/node@*", "@types/node@20.5.1", "@types/node@^16.11.26", "@types/node@^18.11.18", "@types/node@^18.19.110":
version "18.19.110"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.110.tgz#33e25fa1796ba5023cee137f24f15d332d2d45d1"
integrity sha512-WW2o4gTmREtSnqKty9nhqF/vA0GKd0V/rbC0OyjSk9Bz6bzlsXKT+i7WDdS/a0z74rfT2PO4dArVCSnapNLA5Q==
dependencies:
undici-types "~6.19.2"
undici-types "~5.26.4"
"@types/normalize-package-data@^2.4.0", "@types/normalize-package-data@^2.4.1":
version "2.4.1"
@@ -4959,10 +5084,10 @@ axios@^0.27.2:
follow-redirects "^1.14.9"
form-data "^4.0.0"
axios@^1.6.8:
version "1.6.8"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66"
integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==
axios@^1.9.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.9.0.tgz#25534e3b72b54540077d33046f77e3b8d7081901"
integrity sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==
dependencies:
follow-redirects "^1.15.6"
form-data "^4.0.0"
@@ -5064,7 +5189,7 @@ bl@^1.0.0:
readable-stream "^2.3.5"
safe-buffer "^5.1.1"
bl@^4.0.3, bl@^4.1.0:
bl@^4.1.0:
version "4.1.0"
resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
@@ -5599,11 +5724,6 @@ chokidar@^3.4.2, chokidar@^3.5.3:
optionalDependencies:
fsevents "~2.3.2"
chownr@^1.1.1:
version "1.1.4"
resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
chownr@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
@@ -6533,10 +6653,10 @@ dateformat@^2.0.0:
resolved "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062"
integrity sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==
dayjs@^1.11.11:
version "1.11.11"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.11.tgz#dfe0e9d54c5f8b68ccf8ca5f72ac603e7e5ed59e"
integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==
dayjs@^1.11.13:
version "1.11.13"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c"
integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
dayjs@^1.11.3:
version "1.11.7"
@@ -6786,10 +6906,10 @@ detect-indent@6.1.0:
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6"
integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==
detect-libc@^2.0.0, detect-libc@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
detect-libc@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8"
integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==
detect-node@^2.0.4:
version "2.1.0"
@@ -7182,7 +7302,7 @@ encoding@^0.1.13:
dependencies:
iconv-lite "^0.6.2"
end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1:
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
version "1.4.4"
resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
@@ -7703,11 +7823,6 @@ execa@^5.0.0:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
expand-template@^2.0.3:
version "2.0.3"
resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
expand-tilde@^2.0.0, expand-tilde@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
@@ -8296,6 +8411,15 @@ fs-extra@^11.2.0:
jsonfile "^6.0.1"
universalify "^2.0.0"
fs-extra@^11.3.0:
version "11.3.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d"
integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==
dependencies:
graceful-fs "^4.2.0"
jsonfile "^6.0.1"
universalify "^2.0.0"
fs-extra@^8.1.0:
version "8.1.0"
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
@@ -8506,11 +8630,6 @@ git-semver-tags@^7.0.0:
meow "^12.0.1"
semver "^7.5.2"
github-from-package@0.0.0:
version "0.0.0"
resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
@@ -10811,7 +10930,7 @@ minimist@^1.2.0, minimist@^1.2.5:
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
minimist@^1.2.3, minimist@^1.2.8:
minimist@^1.2.8:
version "1.2.8"
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
@@ -10893,11 +11012,6 @@ mitt@^3.0.1:
resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
version "0.5.3"
resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
mkdirp@^0.5.1, mkdirp@^0.5.5:
version "0.5.5"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
@@ -11046,11 +11160,6 @@ nanoid@^3.3.7:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
napi-build-utils@^1.0.1:
version "1.0.2"
resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -11094,23 +11203,11 @@ no-case@^3.0.4:
lower-case "^2.0.2"
tslib "^2.0.3"
node-abi@^3.3.0:
version "3.35.0"
resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.35.0.tgz#c7f171af995cc5286fa95612c4ca97b3910eaa79"
integrity sha512-jAlSOFR1Bls963NmFwxeQkNTzqjUF0NThm8Le7eRIRGzFUVJuMOFZDLv5Y30W/Oaw+KEebEJLAigwO9gQHoEmw==
dependencies:
semver "^7.3.5"
node-addon-api@^1.6.3:
version "1.7.2"
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d"
integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==
node-addon-api@^6.1.0:
version "6.1.0"
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76"
integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==
node-bump-version@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/node-bump-version/-/node-bump-version-1.0.2.tgz#38bf7892507f92b2bc08082c9963125875edd3bf"
@@ -11956,10 +12053,10 @@ performance-now@^2.1.0:
resolved "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
piclist@^1.9.11:
version "1.9.11"
resolved "https://registry.yarnpkg.com/piclist/-/piclist-1.9.11.tgz#5a8601886acd7208ac0d23c4dde507c167f6e0c3"
integrity sha512-qa78MLN4bc7cG0YcW4izlFodim2ZSyPlpPd8zXObiGxN9B8HHgppXcQaqUQpjNSWrSgVIBdynQZtJlexAaroFw==
piclist@^1.9.13:
version "1.9.13"
resolved "https://registry.yarnpkg.com/piclist/-/piclist-1.9.13.tgz#530ba4a0c44866e52e1070ef0a3ee9c68f8168bb"
integrity sha512-j376+RB3KQypGlfi4mxRMjw4H+A2KaNtaltQJV0551v4SquxQO9mNfXIxL7VcsSpX9kuiy24FkzjglZPJP54lA==
dependencies:
"@aws-sdk/client-s3" "3.421.0"
"@aws-sdk/lib-storage" "3.421.0"
@@ -11967,16 +12064,16 @@ piclist@^1.9.11:
"@picgo/i18n" "^1.0.0"
"@picgo/store" "^2.1.0"
"@smithy/node-http-handler" "2.1.6"
axios "^1.6.8"
axios "^1.9.0"
chalk "^2.4.1"
commander "^8.1.0"
cross-spawn "^7.0.3"
dayjs "^1.11.11"
dayjs "^1.11.13"
download-git-repo "^3.0.2"
ejs "^2.6.1"
file-type "16.2.0"
form-data "^4.0.0"
fs-extra "^11.2.0"
fs-extra "^11.3.0"
globby "^11.1.0"
heic-convert "^1.2.4"
hpagent "1.2.0"
@@ -11994,7 +12091,7 @@ piclist@^1.9.11:
qiniu "7.9.0"
resolve "^1.8.1"
rimraf "^5.0.1"
sharp "^0.32.1"
sharp "^0.34.2"
text-to-svg "^3.1.5"
tunnel "^0.0.6"
uuid "^9.0.1"
@@ -12406,24 +12503,6 @@ postcss@^8.4.38:
picocolors "^1.0.0"
source-map-js "^1.2.0"
prebuild-install@^7.1.1:
version "7.1.1"
resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45"
integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==
dependencies:
detect-libc "^2.0.0"
expand-template "^2.0.3"
github-from-package "0.0.0"
minimist "^1.2.3"
mkdirp-classic "^0.5.3"
napi-build-utils "^1.0.1"
node-abi "^3.3.0"
pump "^3.0.0"
rc "^1.2.7"
simple-get "^4.0.0"
tar-fs "^2.0.0"
tunnel-agent "^0.6.0"
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
@@ -12710,7 +12789,7 @@ rc-config-loader@^4.1.3:
json5 "^2.2.2"
require-from-string "^2.0.2"
rc@1.2.8, rc@^1.2.7, rc@^1.2.8:
rc@1.2.8, rc@^1.2.8:
version "1.2.8"
resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@@ -12806,7 +12885,7 @@ readable-stream@1.1.x:
isarray "0.0.1"
string_decoder "~0.10.x"
readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.6.0:
readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.6.0:
version "3.6.2"
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
@@ -13433,18 +13512,16 @@ semver@^7.3.7:
dependencies:
lru-cache "^6.0.0"
semver@^7.5.0:
version "7.5.0"
resolved "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0"
integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==
dependencies:
lru-cache "^6.0.0"
semver@^7.6.0:
version "7.6.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
semver@^7.7.2:
version "7.7.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58"
integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
send@0.18.0:
version "0.18.0"
resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
@@ -13523,19 +13600,36 @@ shallow-clone@^3.0.0:
dependencies:
kind-of "^6.0.2"
sharp@^0.32.1:
version "0.32.1"
resolved "https://registry.npmjs.org/sharp/-/sharp-0.32.1.tgz#41aa0d0b2048b2e0ee453d9fcb14ec1f408390fe"
integrity sha512-kQTFtj7ldpUqSe8kDxoGLZc1rnMFU0AO2pqbX6pLy3b7Oj8ivJIdoKNwxHVQG2HN6XpHPJqCSM2nsma2gOXvOg==
sharp@^0.34.2:
version "0.34.2"
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.34.2.tgz#648bd639854dbe48047b0b420213c186d036b32d"
integrity sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==
dependencies:
color "^4.2.3"
detect-libc "^2.0.1"
node-addon-api "^6.1.0"
prebuild-install "^7.1.1"
semver "^7.5.0"
simple-get "^4.0.1"
tar-fs "^2.1.1"
tunnel-agent "^0.6.0"
detect-libc "^2.0.4"
semver "^7.7.2"
optionalDependencies:
"@img/sharp-darwin-arm64" "0.34.2"
"@img/sharp-darwin-x64" "0.34.2"
"@img/sharp-libvips-darwin-arm64" "1.1.0"
"@img/sharp-libvips-darwin-x64" "1.1.0"
"@img/sharp-libvips-linux-arm" "1.1.0"
"@img/sharp-libvips-linux-arm64" "1.1.0"
"@img/sharp-libvips-linux-ppc64" "1.1.0"
"@img/sharp-libvips-linux-s390x" "1.1.0"
"@img/sharp-libvips-linux-x64" "1.1.0"
"@img/sharp-libvips-linuxmusl-arm64" "1.1.0"
"@img/sharp-libvips-linuxmusl-x64" "1.1.0"
"@img/sharp-linux-arm" "0.34.2"
"@img/sharp-linux-arm64" "0.34.2"
"@img/sharp-linux-s390x" "0.34.2"
"@img/sharp-linux-x64" "0.34.2"
"@img/sharp-linuxmusl-arm64" "0.34.2"
"@img/sharp-linuxmusl-x64" "0.34.2"
"@img/sharp-wasm32" "0.34.2"
"@img/sharp-win32-arm64" "0.34.2"
"@img/sharp-win32-ia32" "0.34.2"
"@img/sharp-win32-x64" "0.34.2"
shebang-command@^1.2.0:
version "1.2.0"
@@ -13627,20 +13721,6 @@ sigstore@^1.3.0:
"@sigstore/tuf" "^1.0.3"
make-fetch-happen "^11.0.1"
simple-concat@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
simple-get@^4.0.0, simple-get@^4.0.1:
version "4.0.1"
resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
dependencies:
decompress-response "^6.0.0"
once "^1.3.1"
simple-concat "^1.0.0"
simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
@@ -13958,7 +14038,16 @@ strict-uri-encode@^1.0.0:
resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==
"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
"string-width-cjs@npm:string-width@^4.2.0":
version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -14024,7 +14113,7 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
version "6.0.1"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -14052,6 +14141,13 @@ strip-ansi@^5.1.0:
dependencies:
ansi-regex "^4.1.0"
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
ansi-regex "^5.0.1"
strip-ansi@^7.0.1, strip-ansi@^7.1.0:
version "7.1.0"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
@@ -14229,16 +14325,6 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0:
resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
tar-fs@^2.0.0, tar-fs@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
dependencies:
chownr "^1.1.1"
mkdirp-classic "^0.5.2"
pump "^3.0.0"
tar-stream "^2.1.4"
tar-stream@^1.5.2:
version "1.6.2"
resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
@@ -14252,17 +14338,6 @@ tar-stream@^1.5.2:
to-buffer "^1.1.1"
xtend "^4.0.0"
tar-stream@^2.1.4:
version "2.2.0"
resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
dependencies:
bl "^4.0.3"
end-of-stream "^1.4.1"
fs-constants "^1.0.0"
inherits "^2.0.3"
readable-stream "^3.1.1"
tar@^6.1.11:
version "6.1.11"
resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
@@ -14566,6 +14641,11 @@ tslib@^2.1.0, tslib@^2.3.1:
resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
tslib@^2.4.0:
version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
tslib@^2.5.0:
version "2.6.1"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410"
@@ -14714,10 +14794,10 @@ unbzip2-stream@^1.0.9:
buffer "^5.2.1"
through "^2.3.8"
undici-types@~6.19.2:
version "6.19.8"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"
integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
undici-types@~5.26.4:
version "5.26.5"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
unescape@^1.0.1:
version "1.0.1"
@@ -15537,7 +15617,7 @@ wordwrap@^1.0.0:
resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version "7.0.0"
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -15554,6 +15634,15 @@ wrap-ansi@^3.0.1:
string-width "^2.1.1"
strip-ansi "^4.0.0"
wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
dependencies:
ansi-styles "^4.0.0"
string-width "^4.1.0"
strip-ansi "^6.0.0"
wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"