21 Commits
1.0.3 ... 1.0.5

Author SHA1 Message Date
d1c9fa858b Bump version to 1.0.5 2023-10-09 00:39:35 +08:00
b393000d5e feat: format update logs to markdown 2023-10-09 00:39:05 +08:00
e51721dbec chore: update dependencies 2023-10-09 00:30:15 +08:00
8a1077d4a4 feat: support YukiHookAPI 1.2.0 2023-10-09 00:26:55 +08:00
bde4dd26ec feat(docs): add open sources 2023-10-09 00:08:13 +08:00
1bfb09c29c refactor: merge to new gradle kts and new project configs 2023-10-08 23:41:40 +08:00
7d7e204037 refactor: change repository owner to HighCapable (3rd) 2023-10-08 22:56:55 +08:00
c76f1bfcae chore: add project icon 2023-10-08 22:45:55 +08:00
215802af5c feat: update android project template to api 34 2023-10-08 22:29:39 +08:00
2bfc63ee78 docs: add project migration notice 2023-10-08 21:59:05 +08:00
64d0ec55f1 refactor: change repository owner to HighCapable (2nd) 2023-10-08 21:50:10 +08:00
b95ffdacc0 refactor: change repository owner to HighCapable 2023-10-07 18:50:35 +08:00
8aefb7df64 docs: update README, README-zh-CN 2023-09-21 05:05:58 +08:00
38b2e48d1c [Change Commit Specification] Use the new commit spec from here on
child commits:
chore: update .gitignore
2023-09-21 05:00:41 +08:00
c99d886e70 Update version to 1.0.4 2023-08-18 01:19:51 +08:00
2c0fb88f7d Added when project created show save to template dialog function 2023-08-18 01:11:32 +08:00
ff71fad415 Added new i18ns 2023-08-18 01:11:32 +08:00
4299a1d04c Fix some problems in build script in project-template 2023-08-18 01:02:04 +08:00
f95c89f9e4 Update project dependencies version and files 2023-08-18 00:50:31 +08:00
2291639b52 Modify change android gradle plugin searching function in render 2023-08-17 07:17:00 +08:00
fbe50ef494 Fix YukiHookAPI releases version problem in render 2023-08-16 22:48:57 +08:00
21 changed files with 212 additions and 276 deletions

3
.idea/.gitignore generated vendored
View File

@@ -1,8 +1,9 @@
# Default ignored files
/shelf/
/workspace.xml
/misc.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
/dataSources.local.xml

BIN
.idea/icon.png generated Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

7
.idea/misc.xml generated
View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="FLOW" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="liberica-11" project-jdk-type="JavaSDK" />
</project>

View File

@@ -1,37 +1,42 @@
# YukiHookAPI Project Builder
![Blank](https://img.shields.io/badge/license-AGPL3.0-blue)
![Blank](https://img.shields.io/badge/version-v1.0.3-green)
[![Telegram](https://img.shields.io/badge/Follow-Telegram-blue.svg?logo=telegram)](https://t.me/YukiHookAPI)
<br/><br/>
<img src="https://github.com/fankes/YuKiHookAPI/blob/master/img-src/icon.png?raw=true" width = "100" height = "100"/>
<br/>
<br/>
帮助你快速创建一个使用 YukiHookAPI 打造的 Xposed 项目模板。
<br/>
[![GitHub license](https://img.shields.io/github/license/HighCapable/YukiHookAPI-ProjectBuilder?color=blue)](https://github.com/HighCapable/YukiHookAPI-ProjectBuilder/blob/master/LICENSE)
[![GitHub release](https://img.shields.io/github/v/release/HighCapable/YukiHookAPI-ProjectBuilder?display_name=release&logo=github&color=green)](https://github.com/HighCapable/YukiHookAPI-ProjectBuilder/releases)
[![Telegram](https://img.shields.io/badge/discussion-Telegram-blue.svg?logo=telegram)](https://t.me/YukiHookAPI)
[![Telegram](https://img.shields.io/badge/discussion%20dev-Telegram-blue.svg?logo=telegram)](https://t.me/HighCapable_Dev)
[English](https://github.com/fankes/YukiHookAPI-ProjectBuilder/blob/master/README.md) | 简体中文
<img src="https://github.com/HighCapable/YuKiHookAPI/blob/master/img-src/icon.png?raw=true" width = "100" height = "100" alt="LOGO"/>
帮助你快速创建一个使用 YukiHookAPI 打造的 Xposed 项目模板。
[English](https://github.com/HighCapable/YukiHookAPI-ProjectBuilder/blob/master/README.md) | 简体中文
## 项目迁移公告
这个项目最终的目的就是创建一个新的 Android Studio/IDEA 项目模版,然后再在对应的 IDE 中打开项目。
这种方式不是很优雅,而且需要在用户的电脑上安装这个软件,后期我准备将这个项目合并到 IDEA 插件中,集成到新项目模版功能里。
这样一来,使用 IDEA 安装插件即可实现直接使用此模版创建项目的功能,而且更加灵活和具有可拓展性。
在新的项目确定后,会在这里添加新项目的链接,届时我会终止维护这个项目并建议大家转移到新项目。
## 这是什么
- 这是一个使用 [YukiHookAPI](https://github.com/fankes/YukiHookAPI) 作为核心的 Xposed 模块自动构建工具
这是一个使用 [YukiHookAPI](https://github.com/HighCapable/YuKiHookAPI) 作为核心的 Xposed 模块自动构建工具
- 实现自动化搜索依赖快速搭建一个包含 Xposed 模块环境的 Android 项目模板
实现自动化搜索依赖快速搭建一个包含 Xposed 模块环境的 Android 项目模板
## 如何使用
- 本项目使用 **Electron** 开发,快速实现多平台本地化应用程序的构建和运行
本项目使用 **Electron** 开发,快速实现多平台本地化应用程序的构建和运行
你可以直接从 [Release](https://github.com/fankes/YukiHookAPI-ProjectBuilder/releases) 下载适合于你平台的应用程序。
你可以直接从 [Release](https://github.com/HighCapable/YukiHookAPI-ProjectBuilder/releases) 下载适合于你平台的应用程序。
**以下是手动部署与编译步骤**
> 以下是手动部署与编译步骤
首先你需要安装 [node.js](https://nodejs.org/zh-cn/)
IDE 工具建议使用 **IntelliJ IDEA****WebStorm**
不建议使用 **Visual Studio Code** 对代码进行格式化,可能会造成一些错误。
- 执行如下命令安装 Electron
```
@@ -74,6 +79,16 @@ npm run make
npm run package
```
## 捐赠支持
工作不易,无意外情况此项目将继续维护下去,提供更多可能,欢迎打赏。
<img src="https://github.com/fankes/fankes/blob/main/img-src/payment_code.jpg?raw=true" width = "500" alt="Payment Code"/>
## Star History
![Star History Chart](https://api.star-history.com/svg?repos=HighCapable/YukiHookAPI-ProjectBuilder&type=Date)
## 许可证
- [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.html)

View File

@@ -1,51 +1,64 @@
# YukiHookAPI Project Builder
![Blank](https://img.shields.io/badge/license-AGPL3.0-blue)
![Blank](https://img.shields.io/badge/version-v1.0.3-green)
[![Telegram](https://img.shields.io/badge/Follow-Telegram-blue.svg?logo=telegram)](https://t.me/YukiHookAPI)
<br/><br/>
<img src="https://github.com/fankes/YuKiHookAPI/blob/master/img-src/icon.png?raw=true" width = "100" height = "100"/>
<br/>
<br/>
A Xposed Project Builder by YukiHookAPI.
<br/>
[![GitHub license](https://img.shields.io/github/license/HighCapable/YukiHookAPI-ProjectBuilder?color=blue)](https://github.com/HighCapable/YukiHookAPI-ProjectBuilder/blob/master/LICENSE)
[![GitHub release](https://img.shields.io/github/v/release/HighCapable/YukiHookAPI-ProjectBuilder?display_name=release&logo=github&color=green)](https://github.com/HighCapable/YukiHookAPI-ProjectBuilder/releases)
[![Telegram](https://img.shields.io/badge/discussion-Telegram-blue.svg?logo=telegram)](https://t.me/YukiHookAPI)
[![Telegram](https://img.shields.io/badge/discussion%20dev-Telegram-blue.svg?logo=telegram)](https://t.me/HighCapable_Dev)
English | [简体中文](https://github.com/fankes/YukiHookAPI-ProjectBuilder/blob/master/README-zh-CN.md)
<img src="https://github.com/HighCapable/YuKiHookAPI/blob/master/img-src/icon.png?raw=true" width = "100" height = "100" alt="LOGO"/>
A Xposed Project Builder by YukiHookAPI.
English | [简体中文](https://github.com/HighCapable/YukiHookAPI-ProjectBuilder/blob/master/README-zh-CN.md)
## Project Migration Notice
The ultimate goal of this project is to create a new Android Studio/IDEA project template, and then open the project in the corresponding IDE.
This method is not very elegant and requires the software to be installed on the user's computer.
Later, I plan to merge this project into the IDEA plugin and integrate it into the new project template function.
In this way, you can use IDEA to install the plugin to create projects directly using this template, and it is more flexible and scalable.
After the new project is determined, a link to the new project will be added here.
At that time, I will terminate the maintenance of this project and recommend that everyone move to the new project.
## What's this
- This is an automatic building tool for Xposed modules using [YukiHookAPI](https://github.com/fankes/YukiHookAPI) as the core
This is an automatic building tool for Xposed Modules using [YukiHookAPI](https://github.com/HighCapable/YuKiHookAPI) as the core.
- Implementing automated search relies on quickly building an Android project template that includes a Xposed module environment
Implementing automated search relies on quickly building an Android project template that includes a Xposed Module environment.
## How to use
- This project is developed using **Electron** to quickly build and run multi-platform localized applications
This project is developed using **Electron** to quickly build and run multi-platform localized applications.
You can download the application for your platform directly
from [Release](https://github.com/fankes/YukiHookAPI-ProjectBuilder/releases).
from [Release](https://github.com/HighCapable/YukiHookAPI-ProjectBuilder/releases).
**The following are the manual deployment and compilation steps**
> The following are the manual deployment and compilation steps
First you need to install [node.js](https://nodejs.org/en/)
IDE tools recommend **IntelliJ IDEA** or **WebStorm**
IDE tools recommend **IntelliJ IDEA** or **WebStorm**.
Formatting code with **Visual Studio Code** is not recommended and may cause some errors.
- Execute the following command to install Electron
Execute the following command to install Electron.
```
npm install --save-dev electron
```
- Execute the following command to install yarn
Execute the following command to install yarn.
```
npm install yarn
```
- Enter the project directory and execute the following command to install dependencies
Enter the project directory and execute the following command to install dependencies.
```
npm install --save-dev @electron-forge/cli
@@ -55,13 +68,13 @@ npm install --save-dev @electron-forge/cli
npx electron-forge import
```
- Use the following command to debug
Use the following command to debug.
```
npm run start
```
- Use the following commands to compile & package
Use the following commands to compile & package.
**Linux/macOS**
@@ -75,6 +88,10 @@ npm run make
npm run package
```
## Star History
![Star History Chart](https://api.star-history.com/svg?repos=HighCapable/YukiHookAPI-ProjectBuilder&type=Date)
## License
- [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.html)

View File

@@ -1,7 +1,7 @@
{
"name": "yukihookapi-projectbuilder",
"productName": "YukiHookAPI Project Builder",
"version": "1.0.3",
"version": "1.0.5",
"description": "A Xposed Project Builder by YukiHookAPI",
"main": "src/app.js",
"scripts": {
@@ -18,7 +18,7 @@
"@electron-forge/maker-rpm": "^6.0.0-beta.64",
"@electron-forge/maker-squirrel": "^6.0.0-beta.64",
"@electron-forge/maker-zip": "^6.0.0-beta.64",
"electron": "20.3.9",
"electron": "22.3.23",
"electron-icon-builder": "^2.0.1"
},
"dependencies": {

Binary file not shown.

View File

@@ -1,7 +1,7 @@
/*
* YukiHookAPI Project Builder - A Xposed Project Builder by YukiHookAPI.
* Copyright (C) 2019-2023 HighCapable
* https://github.com/fankes/YukiHookAPI-ProjectBuilder
* https://github.com/HighCapable/YukiHookAPI-ProjectBuilder
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
@@ -80,14 +80,14 @@ const appSpace = {
label: locale.i18n.projectAddress,
accelerator: system.isMacOS ? 'command+w' : 'ctrl+w',
click: () => {
system.openBrowser('https://github.com/fankes/YukiHookAPI');
system.openBrowser('https://github.com/HighCapable/YuKiHookAPI');
}
});
const helpDocumentationChildItem = new MenuItem({
label: locale.i18n.helpDocumentation,
accelerator: system.isMacOS ? 'command+h' : 'ctrl+h',
click: () => {
system.openBrowser('https://fankes.github.io/YukiHookAPI');
system.openBrowser('https://highcapable.github.io/YukiHookAPI');
}
});
const openSourceChildItem = new MenuItem({

View File

@@ -1,7 +1,7 @@
/*
* YukiHookAPI Project Builder - A Xposed Project Builder by YukiHookAPI.
* Copyright (C) 2019-2023 HighCapable
* https://github.com/fankes/YukiHookAPI-ProjectBuilder
* https://github.com/HighCapable/YukiHookAPI-ProjectBuilder
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License

View File

@@ -1,7 +1,7 @@
<!--
YukiHookAPI Project Builder - A Xposed Project Builder by YukiHookAPI.
Copyright (C) 2019-2023 HighCapable
https://github.com/fankes/YukiHookAPI-ProjectBuilder
https://github.com/HighCapable/YukiHookAPI-ProjectBuilder
This software is non-free but opensource software: you can redistribute it
and/or modify it under the terms of the GNU Affero General Public License
@@ -31,6 +31,7 @@
<link href="./css/mdui.min.css" rel="stylesheet">
<link href="./render.css" rel="stylesheet">
<script src="./js/mdui.min.js"></script>
<script src="./js/marked.min.js"></script>
</head>
<body class="mdui-container-fluid mdui-theme-primary-orange mdui-theme-accent-orange mdui-theme-layout-auto">
<div id="root_div" style="font-size:12pt;line-height:150%;padding-top:5pt;padding-left:10pt;padding-right:10pt;display:none">
@@ -134,7 +135,7 @@
<i class="mdui-icon material-icons">photo_library</i>
<label class="mdui-textfield-label i18n">{{addResourcesHookSupport}}</label>
<select class="mdui-select" id="support_resources_hook_select">
<option class="i18n" value="0">{{notConfigureDefYes}}</option>
<option class="i18n" value="0">{{notConfigureDefNo}}</option>
<option class="i18n" value="1">{{yesOfConfigure}}</option>
<option class="i18n" value="2">{{noOfConfigure}}</option>
</select>
@@ -270,7 +271,7 @@
<span id="about_version_text"></span><br/>
<span class="i18n">{{aboutTip}}</span><br/>
<span class="i18n">{{projectAddress}}:&nbsp</span>
<span class="url-link">https://github.com/fankes/YukiHookAPI</span><br/>
<span class="url-link">https://github.com/HighCapable/YuKiHookAPI</span><br/>
<div style="margin-top: 10px"></div>
<span class="i18n" style="font-size: 10pt;opacity: 0.6;line-height: 18px">{{noticeTip}}</span>
</div>
@@ -292,8 +293,14 @@
<span class="url-link">https://github.com/NASGO/decompress-zip</span><br/>
<span>DAY.JS</span>&nbsp&nbsp<span class="license-text">MIT</span><br/>
<span class="url-link">https://github.com/iamkun/dayjs</span><br/>
<span>YukiHookAPI</span>&nbsp&nbsp<span class="license-text">Apache-2.0</span><br/>
<span class="url-link">https://github.com/HighCapable/YuKiHookAPI</span>
<span>DrawableToolbox</span>&nbsp&nbsp<span class="license-text">Apache-2.0</span><br/>
<span class="url-link">https://github.com/duanhong169/DrawableToolbox</span>
<span>SweetDependency</span>&nbsp&nbsp<span class="license-text">Apache-2.0</span><br/>
<span class="url-link">https://github.com/HighCapable/SweetDependency</span>
<span>SweetProperty</span>&nbsp&nbsp<span class="license-text">Apache-2.0</span><br/>
<span class="url-link">https://github.com/HighCapable/SweetProperty</span>
</div>
<div class="mdui-dialog-actions">
<button class="mdui-btn mdui-ripple i18n" mdui-dialog-close>{{close}}</button>

6
src/content/js/marked.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
/*
* YukiHookAPI Project Builder - A Xposed Project Builder by YukiHookAPI.
* Copyright (C) 2019-2023 HighCapable
* https://github.com/fankes/YukiHookAPI-ProjectBuilder
* https://github.com/HighCapable/YukiHookAPI-ProjectBuilder
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License

View File

@@ -3,7 +3,7 @@
/*
* YukiHookAPI Project Builder - A Xposed Project Builder by YukiHookAPI.
* Copyright (C) 2019-2023 HighCapable
* https://github.com/fankes/YukiHookAPI-ProjectBuilder
* https://github.com/HighCapable/YukiHookAPI-ProjectBuilder
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
@@ -58,7 +58,7 @@ const projectConfigs = {
appName: '',
moduleDescription: '',
appMinApi: 27,
appTargetApi: 33,
appTargetApi: 34,
xposedMinApi: 93,
moduleCompoment: 0,
targetXposedPlatform: 0,
@@ -366,10 +366,10 @@ const build = {
else if (valUtils.isEmpty(configForm.appMinApiText())) page.snack(locale.i18n.enterAppMinApiVersionTip);
else if (configForm.targetXposedPlatformSelect() === 2 && configForm.appMinApiText() < 27) page.snack(locale.i18n.lsposedSupportMinAppApiWarnTip);
else if (configForm.appMinApiText() < 21) page.snack(locale.i18n.tooLowAppMinApiVersionWarnTip);
else if (configForm.appMinApiText() > 33) page.snack(locale.i18n.tooHighAppMinApiVersionWarnTip);
else if (configForm.appMinApiText() > 34) page.snack(locale.i18n.tooHighAppMinApiVersionWarnTip);
else if (valUtils.isEmpty(configForm.appTargetApiText())) page.snack(locale.i18n.enterAppTargetApiVersionTip);
else if (configForm.appTargetApiText() < configForm.appMinApiText()) page.snack(locale.i18n.tooLowAppTargetApiVersionWarnTip);
else if (configForm.appTargetApiText() > 33) page.snack(locale.i18n.maybeInvalidAppTargetApiVersionTip);
else if (configForm.appTargetApiText() > 34) page.snack(locale.i18n.maybeInvalidAppTargetApiVersionTip);
else if (valUtils.isEmpty(configForm.xposedMinApiText())) page.snack(locale.i18n.enterXposedMinApiVersionTip);
else if (configForm.xposedMinApiText() < 82) page.snack(locale.i18n.tooLowXposedMinApiVersionWarnTip);
else if (configForm.xposedMinApiText() > 93) page.snack(locale.i18n.tooHighXposedMinApiVersionWarnTip);
@@ -407,13 +407,23 @@ const build = {
*/
complete: (msg) => {
dialogs.packagingProgress.close();
/** 显示保存为模版对话框 */
function showSaveToTemplate() {
mdui.confirm(locale.i18n.doYouWantSaveConfigTemplateTip, locale.i18n.notice, () => {
build.unlockStatus();
configTemplate.createNew();
}, () => {
build.unlockStatus();
page.reload();
}, {confirmText: locale.i18n.ok, cancelText: locale.i18n.cancel, modal: true, closeOnEsc: false});
}
mdui.confirm(msg, locale.i18n.buildComplete, () => {
ipcRenderer.send('open-complete-project');
build.unlockStatus();
page.reload();
showSaveToTemplate();
}, () => {
build.unlockStatus();
page.reload();
showSaveToTemplate();
}, {confirmText: locale.i18n.openProject, cancelText: locale.i18n.done, modal: true, closeOnEsc: false});
},
/**
@@ -448,10 +458,10 @@ const projectDepends = {
/** 依赖 API 获取地址 */
urls: {
gradlePaper: 'https://services.gradle.org/distributions',
androidGradlePlugin: 'https://developer.android.google.cn/studio/releases/gradle-plugin.html',
androidGradlePlugin: 'https://dl.google.com/dl/android/maven2/com/android/application/com.android.application.gradle.plugin/maven-metadata.xml',
kotlin: 'https://api.github.com/repos/JetBrains/kotlin/releases',
kotlinKsp: 'https://api.github.com/repos/google/ksp/releases',
yukiHookApi: 'https://s01.oss.sonatype.org/content/repositories/releases/com/highcapable/yukihookapi/api'
yukiHookApi: 'https://api.github.com/repos/HighCapable/YuKiHookAPI/releases'
},
/** 搜索项目依赖 */
search() {
@@ -515,21 +525,13 @@ const projectDepends = {
findAgpVersion: () => {
httpClient.requestDepends('Android Gradle Plugin', projectDepends.urls.androidGradlePlugin, (body) => {
dependenciesConfigs.androidGradlePluginVersions = [];
$(body).find('h2').each((_, element) => {
if (valUtils.startsWithNumber(element.innerText))
if (element.innerText.indexOf('') > 0)
dependenciesConfigs.androidGradlePluginVersions.push(element.innerText.split('')[0].trim());
else dependenciesConfigs.androidGradlePluginVersions.push(element.innerText.split('(')[0].trim());
});
$(body).find('.android-updates-box b').each((_, element) => {
if (valUtils.startsWithNumber(element.innerText))
if (element.innerText.indexOf('') > 0)
dependenciesConfigs.androidGradlePluginVersions.push(element.innerText.split('')[0].trim());
else dependenciesConfigs.androidGradlePluginVersions.push(element.innerText.split('(')[0].trim());
});
dependenciesConfigs.androidGradlePluginVersions.sort((a, b) => {
return b.localeCompare(a);
});
const versionsNode = body.getElementsByTagName('version');
let versions = [];
for (let i = versionsNode.length - 1; i >= 0; i--) {
const version = versionsNode[i].innerHTML;
if (version.indexOf('-alpha') < 0 && version.indexOf('-beta') < 0 && version.indexOf('-rc') < 0) versions.push(version);
}
dependenciesConfigs.androidGradlePluginVersions = versions;
if (dependenciesConfigs.androidGradlePluginVersions.length > 0)
projectDepends.findKotlinVersion();
else projectDepends.failure('Android Gradle Plugin', false);
@@ -571,16 +573,8 @@ const projectDepends = {
findYukiHookApiVersion: () => {
httpClient.requestDepends('YukiHookAPI', projectDepends.urls.yukiHookApi, (body) => {
dependenciesConfigs.yukiHookApiVersions = [];
$(body).find('td').each((_, element) => {
if (element.innerText.endsWith('/') && element.innerText.indexOf('fix') < 0)
dependenciesConfigs.yukiHookApiVersions.push(element.innerText.replace('/', '').trim());
});
if (dependenciesConfigs.yukiHookApiVersions.length > 0) {
dependenciesConfigs.yukiHookApiVersions.sort((a, b) => {
return b.localeCompare(a);
});
const latestVersion = dependenciesConfigs.yukiHookApiVersions[0];
dependenciesConfigs.yukiHookApiVersions = [];
const latestVersion = body.length > 0 ? body[0]['tag_name'] : '';
if (latestVersion !== '') {
dependenciesConfigs.yukiHookApiVersions.push(latestVersion);
projectDepends.loaded();
} else projectDepends.failure('YukiHookAPI', false);
@@ -724,11 +718,12 @@ const page = {
const repoName = 'YukiHookAPI-ProjectBuilder';
httpClient.requestGet('https://api.github.com/repos/' + repoAuthor + '/' + repoName + '/releases/latest', (body) => {
const newVersion = body['name'] ?? '';
const updateLogs = body['body']?.replace(/\n/g, "<br/>") ?? '';
// noinspection JSUnresolvedReference
const updateLogs = marked.parse(body['body']?.replace(/\n/g, "<br/>") ?? '');
const updateUrl = body['html_url'] ?? '';
if (newVersion !== page.appVersion)
mdui.confirm(locale.i18n.version + ':&nbsp' + newVersion + '<br/><br/>' +
'<strong>' + locale.i18n.updateLogs + '</strong><br/><br/>' + updateLogs, locale.i18n.newVersionFound, () => {
'<strong>' + locale.i18n.updateLogs + '</strong>' + updateLogs, locale.i18n.newVersionFound, () => {
page.openBrowser(updateUrl);
}, () => null, {
confirmText: locale.i18n.updateNow,

View File

@@ -1,7 +1,7 @@
/*
* YukiHookAPI Project Builder - A Xposed Project Builder by YukiHookAPI.
* Copyright (C) 2019-2023 HighCapable
* https://github.com/fankes/YukiHookAPI-ProjectBuilder
* https://github.com/HighCapable/YukiHookAPI-ProjectBuilder
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License

View File

@@ -1,7 +1,7 @@
/*
* YukiHookAPI Project Builder - A Xposed Project Builder by YukiHookAPI.
* Copyright (C) 2019-2023 HighCapable
* https://github.com/fankes/YukiHookAPI-ProjectBuilder
* https://github.com/HighCapable/YukiHookAPI-ProjectBuilder
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License

View File

@@ -1,7 +1,7 @@
/*
* YukiHookAPI Project Builder - A Xposed Project Builder by YukiHookAPI.
* Copyright (C) 2019-2023 HighCapable
* https://github.com/fankes/YukiHookAPI-ProjectBuilder
* https://github.com/HighCapable/YukiHookAPI-ProjectBuilder
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
@@ -178,6 +178,7 @@ const locale = {
"later": "Later",
"notConfigure": "Not Configured",
"notConfigureDefYes": "Not Configured (Default Yes/Enabled)",
"notConfigureDefNo": "Not Configured (Default No/Disabled)",
"yesOfConfigure": "Yes/Enabled",
"noOfConfigure": "No/Disabled",
"version": "Version",
@@ -185,6 +186,7 @@ const locale = {
"areYouSureRestoreChangeTip": "Are you sure you want to reset all current configs?",
"areYouSureClearAllTemplateTip": "Are you sure you want to clear all config template?",
"doYouWantLoadConfigTemplateTip": "Do you want to load \"{%1}\"? The current config will be overwritten by the template.",
"doYouWantSaveConfigTemplateTip": "Do you need to save the current config as a template for next use? Clicking \"Cancel\" will clear the current config and start creating a new project.",
"ruleCheckFailTip": "Rules retrieval failed, please try again.",
"networkErrorTip": "A network error occurred, please try again.",
"aboutTip": "Helps you quickly create an Xposed project template using YukiHookAPI.",
@@ -311,6 +313,7 @@ const locale = {
"later": "稍后",
"notConfigure": "未配置",
"notConfigureDefYes": "未配置 (默认 是/Yes)",
"notConfigureDefNo": "未配置 (默认 否/No)",
"yesOfConfigure": "是/Yes",
"noOfConfigure": "否/No",
"version": "版本",
@@ -318,6 +321,7 @@ const locale = {
"areYouSureRestoreChangeTip": "还原当前所做的全部更改吗?",
"areYouSureClearAllTemplateTip": "清空全部已保存的配置模板吗?",
"doYouWantLoadConfigTemplateTip": "要加载 \"{%1}\" 吗?当前配置会被模板覆盖。",
"doYouWantSaveConfigTemplateTip": "你需要保存当前配置为模版以供下次使用吗?点击“取消”将清空当前配置并开始创建新项目。",
"ruleCheckFailTip": "规则检索失败,请再试一次。",
"networkErrorTip": "网络发生错误,请再试一次。",
"aboutTip": "帮助你快速创建一个使用 YukiHookAPI 打造的 Xposed 项目模板。",
@@ -444,6 +448,7 @@ const locale = {
"later": "後で",
"notConfigure": "構成されていません",
"notConfigureDefYes": "構成されていません (デフォルトは はい/Yes)",
"notConfigureDefNo": "構成されていません (デフォルトは いいえ/No)",
"yesOfConfigure": "はい/Yes",
"noOfConfigure": "いいえ/No",
"version": "バージョン",
@@ -451,6 +456,7 @@ const locale = {
"areYouSureRestoreChangeTip": "現在のすべての変更を元に戻しますか",
"areYouSureClearAllTemplateTip": "保存されているすべての構成テンプレートをクリアしますか",
"doYouWantLoadConfigTemplateTip": "「{%1}」をロードしますか?現在の構成はテンプレートによって上書きされます。",
"doYouWantSaveConfigTemplateTip": "次回使用するために現在の構成をテンプレートとして保存する必要がありますか? 「キャンセル」をクリックすると、現在の構成がクリアされ、新しいプロジェクトの作成が開始されます。",
"ruleCheckFailTip": "ルールの取得に失敗しました。もう一度やり直してください。",
"networkErrorTip": "ネットワークエラーが発生しました。もう一度やり直してください。",
"aboutTip": "YukiHookAPIを使用してXposedプロジェクトテンプレートをすばやく作成するのに役立ちます。",

View File

@@ -1,7 +1,7 @@
/*
* YukiHookAPI Project Builder - A Xposed Project Builder by YukiHookAPI.
* Copyright (C) 2019-2023 HighCapable
* https://github.com/fankes/YukiHookAPI-ProjectBuilder
* https://github.com/HighCapable/YukiHookAPI-ProjectBuilder
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License

View File

@@ -1,7 +1,7 @@
/*
* YukiHookAPI Project Builder - A Xposed Project Builder by YukiHookAPI.
* Copyright (C) 2019-2023 HighCapable
* https://github.com/fankes/YukiHookAPI-ProjectBuilder
* https://github.com/HighCapable/YukiHookAPI-ProjectBuilder
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License

View File

@@ -1,7 +1,7 @@
/*
* YukiHookAPI Project Builder - A Xposed Project Builder by YukiHookAPI.
* Copyright (C) 2019-2023 HighCapable
* https://github.com/fankes/YukiHookAPI-ProjectBuilder
* https://github.com/HighCapable/YukiHookAPI-ProjectBuilder
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License

View File

@@ -1,7 +1,7 @@
/*
* YukiHookAPI Project Builder - A Xposed Project Builder by YukiHookAPI.
* Copyright (C) 2019-2023 HighCapable
* https://github.com/fankes/YukiHookAPI-ProjectBuilder
* https://github.com/HighCapable/YukiHookAPI-ProjectBuilder
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
@@ -105,91 +105,6 @@ const transaction = {
});
return finalCode;
},
/**
* 注入依赖 - 适用于 'build.gradle' 文件
* @param origCode 原始代码
* @param dependencies 依赖内容数组
* @return string
*/
implement: (origCode, ...dependencies) => {
if (dependencies.length <= 0) return;
let finalCode = origCode;
dependencies.forEach((value) => {
finalCode = finalCode.concat(value.type, codeFiles.space(1), '\'',
value.groupId, ':', value.artifactId, ':', value.version, '\'\n', codeFiles.space(4));
});
return finalCode;
},
'build.gradle': {
dependencies: {
androidXposed: {
type: 'compileOnly',
groupId: 'de.robv.android.xposed',
artifactId: 'api',
version: '82'
},
yukiHookApiApi: {
type: 'implementation',
groupId: 'com.highcapable.yukihookapi',
artifactId: 'api',
version: configs.projectDependencies.yukiHookApiVersion
},
yukiHookApiKsp: {
type: 'ksp',
groupId: 'com.highcapable.yukihookapi',
artifactId: 'ksp-xposed',
version: configs.projectDependencies.yukiHookApiVersion
},
drawabletoolbox: {
type: 'implementation',
groupId: 'com.github.duanhong169',
artifactId: 'drawabletoolbox',
version: '1.0.7'
},
androidxCoreKtx: {
type: 'implementation',
groupId: 'androidx.core',
artifactId: 'core-ktx',
version: '1.10.0'
},
appcompat: {
type: 'implementation',
groupId: 'androidx.appcompat',
artifactId: 'appcompat',
version: '1.6.1'
},
material: {
type: 'implementation',
groupId: 'com.google.android.material',
artifactId: 'material',
version: '1.8.0'
},
constraintlayout: {
type: 'implementation',
groupId: 'androidx.constraintlayout',
artifactId: 'constraintlayout',
version: '2.1.4'
},
junit: {
type: 'testImplementation',
groupId: 'junit',
artifactId: 'junit',
version: '4.13.2'
},
androidxTestExt: {
type: 'androidTestImplementation',
groupId: 'androidx.test.ext',
artifactId: 'junit',
version: '1.1.5'
},
androidxTestEspresso: {
type: 'androidTestImplementation',
groupId: 'androidx.test.espresso',
artifactId: 'espresso-core',
version: '3.5.1'
}
}
},
'AndroidManifest.xml': {
newXSharePrefs: (isEnabled) => ('<meta-data\n' +
codeFiles.space(12) + 'android:name="xposedsharedprefs"\n' +
@@ -207,7 +122,8 @@ const transaction = {
'HookEntry.kt': {
annotations: {
entryClassName: (name) => 'entryClassName = "' + name + '"',
supportResourcesHook: (isEnabled) => 'isUsingResourcesHook = ' + (isEnabled ? 'true' : 'false')
supportResourcesHook: (isEnabled) => 'isUsingResourcesHook = ' + (isEnabled ? 'true' : 'false'),
supportXposedModuleStatus: (isEnabled) => 'isUsingXposedModuleStatus = ' + (isEnabled ? 'true' : 'false')
},
configs: {
debugLog: {
@@ -216,7 +132,6 @@ const transaction = {
},
enableDebug: (isEnabled) => 'isDebug = ' + (isEnabled ? 'true' : 'false'),
enableResourcesCache: (isEnabled) => 'isEnableModuleAppResourcesCache = ' + (isEnabled ? 'true' : 'false'),
enableModuleStatus: (isEnabled) => 'isEnableHookModuleStatus = ' + (isEnabled ? 'true' : 'false'),
enableYChannel: (isEnabled) => 'isEnableDataChannel = ' + (isEnabled ? 'true' : 'false')
}
},
@@ -227,6 +142,16 @@ const transaction = {
}
};
/**
* Settings 插件命名空间
*/
const settingsPlugins = {
// TODO SweetDependency 和 SweetProperty 暂时不支持自动获取版本
// 后期合并到 IDEA 插件后再做这里的更新
sweetDependencyVersion: '1.0.2',
sweetPropertyVersion: '1.0.3'
}
/**
* 更新创建进度显示
* @param progress 当前进度
@@ -326,6 +251,11 @@ const transaction = {
if (configs.yukiHookApiConfig.supportResourcesHook !== 0)
hookEntryAnnotationCode = hookEntryAnnotationCode.concat(
codeFiles['HookEntry.kt'].annotations.supportResourcesHook(configs.yukiHookApiConfig.supportResourcesHook === 1));
if (configs.yukiHookApiConfig.supportResourcesHook !== 0 && configs.yukiHookApiConfig.enableModuleStatus !== 0)
hookEntryAnnotationCode = hookEntryAnnotationCode.concat(', ');
if (configs.yukiHookApiConfig.enableModuleStatus !== 0)
hookEntryAnnotationCode = hookEntryAnnotationCode.concat(
codeFiles['HookEntry.kt'].annotations.supportXposedModuleStatus(configs.yukiHookApiConfig.enableModuleStatus === 1));
if (hookEntryAnnotationCode.trim() !== '')
hookEntryAnnotationCode = '(' + (hookEntryAnnotationCode.trim().endsWith(',') ?
hookEntryAnnotationCode.trim().substring(0, hookEntryAnnotationCode.trim().lastIndexOf(',')) :
@@ -351,73 +281,24 @@ const transaction = {
if (configs.yukiHookApiConfig.enableResourcesCache !== 0)
hookEntryConfigsCode = codeFiles.append(hookEntryConfigsCode,
codeFiles['HookEntry.kt'].configs.enableResourcesCache(configs.yukiHookApiConfig.enableResourcesCache === 1));
if (configs.yukiHookApiConfig.enableModuleStatus !== 0)
hookEntryConfigsCode = codeFiles.append(hookEntryConfigsCode,
codeFiles['HookEntry.kt'].configs.enableModuleStatus(configs.yukiHookApiConfig.enableModuleStatus === 1));
if (configs.yukiHookApiConfig.enableYChannel !== 0)
hookEntryConfigsCode = codeFiles.append(hookEntryConfigsCode,
codeFiles['HookEntry.kt'].configs.enableYChannel(configs.yukiHookApiConfig.enableYChannel === 1));
hookEntryConfigsCode = hookEntryConfigsCode.trim();
if (hookEntryConfigsCode === '') hookEntryConfigsCode = '// Your code here.';
let gradleDependenciesCode = '';
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.androidXposed);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.yukiHookApiApi);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.yukiHookApiKsp);
switch (configs.basicConfig.moduleCompoment) {
case 0:
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.drawabletoolbox);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.androidxCoreKtx);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.appcompat);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.material);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.constraintlayout);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.junit);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.androidxTestExt);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.androidxTestEspresso);
break;
case 1:
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.androidxCoreKtx);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.appcompat);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.material);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.constraintlayout);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.junit);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.androidxTestExt);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.androidxTestEspresso);
break;
case 2:
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.junit);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.androidxTestExt);
gradleDependenciesCode = codeFiles.implement(gradleDependenciesCode,
codeFiles['build.gradle'].dependencies.androidxTestEspresso);
break;
}
gradleDependenciesCode = gradleDependenciesCode.trim();
fileSystem.replaces(targetPath, ['gradle', 'properties', 'kt', 'xml'], [
fileSystem.replaces(targetPath, ['gradle.kts', 'properties', 'kt', 'xml', 'yaml'], [
{
placeholder: '{GRADLE_PAPER}',
value: configs.projectDependencies.gradlePaper
}, {
placeholder: '{GRADLE_PROPERTIES_DATE}',
value: dateTime.cstTime()
}, {
placeholder: '{SWEETDEPENDENCY_VERSION}',
value: settingsPlugins.sweetDependencyVersion
}, {
placeholder: '{SWEETPROPERTY_VERSION}',
value: settingsPlugins.sweetPropertyVersion
}, {
placeholder: '{AGP_VERSION}',
value: configs.projectDependencies.androidGradlePluginVersion
@@ -457,9 +338,6 @@ const transaction = {
}, {
placeholder: '{SCOPE_ITEMS}',
value: moduleScopesCode
}, {
placeholder: '{GRADLE_DEPENDENCIES}',
value: gradleDependenciesCode
}, {
placeholder: '{YUKIHOOKAPI_MODULE_ACTIVE_STATUS}',
value: moduleActiveStatusCode

View File

@@ -259,7 +259,7 @@
"@electron-forge/template-base" "6.0.0-beta.64"
fs-extra "^10.0.0"
"@electron/get@^1.14.1", "@electron/get@^1.6.0", "@electron/get@^1.9.0":
"@electron/get@^1.6.0", "@electron/get@^1.9.0":
version "1.14.1"
resolved "https://repo.huaweicloud.com/repository/npm/@electron/get/-/get-1.14.1.tgz"
integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==
@@ -275,6 +275,21 @@
global-agent "^3.0.0"
global-tunnel-ng "^2.7.1"
"@electron/get@^2.0.0":
version "2.0.3"
resolved "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz"
integrity sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==
dependencies:
debug "^4.1.1"
env-paths "^2.2.0"
fs-extra "^8.1.0"
got "^11.8.5"
progress "^2.0.3"
semver "^6.2.0"
sumchecker "^3.0.1"
optionalDependencies:
global-agent "^3.0.0"
"@electron/universal@^1.2.1":
version "1.3.0"
resolved "https://repo.huaweicloud.com/repository/npm/@electron/universal/-/universal-1.3.0.tgz"
@@ -693,11 +708,6 @@
resolved "https://repo.huaweicloud.com/repository/npm/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz"
integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==
"@types/json-buffer@~3.0.0":
version "3.0.0"
resolved "https://repo.huaweicloud.com/repository/npm/@types/json-buffer/-/json-buffer-3.0.0.tgz"
integrity sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==
"@types/keyv@*":
version "3.1.4"
resolved "https://repo.huaweicloud.com/repository/npm/@types/keyv/-/keyv-3.1.4.tgz"
@@ -1081,9 +1091,9 @@ cacheable-request@^6.0.0:
responselike "^1.0.2"
cacheable-request@^7.0.2:
version "7.0.2"
resolved "https://repo.huaweicloud.com/repository/npm/cacheable-request/-/cacheable-request-7.0.2.tgz"
integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==
version "7.0.4"
resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz"
integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==
dependencies:
clone-response "^1.0.2"
get-stream "^5.1.0"
@@ -1286,14 +1296,6 @@ compare-version@^0.1.2:
resolved "https://repo.huaweicloud.com/repository/npm/compare-version/-/compare-version-0.1.2.tgz"
integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==
compress-brotli@^1.3.8:
version "1.3.8"
resolved "https://repo.huaweicloud.com/repository/npm/compress-brotli/-/compress-brotli-1.3.8.tgz"
integrity sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==
dependencies:
"@types/json-buffer" "~3.0.0"
json-buffer "~3.0.1"
concat-map@0.0.1:
version "0.0.1"
resolved "https://repo.huaweicloud.com/repository/npm/concat-map/-/concat-map-0.0.1.tgz"
@@ -1714,12 +1716,12 @@ electron-winstaller@^5.0.0:
lodash.template "^4.2.2"
temp "^0.9.0"
electron@20.3.9:
version "20.3.9"
resolved "https://repo.huaweicloud.com/repository/npm/electron/-/electron-20.3.9.tgz"
integrity sha512-CPThZ0Q0otIsFgwh2K6fMfrMX/3jsWt+fdjl1tiZh08MD8f74Az+dFB4NKpDHzqr4RFuRqh/W5CdGyGtvXXtFQ==
electron@22.3.23:
version "22.3.23"
resolved "https://registry.npmjs.org/electron/-/electron-22.3.23.tgz"
integrity sha512-2p6NsLFPfM2RmgATchjKZKBUP3O6NxQMWOrHt9W5U2GRtfI8qWlicUR1wnh5D1VLt4c1YsjvpF6dct+1JNRubA==
dependencies:
"@electron/get" "^1.14.1"
"@electron/get" "^2.0.0"
"@types/node" "^16.11.26"
extract-zip "^2.0.1"
@@ -2025,7 +2027,7 @@ fs-extra@^7.0.0, fs-extra@^7.0.1:
fs-extra@^8.1.0:
version "8.1.0"
resolved "https://repo.huaweicloud.com/repository/npm/fs-extra/-/fs-extra-8.1.0.tgz"
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz"
integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
dependencies:
graceful-fs "^4.2.0"
@@ -2265,6 +2267,23 @@ got@^11.7.0:
p-cancelable "^2.0.0"
responselike "^2.0.0"
got@^11.8.5:
version "11.8.6"
resolved "https://registry.npmjs.org/got/-/got-11.8.6.tgz"
integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==
dependencies:
"@sindresorhus/is" "^4.0.0"
"@szmarczak/http-timer" "^4.0.5"
"@types/cacheable-request" "^6.0.1"
"@types/responselike" "^1.0.0"
cacheable-lookup "^5.0.3"
cacheable-request "^7.0.2"
decompress-response "^6.0.0"
http2-wrapper "^1.0.0-beta.5.2"
lowercase-keys "^2.0.0"
p-cancelable "^2.0.0"
responselike "^2.0.0"
got@^9.6.0:
version "9.6.0"
resolved "https://repo.huaweicloud.com/repository/npm/got/-/got-9.6.0.tgz"
@@ -2673,7 +2692,7 @@ json-buffer@3.0.0:
resolved "https://repo.huaweicloud.com/repository/npm/json-buffer/-/json-buffer-3.0.0.tgz"
integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==
json-buffer@3.0.1, json-buffer@~3.0.1:
json-buffer@3.0.1:
version "3.0.1"
resolved "https://repo.huaweicloud.com/repository/npm/json-buffer/-/json-buffer-3.0.1.tgz"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
@@ -2754,11 +2773,10 @@ keyv@^3.0.0:
json-buffer "3.0.0"
keyv@^4.0.0:
version "4.3.2"
resolved "https://repo.huaweicloud.com/repository/npm/keyv/-/keyv-4.3.2.tgz"
integrity sha512-kn8WmodVBe12lmHpA6W8OY7SNh6wVR+Z+wZESF4iF5FCazaVXGWOtnbnvX0tMQ1bO+/TmOD9LziuYMvrIIs0xw==
version "4.5.4"
resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
dependencies:
compress-brotli "^1.3.8"
json-buffer "3.0.1"
klaw@^1.0.0: