mirror of
https://github.com/Kuingsmile/PicList.git
synced 2026-08-31 21:21:58 +08:00
Merge branch 'dev' into release
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 }}
|
||||
@@ -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'
|
||||
|
||||
@@ -26,3 +26,4 @@ scripts/generateYmlFile.js
|
||||
/dist_electron
|
||||
/docs
|
||||
cloc.exe
|
||||
desktop.ini
|
||||
Vendored
+15
@@ -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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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/
|
||||
```
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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://開頭
|
||||
|
||||
@@ -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
@@ -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,
|
||||
|
||||
@@ -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
@@ -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(`\n❌ Error 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
@@ -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 (
|
||||
|
||||
@@ -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}`)
|
||||
})
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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()
|
||||
|
||||
Vendored
+13
@@ -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
|
||||
|
||||
Vendored
+34
-25
@@ -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 {
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user