From 9e099a69415ee2f14d69f3626f99794e9ab03b78 Mon Sep 17 00:00:00 2001 From: liduo Date: Thu, 8 May 2025 21:15:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B5=84=E6=BA=90=E7=AE=A1?= =?UTF-8?q?=E7=90=86Native=20RawFile=E7=A4=BA=E4=BE=8B=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liduo --- .../Native/NdkRawfile/README_zh.md | 22 +- .../Native/NdkRawfile/build-profile.json5 | 4 +- .../NdkRawfile/entry/build-profile.json5 | 6 +- .../Native/NdkRawfile/entry/oh-package.json5 | 9 +- .../entry/src/main/cpp/rawfile_demo.cpp | 198 ++++++++++++++++-- .../src/main/cpp/types/libentry/index.d.ts | 18 +- .../main/cpp/types/libentry/oh-package.json5 | 2 +- .../entry/src/main/ets/pages/Index.ets | 120 +++++++++-- .../src/main/resources/rawfile/rawfile1.txt | 2 +- .../resources/rawfile/subrawfile/rawfile2.txt | 2 +- .../src/ohosTest/ets/test/Index.test.ets | 96 ++++++--- .../NdkRawfile/hvigor/hvigor-config.json5 | 3 +- .../NdkRawfile/hvigor/hvigor-wrapper.js | 2 - code/BasicFeature/Native/NdkRawfile/hvigorw | 61 ------ .../Native/NdkRawfile/hvigorw.bat | 79 ------- .../Native/NdkRawfile/oh-package.json5 | 20 +- .../NdkRawfile/screenshots/device/main.png | Bin 66741 -> 65640 bytes 17 files changed, 403 insertions(+), 241 deletions(-) delete mode 100644 code/BasicFeature/Native/NdkRawfile/hvigor/hvigor-wrapper.js delete mode 100644 code/BasicFeature/Native/NdkRawfile/hvigorw delete mode 100644 code/BasicFeature/Native/NdkRawfile/hvigorw.bat diff --git a/code/BasicFeature/Native/NdkRawfile/README_zh.md b/code/BasicFeature/Native/NdkRawfile/README_zh.md index 99750d700e..b89a5b5c2d 100644 --- a/code/BasicFeature/Native/NdkRawfile/README_zh.md +++ b/code/BasicFeature/Native/NdkRawfile/README_zh.md @@ -44,11 +44,22 @@ entry/src/main/ ### 具体实现 -通过在IDE中创建Native c++ 工程,在c++代码中定义对外接口为getFileList、getRawFileContent、getRawFileDescriptor,映射C++接口分别为GetFileList、GetRawFileContent、GetRawFileDescriptor。 +通过在IDE中创建Native c++ 工程,在cpp目录下的index.d.ts中定义对外js接口,同时在c++中实现接口,映射关系如下: + +| index.d.ts中的接口名 | rawfile_demo.cpp对应的实现函数 | +|:---------------------------------|:----------------------------------------------------------------------------------------------------| +| getFileList | GetFileList | +| getRawFileContent | GetRawFileContent | +| getRawFileContent64 | GetRawFileContent64 | +| getRawFileDescriptor | GetRawFileDescriptor | +| getRawFileDescriptor64 | GetRawFileDescriptor64 | +| releaseRawFileDescriptor | ReleaseRawFileDescriptor | +| releaseRawFileDescriptor64 | ReleaseRawFileDescriptor64 | + 通过获取Js的资源对象,并转为Native的资源对象,即可调用资源的Native接口,获取rawfile列表、rawfile文件内容以及rawfile描述符{fd, offset, length}。 在Js侧导入"libentry.so",通过getContext().resourceManager获取资源管理对象。调用src/main/cpp/types/libentry/index.d.ts中声明的接口,传入js的资源对象和相关参数获取对于rawfile相关资源信息。 源码参考:[rawfile_demo.cpp](entry/src/main/cpp/rawfile_demo.cpp) -。 涉及到的相关接口: +。 涉及到的native rawfile相关接口: | 接口名 | 描述 | |:-------------------------------|:-------------------------------------------------------------------------------------------------------| @@ -59,9 +70,12 @@ entry/src/main/ | 打开指定rawfile文件。 | RawFile *OH_ResourceManager_OpenRawFile(const NativeResourceManager *mgr, const char *fileName) | | 获取rawfile文件大小。 | long OH_ResourceManager_GetRawFileSize(RawFile *rawFile) | | 读取rawfile文件内容。 | int OH_ResourceManager_ReadRawFile(const RawFile *rawFile, void *buf, size_t length) | +| 指定rawfile文件的偏移量。 | int OH_ResourceManager_SeekRawFile(const RawFile *rawFile, long offset, int whence) | +| 获取rawfile文件的偏移量。 | long OH_ResourceManager_GetRawFileOffset(const RawFile *rawFile) | | 释放rawfile文件相关资源。 | void OH_ResourceManager_CloseRawFile(RawFile *rawFile) | | 释放rawfile目录相关资源。 | void OH_ResourceManager_CloseRawDir(RawDir *rawDir) | | 获取rawfile的fd。 | bool OH_ResourceManager_GetRawFileDescriptor(const RawFile *rawFile, RawFileDescriptor &descriptor) | +| 关闭rawfile的fd。 | bool OH_ResourceManager_ReleaseRawFileDescriptor(const RawFileDescriptor &descriptor) | | 释放native resource manager相关资源。 | void OH_ResourceManager_ReleaseNativeResourceManager(NativeResourceManager *resMgr) | @@ -78,9 +92,9 @@ entry/src/main/ 1. 本示例仅支持标准系统上运行,支持设备:RK3568。 -2. 本示例为Stage模型,支持API10版本SDK,SDK版本号(API Version 10 Release),镜像版本号(4.0 Release) +2. 本示例为Stage模型,支持API Version 15版本SDK,版本号:5.0.3.135,最低兼容API Version 11,镜像版本号:OpenHarmony-5.0.3.137 Release -3. 本示例需要使用DevEco Studio 版本号(4.0 Release)及以上版本才可编译运行。 +3. 本示例需要使用DevEco Studio NEXT Developer Beta1(5.0.3.404)及以上版本才可编译运行。 ### 下载 diff --git a/code/BasicFeature/Native/NdkRawfile/build-profile.json5 b/code/BasicFeature/Native/NdkRawfile/build-profile.json5 index e521599d36..75bc91290c 100644 --- a/code/BasicFeature/Native/NdkRawfile/build-profile.json5 +++ b/code/BasicFeature/Native/NdkRawfile/build-profile.json5 @@ -20,8 +20,8 @@ { "name": "default", "signingConfig": "default", - "compileSdkVersion": 10, - "compatibleSdkVersion": 10, + "compileSdkVersion": 15, + "compatibleSdkVersion": 11, "runtimeOS": "OpenHarmony" } ] diff --git a/code/BasicFeature/Native/NdkRawfile/entry/build-profile.json5 b/code/BasicFeature/Native/NdkRawfile/entry/build-profile.json5 index 668dc47b06..7744ea3a05 100644 --- a/code/BasicFeature/Native/NdkRawfile/entry/build-profile.json5 +++ b/code/BasicFeature/Native/NdkRawfile/entry/build-profile.json5 @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - + { "apiType": 'stageMode', "buildOption": { @@ -20,6 +20,10 @@ "path": "./src/main/cpp/CMakeLists.txt", "arguments": "", "cppFlags": "", + "abiFilters": [ + "arm64-v8a", + "armeabi-v7a" + ] } }, "targets": [ diff --git a/code/BasicFeature/Native/NdkRawfile/entry/oh-package.json5 b/code/BasicFeature/Native/NdkRawfile/entry/oh-package.json5 index d4c93ab309..1636ca03c1 100644 --- a/code/BasicFeature/Native/NdkRawfile/entry/oh-package.json5 +++ b/code/BasicFeature/Native/NdkRawfile/entry/oh-package.json5 @@ -12,16 +12,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - + { "license": "", - "devDependencies": { - "@types/libentry.so": "file:./src/main/cpp/types/libentry" - }, "author": "", "name": "entry", "description": "Please describe the basic information.", "main": "", "version": "1.0.0", - "dependencies": {} + "dependencies": { + "libentry.so": "file:./src/main/cpp/types/libentry" + } } diff --git a/code/BasicFeature/Native/NdkRawfile/entry/src/main/cpp/rawfile_demo.cpp b/code/BasicFeature/Native/NdkRawfile/entry/src/main/cpp/rawfile_demo.cpp index 872f2bf993..f936b50584 100644 --- a/code/BasicFeature/Native/NdkRawfile/entry/src/main/cpp/rawfile_demo.cpp +++ b/code/BasicFeature/Native/NdkRawfile/entry/src/main/cpp/rawfile_demo.cpp @@ -13,8 +13,10 @@ * limitations under the License. */ +#include #include #include +#include #include #include "napi/native_api.h" #include "rawfile/raw_file_manager.h" @@ -29,11 +31,8 @@ static napi_value GetFileList(napi_env env, napi_callback_info info) OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "GetFileList Begin"); size_t argc = 2; napi_value argv[2] = {nullptr}; - napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr); - napi_valuetype valueType; - napi_typeof(env, argv[0], &valueType); NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]); size_t strSize; char strBuf[256]; @@ -88,34 +87,85 @@ namespace { static napi_value GetRawFileContent(napi_env env, napi_callback_info info) { OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "GetFileContent Begin"); - size_t argc = 2; - napi_value argv[2] = {nullptr}; - + size_t argc = 4; + napi_value argv[4] = {nullptr}; napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr); - napi_valuetype valueType; - napi_typeof(env, argv[0], &valueType); NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]); size_t strSize; char strBuf[256]; napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize); std::string filename(strBuf, strSize); + int64_t offset = 0; + int64_t length = 0; + napi_get_value_int64(env, argv[2], &offset); + napi_get_value_int64(env, argv[3], &length); + RawFile *rawFile = OH_ResourceManager_OpenRawFile(mNativeResMgr, filename.c_str()); if (rawFile != nullptr) { OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "OH_ResourceManager_OpenRawFile success"); } - long len = OH_ResourceManager_GetRawFileSize(rawFile); - std::unique_ptr data = std::make_unique(len); + long fileSize = OH_ResourceManager_GetRawFileSize(rawFile); + long readLen = fileSize; + if (offset + length <= fileSize) { + OH_ResourceManager_SeekRawFile(rawFile, offset, 0); + if (length != 0) { + readLen = length; + } + long currentOffset = OH_ResourceManager_GetRawFileOffset(rawFile); + OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "GetFileContent, current rawfile offset = %{public}ld", + currentOffset); + } + std::unique_ptr data = std::make_unique(readLen); + int res = OH_ResourceManager_ReadRawFile(rawFile, data.get(), readLen); + OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "GetFileContent, read size = %{public}d", res); + OH_ResourceManager_CloseRawFile(rawFile); + OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr); + return CreateJsArrayValue(env, data, fileSize); +} - int res = OH_ResourceManager_ReadRawFile(rawFile, data.get(), len); +static napi_value GetRawFileContent64(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "GetRawFileContent64 Begin"); + size_t argc = 4; + napi_value argv[4] = {nullptr}; + napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr); - OH_ResourceManager_CloseRawFile(rawFile); + NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]); + size_t strSize; + char strBuf[256]; + napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize); + std::string filename(strBuf, strSize); + int64_t offset = 0; + int64_t length = 0; + napi_get_value_int64(env, argv[2], &offset); + napi_get_value_int64(env, argv[3], &length); + + RawFile64 *rawFile = OH_ResourceManager_OpenRawFile64(mNativeResMgr, filename.c_str()); + if (rawFile != nullptr) { + OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "OH_ResourceManager_OpenRawFile64 success"); + } + long fileSize = OH_ResourceManager_GetRawFileSize64(rawFile); + long readLen = fileSize; + if (offset + length <= fileSize) { + OH_ResourceManager_SeekRawFile64(rawFile, offset, 0); + if (length != 0) { + readLen = length; + } + long currentOffset = OH_ResourceManager_GetRawFileOffset64(rawFile); + OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "GetRawFileContent64, current rawfile offset = %{public}ld", + currentOffset); + } + std::unique_ptr data = std::make_unique(readLen); + int res = OH_ResourceManager_ReadRawFile64(rawFile, data.get(), readLen); + OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "GetRawFileContent64, read size = %{public}d", res); + OH_ResourceManager_CloseRawFile64(rawFile); OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr); - return CreateJsArrayValue(env, data, len); + return CreateJsArrayValue(env, data, fileSize); } namespace { - napi_value createJsFileDescriptor(napi_env env, RawFileDescriptor &descriptor) + napi_value createJsFileDescriptor(napi_env env, int navtieFd, int64_t nativeOffset, int64_t nativeLength) { napi_value result; napi_status status = napi_create_object(env, &result); @@ -124,7 +174,7 @@ namespace { } napi_value fd; - status = napi_create_int32(env, descriptor.fd, &fd); + status = napi_create_int32(env, navtieFd, &fd); if (status != napi_ok) { return result; } @@ -134,7 +184,7 @@ namespace { } napi_value offset; - status = napi_create_int64(env, descriptor.start, &offset); + status = napi_create_int64(env, nativeOffset, &offset); if (status != napi_ok) { return result; } @@ -144,7 +194,7 @@ namespace { } napi_value length; - status = napi_create_int64(env, descriptor.length, &length); + status = napi_create_int64(env, nativeLength, &length); if (status != napi_ok) { return result; } @@ -161,11 +211,8 @@ static napi_value GetRawFileDescriptor(napi_env env, napi_callback_info info) OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "GetRawFileDescriptor Begin"); size_t argc = 2; napi_value argv[2] = {nullptr}; - napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr); - napi_valuetype valueType; - napi_typeof(env, argv[0], &valueType); NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]); size_t strSize; char strBuf[256]; @@ -180,7 +227,107 @@ static napi_value GetRawFileDescriptor(napi_env env, napi_callback_info info) OH_ResourceManager_CloseRawFile(rawFile); OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr); - return createJsFileDescriptor(env, descriptor); + return createJsFileDescriptor(env, descriptor.fd, descriptor.start, descriptor.length); +} + +static napi_value GetRawFileDescriptor64(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "GetRawFileDescriptor64 Begin"); + size_t argc = 2; + napi_value argv[2] = {nullptr}; + napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr); + + NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]); + size_t strSize; + char strBuf[256]; + napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize); + std::string filename(strBuf, strSize); + RawFile64 *rawFile = OH_ResourceManager_OpenRawFile64(mNativeResMgr, filename.c_str()); + if (rawFile != nullptr) { + OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "OH_ResourceManager_OpenRawFile64 success"); + } + RawFileDescriptor64 descriptor; + OH_ResourceManager_GetRawFileDescriptor64(rawFile, &descriptor); + + OH_ResourceManager_CloseRawFile64(rawFile); + OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr); + return createJsFileDescriptor(env, descriptor.fd, descriptor.start, descriptor.length); +} + +namespace { + napi_valuetype GetValueType(napi_env env, napi_value value) + { + napi_valuetype valueType = napi_valuetype::napi_undefined; + napi_typeof(env, value, &valueType); + return valueType; + } + + void GetRawFileDescritorObject(napi_env env, napi_value value, int &nativeFd, int64_t &nativeOffset, + int64_t &nativeLength) + { + napi_value fd; + napi_status status = napi_get_named_property(env, value, "fd", &fd); + if (status == napi_ok && fd != nullptr && GetValueType(env, fd) == napi_number) { + napi_get_value_int32(env, fd, &nativeFd); + } + + napi_value offset; + status = napi_get_named_property(env, value, "offset", &offset); + if (status == napi_ok && offset != nullptr && GetValueType(env, offset) == napi_number) { + napi_get_value_int64(env, offset, &nativeOffset); + } + + napi_value length; + status = napi_get_named_property(env, value, "length", &length); + if (status == napi_ok && length != nullptr && GetValueType(env, length) == napi_number) { + napi_get_value_int64(env, length, &nativeLength); + } + } +} + +static napi_value ReleaseRawFileDescriptor(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "ReleaseRawFileDescriptor Begin"); + size_t argc = 2; + napi_value argv[2] = {nullptr}; + napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr); + + NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]); + bool succeed = false; + if (GetValueType(env, argv[1]) == napi_object) { + RawFileDescriptor descriptor; + int64_t offset = 0; + int64_t length = 0; + GetRawFileDescritorObject(env, argv[1], descriptor.fd, offset, length); + descriptor.start = static_cast(offset); + descriptor.length = static_cast(length); + succeed = OH_ResourceManager_ReleaseRawFileDescriptor(descriptor); + } + OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr); + napi_value result; + napi_get_boolean(env, succeed, &result); + return result; +} + +static napi_value ReleaseRawFileDescriptor64(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "ReleaseRawFileDescriptor64 Begin"); + size_t argc = 2; + napi_value argv[2] = {nullptr}; + napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr); + + NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]); + + bool succeed = false; + if (GetValueType(env, argv[1]) == napi_object) { + RawFileDescriptor64 descriptor; + GetRawFileDescritorObject(env, argv[1], descriptor.fd, descriptor.start, descriptor.length); + succeed = OH_ResourceManager_ReleaseRawFileDescriptor64(&descriptor); + } + OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr); + napi_value result; + napi_get_boolean(env, succeed, &result); + return result; } EXTERN_C_START @@ -189,7 +336,14 @@ static napi_value Init(napi_env env, napi_value exports) napi_property_descriptor desc[] = { {"getFileList", nullptr, GetFileList, nullptr, nullptr, nullptr, napi_default, nullptr}, {"getRawFileContent", nullptr, GetRawFileContent, nullptr, nullptr, nullptr, napi_default, nullptr}, - {"getRawFileDescriptor", nullptr, GetRawFileDescriptor, nullptr, nullptr, nullptr, napi_default, nullptr}}; + {"getRawFileContent64", nullptr, GetRawFileContent64, nullptr, nullptr, nullptr, napi_default, nullptr}, + {"getRawFileDescriptor", nullptr, GetRawFileDescriptor, nullptr, nullptr, nullptr, napi_default, nullptr}, + {"getRawFileDescriptor64", nullptr, GetRawFileDescriptor64, nullptr, nullptr, nullptr, napi_default, nullptr}, + {"releaseRawFileDescriptor", nullptr, ReleaseRawFileDescriptor, nullptr, nullptr, nullptr, napi_default, + nullptr}, + {"releaseRawFileDescriptor64", nullptr, ReleaseRawFileDescriptor64, nullptr, nullptr, nullptr, napi_default, + nullptr}, + }; napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); return exports; } diff --git a/code/BasicFeature/Native/NdkRawfile/entry/src/main/cpp/types/libentry/index.d.ts b/code/BasicFeature/Native/NdkRawfile/entry/src/main/cpp/types/libentry/index.d.ts index 0899dab361..422a08e6bb 100644 --- a/code/BasicFeature/Native/NdkRawfile/entry/src/main/cpp/types/libentry/index.d.ts +++ b/code/BasicFeature/Native/NdkRawfile/entry/src/main/cpp/types/libentry/index.d.ts @@ -17,6 +17,20 @@ import resourceManager from '@ohos.resourceManager'; export const getFileList: (resmgr: resourceManager.ResourceManager, path: string) => Array; -export const getRawFileContent: (resmgr: resourceManager.ResourceManager, path: string) => Uint8Array; +export const getRawFileContent: (resmgr: resourceManager.ResourceManager, path: string, offset?: number, + length?: number) => Uint8Array; -export const getRawFileDescriptor: (resmgr: resourceManager.ResourceManager, path: string) => resourceManager.RawFileDescriptor; \ No newline at end of file +export const getRawFileContent64: (resmgr: resourceManager.ResourceManager, path: string, offset?: number, + length?: number) => Uint8Array; + +export const getRawFileDescriptor: (resmgr: resourceManager.ResourceManager, + path: string) => resourceManager.RawFileDescriptor; + +export const getRawFileDescriptor64: (resmgr: resourceManager.ResourceManager, + path: string) => resourceManager.RawFileDescriptor; + +export const releaseRawFileDescriptor: (resmgr: resourceManager.ResourceManager, + fd: resourceManager.RawFileDescriptor) => boolean; + +export const releaseRawFileDescriptor64: (resmgr: resourceManager.ResourceManager, + fd: resourceManager.RawFileDescriptor) => boolean; \ No newline at end of file diff --git a/code/BasicFeature/Native/NdkRawfile/entry/src/main/cpp/types/libentry/oh-package.json5 b/code/BasicFeature/Native/NdkRawfile/entry/src/main/cpp/types/libentry/oh-package.json5 index 9c7250bba8..ed45298dd9 100644 --- a/code/BasicFeature/Native/NdkRawfile/entry/src/main/cpp/types/libentry/oh-package.json5 +++ b/code/BasicFeature/Native/NdkRawfile/entry/src/main/cpp/types/libentry/oh-package.json5 @@ -16,6 +16,6 @@ { "name": "libentry.so", "types": "./index.d.ts", - "version": "", + "version": "1.0.0", "description": "Please describe the basic information." } \ No newline at end of file diff --git a/code/BasicFeature/Native/NdkRawfile/entry/src/main/ets/pages/Index.ets b/code/BasicFeature/Native/NdkRawfile/entry/src/main/ets/pages/Index.ets index 6f116e08ab..89bee28fc4 100644 --- a/code/BasicFeature/Native/NdkRawfile/entry/src/main/ets/pages/Index.ets +++ b/code/BasicFeature/Native/NdkRawfile/entry/src/main/ets/pages/Index.ets @@ -15,29 +15,123 @@ import testNapi from 'libentry.so'; import resourceManager from '@ohos.resourceManager'; - -let rawfilelist: string[]; -let rawfileContet: Uint8Array; -let rawfileDescriptor: resourceManager.RawFileDescriptor; +import { util } from '@kit.ArkTS'; +import { Logger } from '../utils/Logger'; @Entry @Component struct Index { - async aboutToAppear() { - rawfilelist = testNapi.getFileList(getContext().resourceManager, ''); // 获取rawfile目录下的子目录和文件 - rawfileContet = testNapi.getRawFileContent(getContext().resourceManager, 'rawfile.txt'); - rawfileDescriptor = testNapi.getRawFileDescriptor(getContext().resourceManager, 'rawfile.txt'); + private resMgr: resourceManager.ResourceManager = getContext().resourceManager; + private rawFileList: string = ''; + private rawFileContent: string = ''; + private rawFileDescriptor: resourceManager.RawFileDescriptor | undefined = undefined; + private rawFileContentWithOffset: string = ''; + private rawFileContent64: string = ''; + private rawFileDescriptor64: resourceManager.RawFileDescriptor | undefined = undefined; + private rawFileContentWithOffset64: string = ''; + + aboutToAppear() { + let textDecoder = new util.TextDecoder(); + // get raw file list + this.rawFileList = JSON.stringify(testNapi.getFileList(this.resMgr, '')); + + // get content of rawfile.txt + let rawFileArray = testNapi.getRawFileContent(this.resMgr, 'rawfile.txt'); + this.rawFileContent = textDecoder.decodeToString(rawFileArray); + + // get raw file descriptor of rawfile.txt + this.rawFileDescriptor = testNapi.getRawFileDescriptor(this.resMgr, 'rawfile.txt'); + + // get content of rawfile.txt with offset 3 + rawFileArray = testNapi.getRawFileContent(this.resMgr, 'rawfile.txt', 3); + this.rawFileContentWithOffset = textDecoder.decodeToString(rawFileArray); + + // get content of rawfile1.txt by getRawFileContent64 + rawFileArray = testNapi.getRawFileContent64(this.resMgr, 'rawfile1.txt'); + this.rawFileContent64 = textDecoder.decodeToString(rawFileArray); + + // get raw file descriptor of rawfile1.txt by getRawFileDescriptor64 + this.rawFileDescriptor64 = testNapi.getRawFileDescriptor64(this.resMgr, 'rawfile1.txt'); + + // get content of rawfile1.txt by getRawFileContent64 with offset 6 + rawFileArray = testNapi.getRawFileContent64(this.resMgr, 'rawfile1.txt', 8); + this.rawFileContentWithOffset64 = textDecoder.decodeToString(rawFileArray); + } + + aboutToDisappear(): boolean | void { + Logger.info('aboutToDisappear'); + if (this.rawFileDescriptor) { + let result = testNapi.releaseRawFileDescriptor(this.resMgr, this.rawFileDescriptor); + Logger.info(`releaseRawFileDescriptor: ${result}`); + } + + if (this.rawFileDescriptor64) { + let result = testNapi.releaseRawFileDescriptor64(this.resMgr, this.rawFileDescriptor64); + Logger.info(`releaseRawFileDescriptor64: ${result}`); + } } build() { Row() { Column() { - Text('getFileList = ' + rawfilelist).id('get_file_list').fontSize(30) - Text('getRawFileContent = ' + rawfileContet).id('get_raw_file_content').fontSize(30) - Text('rawfileDescriptor.fd = ' + rawfileDescriptor.fd).fontSize(30) - Text('rawfileDescriptor.offset = ' + rawfileDescriptor.offset).fontSize(30) - Text('rawfileDescriptor.length = ' + rawfileDescriptor.length).id('length').fontSize(30) + Text('file list: ' + this.rawFileList) + .id('raw_file_list') + .fontSize(20) + .width('100%') + .margin({ bottom: 15 }) + Text('rawfile.txt content: ' + this.rawFileContent) + .id('raw_file_content') + .fontSize(20) + .width('100%') + .margin({ bottom: 15 }) + Text('rawfile.txt content with offset: ' + this.rawFileContentWithOffset) + .id('raw_file_content_offset') + .fontSize(20) + .width('100%') + .margin({ bottom: 15 }) + Text('rawfile.txt fd: ' + this.rawFileDescriptor?.fd) + .id('raw_file_fd') + .fontSize(20) + .width('100%') + .margin({ bottom: 15 }) + Text('rawfile.txt fd.offset: ' + this.rawFileDescriptor?.offset) + .id('raw_file_fd_offset') + .fontSize(20) + .width('100%') + .margin({ bottom: 15 }) + Text('rawfile.txt fd.length: ' + this.rawFileDescriptor?.length) + .id('raw_file_fd_length') + .fontSize(20) + .width('100%') + .margin({ bottom: 15 }) + + Text('rawfile.txt content64: ' + this.rawFileContent64) + .id('raw_file_content64') + .fontSize(20) + .width('100%') + .margin({ bottom: 15, top: 15 }) + Text('rawfile.txt content with offset64: ' + this.rawFileContentWithOffset64) + .id('raw_file_content_offset64') + .fontSize(20) + .width('100%') + .margin({ bottom: 15 }) + Text('rawfile.txt fd64: ' + this.rawFileDescriptor64?.fd) + .id('raw_file_fd64') + .fontSize(20) + .width('100%') + .margin({ bottom: 15 }) + Text('rawfile.txt fd.offset64: ' + this.rawFileDescriptor64?.offset) + .id('raw_file_fd_offset64') + .fontSize(20) + .width('100%') + .margin({ bottom: 15 }) + Text('rawfile.txt fd.length64: ' + this.rawFileDescriptor64?.length) + .id('raw_file_fd_length64') + .fontSize(20) + .width('100%') + .margin({ bottom: 15 }) } + .padding({ left: 15, right: 15 }) .width('100%') } .height('100%') diff --git a/code/BasicFeature/Native/NdkRawfile/entry/src/main/resources/rawfile/rawfile1.txt b/code/BasicFeature/Native/NdkRawfile/entry/src/main/resources/rawfile/rawfile1.txt index e975e96a83..762a892646 100644 --- a/code/BasicFeature/Native/NdkRawfile/entry/src/main/resources/rawfile/rawfile1.txt +++ b/code/BasicFeature/Native/NdkRawfile/entry/src/main/resources/rawfile/rawfile1.txt @@ -1 +1 @@ -sdgdfg \ No newline at end of file +rawfile content for 64 \ No newline at end of file diff --git a/code/BasicFeature/Native/NdkRawfile/entry/src/main/resources/rawfile/subrawfile/rawfile2.txt b/code/BasicFeature/Native/NdkRawfile/entry/src/main/resources/rawfile/subrawfile/rawfile2.txt index 34983e7b18..74fbb49f22 100644 --- a/code/BasicFeature/Native/NdkRawfile/entry/src/main/resources/rawfile/subrawfile/rawfile2.txt +++ b/code/BasicFeature/Native/NdkRawfile/entry/src/main/resources/rawfile/subrawfile/rawfile2.txt @@ -1 +1 @@ -fdsafsdf \ No newline at end of file +sub rawfile content \ No newline at end of file diff --git a/code/BasicFeature/Native/NdkRawfile/entry/src/ohosTest/ets/test/Index.test.ets b/code/BasicFeature/Native/NdkRawfile/entry/src/ohosTest/ets/test/Index.test.ets index 1441eac473..eac11265ba 100644 --- a/code/BasicFeature/Native/NdkRawfile/entry/src/ohosTest/ets/test/Index.test.ets +++ b/code/BasicFeature/Native/NdkRawfile/entry/src/ohosTest/ets/test/Index.test.ets @@ -39,35 +39,75 @@ export default function IndexTest() { hilog.info(DOMAIN, TAG, 'StartAbility_001 end') }) - it(BUNDLE + 'GetFileListTest', 0, async (done: Function) => { - hilog.info(DOMAIN, TAG, BUNDLE + 'GetFileListTest begin') - let driver = Driver.create() - await driver.delayMs(1000) - let text = await driver.findComponent(ON.id('get_file_list')) - expect(await text.getText() === 'getFileList = rawfile.txt,rawfile1.txt,subrawfile').assertTrue() - hilog.info(DOMAIN, TAG, BUNDLE + 'GetFileListTest end') - done() - }) + it(BUNDLE + 'GetFileListTest', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'GetFileListTest begin') + let driver = Driver.create() + await driver.delayMs(1000) + let text = await driver.findComponent(ON.id('raw_file_list')) + expect(await text.getText() === 'file list: ["rawfile.txt","rawfile1.txt","subrawfile"]').assertTrue() + hilog.info(DOMAIN, TAG, BUNDLE + 'GetFileListTest end') + done() + }) - it(BUNDLE + 'GetRawFileContentTest', 0, async (done: Function) => { - hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawFileContentTest begin') - let driver = Driver.create() - await driver.delayMs(1000) - let text = await driver.findComponent(ON.id('get_raw_file_content')) - expect(await text.getText() === 'getRawFileContent = 114,97,119,102,105,108,101,49,32,99,111,110,116,101,110,116') - .assertTrue() - hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawFileContentTest end') - done() - }) + it(BUNDLE + 'GetRawFileContentTest', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawFileContentTest begin') + let driver = Driver.create() + await driver.delayMs(1000) + let text = await driver.findComponent(ON.id('raw_file_content')) + expect(await text.getText() === 'rawfile.txt content: rawfile1 content').assertTrue() + hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawFileContentTest end') + done() + }) + + it(BUNDLE + 'GetRawFileContentOffsetTest', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawFileContentOffsetTest begin') + let driver = Driver.create() + await driver.delayMs(1000) + let text = await driver.findComponent(ON.id('raw_file_content_offset')) + expect(await text.getText() === 'rawfile.txt content with offset: file1 content').assertTrue() + hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawFileContentOffsetTest end') + done() + }) + + it(BUNDLE + 'GetRawfileDescriptorTest', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawfileDescriptorTest begin') + let driver = Driver.create() + await driver.delayMs(1000) + let text = await driver.findComponent(ON.id('raw_file_fd_length')) + expect(await text.getText() === 'rawfile.txt fd.length: 16').assertTrue() + hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawfileDescriptorTest end') + done() + }) + + it(BUNDLE + 'GetRawFileContent64Test', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawFileContent64Test begin') + let driver = Driver.create() + await driver.delayMs(1000) + let text = await driver.findComponent(ON.id('raw_file_content64')) + expect(await text.getText() === 'rawfile.txt content64: rawfile content for 64').assertTrue() + hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawFileContent64Test end') + done() + }) + + it(BUNDLE + 'GetRawFileContentOffset64Test', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawFileContentOffset64Test begin') + let driver = Driver.create() + await driver.delayMs(1000) + let text = await driver.findComponent(ON.id('raw_file_content_offset64')) + expect(await text.getText() === 'rawfile.txt content with offset64: content for 64').assertTrue() + hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawFileContentOffset64Test end') + done() + }) + + it(BUNDLE + 'GetRawfileDescriptor64Test', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawfileDescriptor64Test begin') + let driver = Driver.create() + await driver.delayMs(1000) + let text = await driver.findComponent(ON.id('raw_file_fd_length64')) + expect(await text.getText() === 'rawfile.txt fd.length64: 22').assertTrue() + hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawfileDescriptor64Test end') + done() + }) - it(BUNDLE + 'GetRawfileDescriptorTest', 0, async (done: Function) => { - hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawfileDescriptorTest begin') - let driver = Driver.create() - await driver.delayMs(1000) - let text = await driver.findComponent(ON.id('length')) - expect(await text.getText() === 'rawfileDescriptor.length = 16').assertTrue() - hilog.info(DOMAIN, TAG, BUNDLE + 'GetRawfileDescriptorTest end') - done() }) -}) } \ No newline at end of file diff --git a/code/BasicFeature/Native/NdkRawfile/hvigor/hvigor-config.json5 b/code/BasicFeature/Native/NdkRawfile/hvigor/hvigor-config.json5 index ac737cf85f..b4886e292b 100644 --- a/code/BasicFeature/Native/NdkRawfile/hvigor/hvigor-config.json5 +++ b/code/BasicFeature/Native/NdkRawfile/hvigor/hvigor-config.json5 @@ -1,6 +1,5 @@ { - "hvigorVersion": "3.0.2", + "modelVersion": "5.0.0", "dependencies": { - "@ohos/hvigor-ohos-plugin": "3.0.2" } } \ No newline at end of file diff --git a/code/BasicFeature/Native/NdkRawfile/hvigor/hvigor-wrapper.js b/code/BasicFeature/Native/NdkRawfile/hvigor/hvigor-wrapper.js deleted file mode 100644 index 994f22987b..0000000000 --- a/code/BasicFeature/Native/NdkRawfile/hvigor/hvigor-wrapper.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";var e=require("fs"),t=require("path"),n=require("os"),r=require("crypto"),u=require("child_process"),o=require("constants"),i=require("stream"),s=require("util"),c=require("assert"),a=require("tty"),l=require("zlib"),f=require("net");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var D=d(e),p=d(t),E=d(n),m=d(r),h=d(u),y=d(o),C=d(i),F=d(s),g=d(c),A=d(a),v=d(l),S=d(f),w="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O={},b={},_={},B=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_,"__esModule",{value:!0}),_.isMac=_.isLinux=_.isWindows=void 0;const P=B(E.default),k="Windows_NT",x="Linux",N="Darwin";_.isWindows=function(){return P.default.type()===k},_.isLinux=function(){return P.default.type()===x},_.isMac=function(){return P.default.type()===N};var I={},T=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),R=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),M=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&T(t,e,n);return R(t,e),t};Object.defineProperty(I,"__esModule",{value:!0}),I.hash=void 0;const L=M(m.default);I.hash=function(e,t="md5"){return L.createHash(t).update(e,"utf-8").digest("hex")},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r};Object.defineProperty(e,"__esModule",{value:!0}),e.HVIGOR_BOOT_JS_FILE_PATH=e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=e.HVIGOR_PROJECT_DEPENDENCIES_HOME=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_NAME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const u=r(p.default),o=r(E.default),i=_,s=I;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,i.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,i.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=u.resolve(o.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=u.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=u.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=u.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=u.resolve(e.HVIGOR_USER_HOME,"project_caches"),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_NAME=u.basename((0,s.hash)(e.HVIGOR_PROJECT_ROOT_DIR)),e.HVIGOR_PROJECT_WRAPPER_HOME=u.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.HVIGOR_PROJECT_DEPENDENCIES_HOME=u.resolve(e.HVIGOR_PROJECT_CACHES_HOME,e.HVIGOR_PROJECT_NAME,"workspace"),e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,e.DEFAULT_PACKAGE_JSON),e.HVIGOR_BOOT_JS_FILE_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js")}(b);var j={},$={};Object.defineProperty($,"__esModule",{value:!0}),$.logInfoPrintConsole=$.logErrorAndExit=void 0,$.logErrorAndExit=function(e){e instanceof Error?console.error(e.message):console.error(e),process.exit(-1)},$.logInfoPrintConsole=function(e){console.log(e)};var H=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),J=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),G=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&H(t,e,n);return J(t,e),t},V=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(j,"__esModule",{value:!0}),j.isFileExists=j.offlinePluginConversion=j.executeCommand=j.getNpmPath=j.hasNpmPackInPaths=void 0;const U=h.default,W=G(p.default),z=b,K=$,q=V(D.default);j.hasNpmPackInPaths=function(e,t){try{return require.resolve(e,{paths:[...t]}),!0}catch(e){return!1}},j.getNpmPath=function(){const e=process.execPath;return W.join(W.dirname(e),z.NPM_TOOL)},j.executeCommand=function(e,t,n){0!==(0,U.spawnSync)(e,t,n).status&&(0,K.logErrorAndExit)(`Error: ${e} ${t} execute failed.See above for details.`)},j.offlinePluginConversion=function(e,t){return t.startsWith("file:")||t.endsWith(".tgz")?W.resolve(e,z.HVIGOR,t.replace("file:","")):t},j.isFileExists=function(e){return q.default.existsSync(e)&&q.default.statSync(e).isFile()},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r},u=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.executeInstallPnpm=e.isPnpmAvailable=e.environmentHandler=e.checkNpmConifg=e.PNPM_VERSION=void 0;const o=r(D.default),i=b,s=j,c=r(p.default),a=$,l=h.default,f=u(E.default);e.PNPM_VERSION="7.30.0",e.checkNpmConifg=function(){const e=c.resolve(i.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),t=c.resolve(f.default.homedir(),".npmrc");if((0,s.isFileExists)(e)||(0,s.isFileExists)(t))return;const n=(0,s.getNpmPath)(),r=(0,l.spawnSync)(n,["config","get","prefix"],{cwd:i.HVIGOR_PROJECT_ROOT_DIR});if(0!==r.status||!r.stdout)return void(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const u=c.resolve(`${r.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,s.isFileExists)(u)||(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},e.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},e.isPnpmAvailable=function(){return!!o.existsSync(i.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,s.hasNpmPackInPaths)("pnpm",[i.HVIGOR_WRAPPER_TOOLS_HOME])},e.executeInstallPnpm=function(){(0,a.logInfoPrintConsole)(`Installing pnpm@${e.PNPM_VERSION}...`);const t=(0,s.getNpmPath)();!function(){const t=c.resolve(i.HVIGOR_WRAPPER_TOOLS_HOME,i.DEFAULT_PACKAGE_JSON);try{o.existsSync(i.HVIGOR_WRAPPER_TOOLS_HOME)||o.mkdirSync(i.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const n={dependencies:{}};n.dependencies[i.PNPM]=e.PNPM_VERSION,o.writeFileSync(t,JSON.stringify(n))}catch(e){(0,a.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${t} failed.`)}}(),(0,s.executeCommand)(t,["install","pnpm"],{cwd:i.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,a.logInfoPrintConsole)("Pnpm install success.")}}(O);var Y={},X={},Z={},Q={};Object.defineProperty(Q,"__esModule",{value:!0}),Q.Unicode=void 0;class ee{}Q.Unicode=ee,ee.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ee.ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ee.ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(Z,"__esModule",{value:!0}),Z.JudgeUtil=void 0;const te=Q;Z.JudgeUtil=class{static isIgnoreChar(e){return"string"==typeof e&&("\t"===e||"\v"===e||"\f"===e||" "===e||" "===e||"\ufeff"===e||"\n"===e||"\r"===e||"\u2028"===e||"\u2029"===e)}static isSpaceSeparator(e){return"string"==typeof e&&te.Unicode.Space_Separator.test(e)}static isIdStartChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||te.Unicode.ID_Start.test(e))}static isIdContinueChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||"‌"===e||"‍"===e||te.Unicode.ID_Continue.test(e))}static isDigitWithoutZero(e){return/[1-9]/.test(e)}static isDigit(e){return"string"==typeof e&&/[0-9]/.test(e)}static isHexDigit(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}};var ne={},re={fromCallback:function(e){return Object.defineProperty((function(...t){if("function"!=typeof t[t.length-1])return new Promise(((n,r)=>{e.call(this,...t,((e,t)=>null!=e?r(e):n(t)))}));e.apply(this,t)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(...t){const n=t[t.length-1];if("function"!=typeof n)return e.apply(this,t);e.apply(this,t.slice(0,-1)).then((e=>n(null,e)),n)}),"name",{value:e.name})}},ue=y.default,oe=process.cwd,ie=null,se=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return ie||(ie=oe.call(process)),ie};try{process.cwd()}catch(e){}if("function"==typeof process.chdir){var ce=process.chdir;process.chdir=function(e){ie=null,ce.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,ce)}var ae=function(e){ue.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&function(e){e.lchmod=function(t,n,r){e.open(t,ue.O_WRONLY|ue.O_SYMLINK,n,(function(t,u){t?r&&r(t):e.fchmod(u,n,(function(t){e.close(u,(function(e){r&&r(t||e)}))}))}))},e.lchmodSync=function(t,n){var r,u=e.openSync(t,ue.O_WRONLY|ue.O_SYMLINK,n),o=!0;try{r=e.fchmodSync(u,n),o=!1}finally{if(o)try{e.closeSync(u)}catch(e){}else e.closeSync(u)}return r}}(e);e.lutimes||function(e){ue.hasOwnProperty("O_SYMLINK")&&e.futimes?(e.lutimes=function(t,n,r,u){e.open(t,ue.O_SYMLINK,(function(t,o){t?u&&u(t):e.futimes(o,n,r,(function(t){e.close(o,(function(e){u&&u(t||e)}))}))}))},e.lutimesSync=function(t,n,r){var u,o=e.openSync(t,ue.O_SYMLINK),i=!0;try{u=e.futimesSync(o,n,r),i=!1}finally{if(i)try{e.closeSync(o)}catch(e){}else e.closeSync(o)}return u}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}(e);e.chown=r(e.chown),e.fchown=r(e.fchown),e.lchown=r(e.lchown),e.chmod=t(e.chmod),e.fchmod=t(e.fchmod),e.lchmod=t(e.lchmod),e.chownSync=u(e.chownSync),e.fchownSync=u(e.fchownSync),e.lchownSync=u(e.lchownSync),e.chmodSync=n(e.chmodSync),e.fchmodSync=n(e.fchmodSync),e.lchmodSync=n(e.lchmodSync),e.stat=o(e.stat),e.fstat=o(e.fstat),e.lstat=o(e.lstat),e.statSync=i(e.statSync),e.fstatSync=i(e.fstatSync),e.lstatSync=i(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){});e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){});"win32"===se&&(e.rename="function"!=typeof e.rename?e.rename:function(t){function n(n,r,u){var o=Date.now(),i=0;t(n,r,(function s(c){if(c&&("EACCES"===c.code||"EPERM"===c.code||"EBUSY"===c.code)&&Date.now()-o<6e4)return setTimeout((function(){e.stat(r,(function(e,o){e&&"ENOENT"===e.code?t(n,r,s):u(c)}))}),i),void(i<100&&(i+=10));u&&u(c)}))}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.rename));function t(t){return t?function(n,r,u){return t.call(e,n,r,(function(e){s(e)&&(e=null),u&&u.apply(this,arguments)}))}:t}function n(t){return t?function(n,r){try{return t.call(e,n,r)}catch(e){if(!s(e))throw e}}:t}function r(t){return t?function(n,r,u,o){return t.call(e,n,r,u,(function(e){s(e)&&(e=null),o&&o.apply(this,arguments)}))}:t}function u(t){return t?function(n,r,u){try{return t.call(e,n,r,u)}catch(e){if(!s(e))throw e}}:t}function o(t){return t?function(n,r,u){function o(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),u&&u.apply(this,arguments)}return"function"==typeof r&&(u=r,r=null),r?t.call(e,n,r,o):t.call(e,n,o)}:t}function i(t){return t?function(n,r){var u=r?t.call(e,n,r):t.call(e,n);return u&&(u.uid<0&&(u.uid+=4294967296),u.gid<0&&(u.gid+=4294967296)),u}:t}function s(e){return!e||("ENOSYS"===e.code||!(process.getuid&&0===process.getuid()||"EINVAL"!==e.code&&"EPERM"!==e.code))}e.read="function"!=typeof e.read?e.read:function(t){function n(n,r,u,o,i,s){var c;if(s&&"function"==typeof s){var a=0;c=function(l,f,d){if(l&&"EAGAIN"===l.code&&a<10)return a++,t.call(e,n,r,u,o,i,c);s.apply(this,arguments)}}return t.call(e,n,r,u,o,i,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.read),e.readSync="function"!=typeof e.readSync?e.readSync:(c=e.readSync,function(t,n,r,u,o){for(var i=0;;)try{return c.call(e,t,n,r,u,o)}catch(e){if("EAGAIN"===e.code&&i<10){i++;continue}throw e}});var c};var le=C.default.Stream,fe=function(e){return{ReadStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this);var u=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,r=r||{};for(var o=Object.keys(r),i=0,s=o.length;ithis.end)throw new Error("start must be <= end");this.pos=this.start}if(null!==this.fd)return void process.nextTick((function(){u._read()}));e.open(this.path,this.flags,this.mode,(function(e,t){if(e)return u.emit("error",e),void(u.readable=!1);u.fd=t,u.emit("open",t),u._read()}))},WriteStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,r=r||{};for(var u=Object.keys(r),o=0,i=u.length;o= zero");this.pos=this.start}this.busy=!1,this._queue=[],null===this.fd&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}};var de=function(e){if(null===e||"object"!=typeof e)return e;if(e instanceof Object)var t={__proto__:De(e)};else t=Object.create(null);return Object.getOwnPropertyNames(e).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t},De=Object.getPrototypeOf||function(e){return e.__proto__};var pe,Ee,me=D.default,he=ae,ye=fe,Ce=de,Fe=F.default;function ge(e,t){Object.defineProperty(e,pe,{get:function(){return t}})}"function"==typeof Symbol&&"function"==typeof Symbol.for?(pe=Symbol.for("graceful-fs.queue"),Ee=Symbol.for("graceful-fs.previous")):(pe="___graceful-fs.queue",Ee="___graceful-fs.previous");var Ae=function(){};if(Fe.debuglog?Ae=Fe.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(Ae=function(){var e=Fe.format.apply(Fe,arguments);e="GFS4: "+e.split(/\n/).join("\nGFS4: "),console.error(e)}),!me[pe]){var ve=w[pe]||[];ge(me,ve),me.close=function(e){function t(t,n){return e.call(me,t,(function(e){e||_e(),"function"==typeof n&&n.apply(this,arguments)}))}return Object.defineProperty(t,Ee,{value:e}),t}(me.close),me.closeSync=function(e){function t(t){e.apply(me,arguments),_e()}return Object.defineProperty(t,Ee,{value:e}),t}(me.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",(function(){Ae(me[pe]),g.default.equal(me[pe].length,0)}))}w[pe]||ge(w,me[pe]);var Se,we=Oe(Ce(me));function Oe(e){he(e),e.gracefulify=Oe,e.createReadStream=function(t,n){return new e.ReadStream(t,n)},e.createWriteStream=function(t,n){return new e.WriteStream(t,n)};var t=e.readFile;e.readFile=function(e,n,r){"function"==typeof n&&(r=n,n=null);return function e(n,r,u,o){return t(n,r,(function(t){!t||"EMFILE"!==t.code&&"ENFILE"!==t.code?"function"==typeof u&&u.apply(this,arguments):be([e,[n,r,u],t,o||Date.now(),Date.now()])}))}(e,n,r)};var n=e.writeFile;e.writeFile=function(e,t,r,u){"function"==typeof r&&(u=r,r=null);return function e(t,r,u,o,i){return n(t,r,u,(function(n){!n||"EMFILE"!==n.code&&"ENFILE"!==n.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,r,u,o],n,i||Date.now(),Date.now()])}))}(e,t,r,u)};var r=e.appendFile;r&&(e.appendFile=function(e,t,n,u){"function"==typeof n&&(u=n,n=null);return function e(t,n,u,o,i){return r(t,n,u,(function(r){!r||"EMFILE"!==r.code&&"ENFILE"!==r.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,u,o],r,i||Date.now(),Date.now()])}))}(e,t,n,u)});var u=e.copyFile;u&&(e.copyFile=function(e,t,n,r){"function"==typeof n&&(r=n,n=0);return function e(t,n,r,o,i){return u(t,n,r,(function(u){!u||"EMFILE"!==u.code&&"ENFILE"!==u.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,r,o],u,i||Date.now(),Date.now()])}))}(e,t,n,r)});var o=e.readdir;e.readdir=function(e,t,n){"function"==typeof t&&(n=t,t=null);var r=i.test(process.version)?function(e,t,n,r){return o(e,u(e,t,n,r))}:function(e,t,n,r){return o(e,t,u(e,t,n,r))};return r(e,t,n);function u(e,t,n,u){return function(o,i){!o||"EMFILE"!==o.code&&"ENFILE"!==o.code?(i&&i.sort&&i.sort(),"function"==typeof n&&n.call(this,o,i)):be([r,[e,t,n],o,u||Date.now(),Date.now()])}}};var i=/^v[0-5]\./;if("v0.8"===process.version.substr(0,4)){var s=ye(e);d=s.ReadStream,D=s.WriteStream}var c=e.ReadStream;c&&(d.prototype=Object.create(c.prototype),d.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.autoClose&&e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n),e.read())}))});var a=e.WriteStream;a&&(D.prototype=Object.create(a.prototype),D.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n))}))}),Object.defineProperty(e,"ReadStream",{get:function(){return d},set:function(e){d=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return D},set:function(e){D=e},enumerable:!0,configurable:!0});var l=d;Object.defineProperty(e,"FileReadStream",{get:function(){return l},set:function(e){l=e},enumerable:!0,configurable:!0});var f=D;function d(e,t){return this instanceof d?(c.apply(this,arguments),this):d.apply(Object.create(d.prototype),arguments)}function D(e,t){return this instanceof D?(a.apply(this,arguments),this):D.apply(Object.create(D.prototype),arguments)}Object.defineProperty(e,"FileWriteStream",{get:function(){return f},set:function(e){f=e},enumerable:!0,configurable:!0});var p=e.open;function E(e,t,n,r){return"function"==typeof n&&(r=n,n=null),function e(t,n,r,u,o){return p(t,n,r,(function(i,s){!i||"EMFILE"!==i.code&&"ENFILE"!==i.code?"function"==typeof u&&u.apply(this,arguments):be([e,[t,n,r,u],i,o||Date.now(),Date.now()])}))}(e,t,n,r)}return e.open=E,e}function be(e){Ae("ENQUEUE",e[0].name,e[1]),me[pe].push(e),Be()}function _e(){for(var e=Date.now(),t=0;t2&&(me[pe][t][3]=e,me[pe][t][4]=e);Be()}function Be(){if(clearTimeout(Se),Se=void 0,0!==me[pe].length){var e=me[pe].shift(),t=e[0],n=e[1],r=e[2],u=e[3],o=e[4];if(void 0===u)Ae("RETRY",t.name,n),t.apply(null,n);else if(Date.now()-u>=6e4){Ae("TIMEOUT",t.name,n);var i=n.pop();"function"==typeof i&&i.call(null,r)}else{var s=Date.now()-o,c=Math.max(o-u,1);s>=Math.min(1.2*c,100)?(Ae("RETRY",t.name,n),t.apply(null,n.concat([u]))):me[pe].push(e)}void 0===Se&&(Se=setTimeout(Be,0))}}process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!me.__patched&&(we=Oe(me),me.__patched=!0),function(e){const t=re.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchmod","lchown","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.assign(e,n),r.forEach((r=>{e[r]=t(n[r])})),e.realpath.native=t(n.realpath.native),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.writev&&(e.writev=function(e,t,...r){return"function"==typeof r[r.length-1]?n.writev(e,t,...r):new Promise(((u,o)=>{n.writev(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffers:n})}))}))})}(ne);var Pe={},ke={};const xe=p.default;ke.checkPath=function(e){if("win32"===process.platform){if(/[<>:"|?*]/.test(e.replace(xe.parse(e).root,""))){const t=new Error(`Path contains invalid characters: ${e}`);throw t.code="EINVAL",t}}};const Ne=ne,{checkPath:Ie}=ke,Te=e=>"number"==typeof e?e:{mode:511,...e}.mode;Pe.makeDir=async(e,t)=>(Ie(e),Ne.mkdir(e,{mode:Te(t),recursive:!0})),Pe.makeDirSync=(e,t)=>(Ie(e),Ne.mkdirSync(e,{mode:Te(t),recursive:!0}));const Re=re.fromPromise,{makeDir:Me,makeDirSync:Le}=Pe,je=Re(Me);var $e={mkdirs:je,mkdirsSync:Le,mkdirp:je,mkdirpSync:Le,ensureDir:je,ensureDirSync:Le};const He=re.fromPromise,Je=ne;var Ge={pathExists:He((function(e){return Je.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:Je.existsSync};const Ve=we;var Ue=function(e,t,n,r){Ve.open(e,"r+",((e,u)=>{if(e)return r(e);Ve.futimes(u,t,n,(e=>{Ve.close(u,(t=>{r&&r(e||t)}))}))}))},We=function(e,t,n){const r=Ve.openSync(e,"r+");return Ve.futimesSync(r,t,n),Ve.closeSync(r)};const ze=ne,Ke=p.default,qe=F.default;function Ye(e,t,n){const r=n.dereference?e=>ze.stat(e,{bigint:!0}):e=>ze.lstat(e,{bigint:!0});return Promise.all([r(e),r(t).catch((e=>{if("ENOENT"===e.code)return null;throw e}))]).then((([e,t])=>({srcStat:e,destStat:t})))}function Xe(e,t){return t.ino&&t.dev&&t.ino===e.ino&&t.dev===e.dev}function Ze(e,t){const n=Ke.resolve(e).split(Ke.sep).filter((e=>e)),r=Ke.resolve(t).split(Ke.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function Qe(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var et={checkPaths:function(e,t,n,r,u){qe.callbackify(Ye)(e,t,r,((r,o)=>{if(r)return u(r);const{srcStat:i,destStat:s}=o;if(s){if(Xe(i,s)){const r=Ke.basename(e),o=Ke.basename(t);return"move"===n&&r!==o&&r.toLowerCase()===o.toLowerCase()?u(null,{srcStat:i,destStat:s,isChangingCase:!0}):u(new Error("Source and destination must not be the same."))}if(i.isDirectory()&&!s.isDirectory())return u(new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`));if(!i.isDirectory()&&s.isDirectory())return u(new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`))}return i.isDirectory()&&Ze(e,t)?u(new Error(Qe(e,t,n))):u(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n,r){const{srcStat:u,destStat:o}=function(e,t,n){let r;const u=n.dereference?e=>ze.statSync(e,{bigint:!0}):e=>ze.lstatSync(e,{bigint:!0}),o=u(e);try{r=u(t)}catch(e){if("ENOENT"===e.code)return{srcStat:o,destStat:null};throw e}return{srcStat:o,destStat:r}}(e,t,r);if(o){if(Xe(u,o)){const r=Ke.basename(e),i=Ke.basename(t);if("move"===n&&r!==i&&r.toLowerCase()===i.toLowerCase())return{srcStat:u,destStat:o,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(u.isDirectory()&&!o.isDirectory())throw new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`);if(!u.isDirectory()&&o.isDirectory())throw new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`)}if(u.isDirectory()&&Ze(e,t))throw new Error(Qe(e,t,n));return{srcStat:u,destStat:o}},checkParentPaths:function e(t,n,r,u,o){const i=Ke.resolve(Ke.dirname(t)),s=Ke.resolve(Ke.dirname(r));if(s===i||s===Ke.parse(s).root)return o();ze.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):Xe(n,c)?o(new Error(Qe(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=Ke.resolve(Ke.dirname(t)),i=Ke.resolve(Ke.dirname(r));if(i===o||i===Ke.parse(i).root)return;let s;try{s=ze.statSync(i,{bigint:!0})}catch(e){if("ENOENT"===e.code)return;throw e}if(Xe(n,s))throw new Error(Qe(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ze,areIdentical:Xe};const tt=we,nt=p.default,rt=$e.mkdirs,ut=Ge.pathExists,ot=Ue,it=et;function st(e,t,n,r,u){const o=nt.dirname(n);ut(o,((i,s)=>i?u(i):s?at(e,t,n,r,u):void rt(o,(o=>o?u(o):at(e,t,n,r,u)))))}function ct(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function at(e,t,n,r,u){(r.dereference?tt.stat:tt.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){return t?Dt(n,r,u,o):function(e,t,n,r,u){tt.mkdir(n,(o=>{if(o)return u(o);Dt(t,n,r,(t=>t?u(t):dt(n,e,u)))}))}(e.mode,n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();tt.unlink(n,(o=>o?u(o):lt(e,t,n,r,u)))}(e,n,r,u,o):lt(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){tt.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=nt.resolve(process.cwd(),o)),e?void tt.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?tt.symlink(o,n,u):u(t):(r.dereference&&(i=nt.resolve(process.cwd(),i)),it.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&it.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){tt.unlink(t,(r=>r?n(r):tt.symlink(e,t,n)))}(o,n,u)))):tt.symlink(o,n,u))))}(e,t,n,r,u):i.isSocket()?u(new Error(`Cannot copy a socket file: ${t}`)):i.isFIFO()?u(new Error(`Cannot copy a FIFO pipe: ${t}`)):u(new Error(`Unknown file: ${t}`))))}function lt(e,t,n,r,u){tt.copyFile(t,n,(o=>o?u(o):r.preserveTimestamps?function(e,t,n,r){if(function(e){return 0==(128&e)}(e))return function(e,t,n){return dt(e,128|t,n)}(n,e,(u=>u?r(u):ft(e,t,n,r)));return ft(e,t,n,r)}(e.mode,t,n,u):dt(n,e.mode,u)))}function ft(e,t,n,r){!function(e,t,n){tt.stat(e,((e,r)=>e?n(e):ot(t,r.atime,r.mtime,n)))}(t,n,(t=>t?r(t):dt(n,e,r)))}function dt(e,t,n){return tt.chmod(e,t,n)}function Dt(e,t,n,r){tt.readdir(e,((u,o)=>u?r(u):pt(o,e,t,n,r)))}function pt(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=nt.join(n,t),s=nt.join(r,t);it.checkPaths(i,s,"copy",u,((t,c)=>{if(t)return o(t);const{destStat:a}=c;!function(e,t,n,r,u){r.filter?ct(at,e,t,n,r,u):at(e,t,n,r,u)}(a,i,s,u,(t=>t?o(t):pt(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Et=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),it.checkPaths(e,t,"copy",n,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;it.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?ct(st,s,e,t,n,r):st(s,e,t,n,r)))}))};const mt=we,ht=p.default,yt=$e.mkdirsSync,Ct=We,Ft=et;function gt(e,t,n,r){const u=(r.dereference?mt.statSync:mt.lstatSync)(t);if(u.isDirectory())return function(e,t,n,r,u){return t?St(n,r,u):function(e,t,n,r){return mt.mkdirSync(n),St(t,n,r),vt(n,e)}(e.mode,n,r,u)}(u,e,t,n,r);if(u.isFile()||u.isCharacterDevice()||u.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return mt.unlinkSync(n),At(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):At(e,n,r,u)}(u,e,t,n,r);if(u.isSymbolicLink())return function(e,t,n,r){let u=mt.readlinkSync(t);r.dereference&&(u=ht.resolve(process.cwd(),u));if(e){let e;try{e=mt.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return mt.symlinkSync(u,n);throw e}if(r.dereference&&(e=ht.resolve(process.cwd(),e)),Ft.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(mt.statSync(n).isDirectory()&&Ft.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return mt.unlinkSync(t),mt.symlinkSync(e,t)}(u,n)}return mt.symlinkSync(u,n)}(e,t,n,r);if(u.isSocket())throw new Error(`Cannot copy a socket file: ${t}`);if(u.isFIFO())throw new Error(`Cannot copy a FIFO pipe: ${t}`);throw new Error(`Unknown file: ${t}`)}function At(e,t,n,r){return mt.copyFileSync(t,n),r.preserveTimestamps&&function(e,t,n){(function(e){return 0==(128&e)})(e)&&function(e,t){vt(e,128|t)}(n,e);(function(e,t){const n=mt.statSync(e);Ct(t,n.atime,n.mtime)})(t,n)}(e.mode,t,n),vt(n,e.mode)}function vt(e,t){return mt.chmodSync(e,t)}function St(e,t,n){mt.readdirSync(e).forEach((r=>function(e,t,n,r){const u=ht.join(t,e),o=ht.join(n,e),{destStat:i}=Ft.checkPathsSync(u,o,"copy",r);return function(e,t,n,r){if(!r.filter||r.filter(t,n))return gt(e,t,n,r)}(i,u,o,r)}(r,e,t,n)))}var wt=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=Ft.checkPathsSync(e,t,"copy",n);return Ft.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ht.dirname(n);mt.existsSync(u)||yt(u);return gt(e,t,n,r)}(u,e,t,n)};var Ot={copy:(0,re.fromCallback)(Et),copySync:wt};const bt=we,_t=p.default,Bt=g.default,Pt="win32"===process.platform;function kt(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||bt[t],e[t+="Sync"]=e[t]||bt[t]})),e.maxBusyTries=e.maxBusyTries||3}function xt(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt.strictEqual(typeof n,"function","rimraf: callback function required"),Bt(t,"rimraf: invalid options argument provided"),Bt.strictEqual(typeof t,"object","rimraf: options should be object"),kt(t),Nt(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rNt(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Nt(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&Pt?It(e,t,r,n):u&&u.isDirectory()?Rt(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return Pt?It(e,t,r,n):Rt(e,t,r,n);if("EISDIR"===r.code)return Rt(e,t,r,n)}return n(r)}))))}function It(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Rt(e,t,n,r):t.unlink(e,r)}))}))}function Tt(e,t,n){let r;Bt(e),Bt(t);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?Lt(e,t,n):t.unlinkSync(e)}function Rt(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{xt(_t.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Mt(e,t){let n;kt(t=t||{}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt(t,"rimraf: missing options"),Bt.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&Pt&&Tt(e,t,n)}try{n&&n.isDirectory()?Lt(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return Pt?Tt(e,t,n):Lt(e,t,n);if("EISDIR"!==n.code)throw n;Lt(e,t,n)}}function Lt(e,t,n){Bt(e),Bt(t);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Bt(e),Bt(t),t.readdirSync(e).forEach((n=>Mt(_t.join(e,n),t))),!Pt){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch{}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var jt=xt;xt.sync=Mt;const $t=we,Ht=re.fromCallback,Jt=jt;var Gt={remove:Ht((function(e,t){if($t.rm)return $t.rm(e,{recursive:!0,force:!0},t);Jt(e,t)})),removeSync:function(e){if($t.rmSync)return $t.rmSync(e,{recursive:!0,force:!0});Jt.sync(e)}};const Vt=re.fromPromise,Ut=ne,Wt=p.default,zt=$e,Kt=Gt,qt=Vt((async function(e){let t;try{t=await Ut.readdir(e)}catch{return zt.mkdirs(e)}return Promise.all(t.map((t=>Kt.remove(Wt.join(e,t)))))}));function Yt(e){let t;try{t=Ut.readdirSync(e)}catch{return zt.mkdirsSync(e)}t.forEach((t=>{t=Wt.join(e,t),Kt.removeSync(t)}))}var Xt={emptyDirSync:Yt,emptydirSync:Yt,emptyDir:qt,emptydir:qt};const Zt=re.fromCallback,Qt=p.default,en=we,tn=$e;var nn={createFile:Zt((function(e,t){function n(){en.writeFile(e,"",(e=>{if(e)return t(e);t()}))}en.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Qt.dirname(e);en.stat(o,((e,r)=>{if(e)return"ENOENT"===e.code?tn.mkdirs(o,(e=>{if(e)return t(e);n()})):t(e);r.isDirectory()?n():en.readdir(o,(e=>{if(e)return t(e)}))}))}))})),createFileSync:function(e){let t;try{t=en.statSync(e)}catch{}if(t&&t.isFile())return;const n=Qt.dirname(e);try{en.statSync(n).isDirectory()||en.readdirSync(n)}catch(e){if(!e||"ENOENT"!==e.code)throw e;tn.mkdirsSync(n)}en.writeFileSync(e,"")}};const rn=re.fromCallback,un=p.default,on=we,sn=$e,cn=Ge.pathExists,{areIdentical:an}=et;var ln={createLink:rn((function(e,t,n){function r(e,t){on.link(e,t,(e=>{if(e)return n(e);n(null)}))}on.lstat(t,((u,o)=>{on.lstat(e,((u,i)=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);if(o&&an(i,o))return n(null);const s=un.dirname(t);cn(s,((u,o)=>u?n(u):o?r(e,t):void sn.mkdirs(s,(u=>{if(u)return n(u);r(e,t)}))))}))}))})),createLinkSync:function(e,t){let n;try{n=on.lstatSync(t)}catch{}try{const t=on.lstatSync(e);if(n&&an(t,n))return}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const r=un.dirname(t);return on.existsSync(r)||sn.mkdirsSync(r),on.linkSync(e,t)}};const fn=p.default,dn=we,Dn=Ge.pathExists;var pn={symlinkPaths:function(e,t,n){if(fn.isAbsolute(e))return dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=fn.dirname(t),u=fn.join(r,e);return Dn(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:fn.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(fn.isAbsolute(e)){if(n=dn.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=fn.dirname(t),u=fn.join(r,e);if(n=dn.existsSync(u),n)return{toCwd:u,toDst:e};if(n=dn.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:fn.relative(r,e)}}}};const En=we;var mn={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);En.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=En.lstatSync(e)}catch{return"file"}return n&&n.isDirectory()?"dir":"file"}};const hn=re.fromCallback,yn=p.default,Cn=ne,Fn=$e.mkdirs,gn=$e.mkdirsSync,An=pn.symlinkPaths,vn=pn.symlinkPathsSync,Sn=mn.symlinkType,wn=mn.symlinkTypeSync,On=Ge.pathExists,{areIdentical:bn}=et;function _n(e,t,n,r){An(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,Sn(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=yn.dirname(t);On(o,((n,i)=>n?r(n):i?Cn.symlink(e,t,u,r):void Fn(o,(n=>{if(n)return r(n);Cn.symlink(e,t,u,r)}))))}))}))}var Bn={createSymlink:hn((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Cn.lstat(t,((u,o)=>{!u&&o.isSymbolicLink()?Promise.all([Cn.stat(e),Cn.stat(t)]).then((([u,o])=>{if(bn(u,o))return r(null);_n(e,t,n,r)})):_n(e,t,n,r)}))})),createSymlinkSync:function(e,t,n){let r;try{r=Cn.lstatSync(t)}catch{}if(r&&r.isSymbolicLink()){const n=Cn.statSync(e),r=Cn.statSync(t);if(bn(n,r))return}const u=vn(e,t);e=u.toDst,n=wn(u.toCwd,n);const o=yn.dirname(t);return Cn.existsSync(o)||gn(o),Cn.symlinkSync(e,t,n)}};const{createFile:Pn,createFileSync:kn}=nn,{createLink:xn,createLinkSync:Nn}=ln,{createSymlink:In,createSymlinkSync:Tn}=Bn;var Rn={createFile:Pn,createFileSync:kn,ensureFile:Pn,ensureFileSync:kn,createLink:xn,createLinkSync:Nn,ensureLink:xn,ensureLinkSync:Nn,createSymlink:In,createSymlinkSync:Tn,ensureSymlink:In,ensureSymlinkSync:Tn};var Mn={stringify:function(e,{EOL:t="\n",finalEOL:n=!0,replacer:r=null,spaces:u}={}){const o=n?t:"";return JSON.stringify(e,r,u).replace(/\n/g,t)+o},stripBom:function(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e.replace(/^\uFEFF/,"")}};let Ln;try{Ln=we}catch(e){Ln=D.default}const jn=re,{stringify:$n,stripBom:Hn}=Mn;const Jn=jn.fromPromise((async function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;let u,o=await jn.fromCallback(n.readFile)(e,t);o=Hn(o);try{u=JSON.parse(o,t?t.reviver:null)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}return u}));const Gn=jn.fromPromise((async function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);await jn.fromCallback(r.writeFile)(e,u,n)}));const Vn={readFile:Jn,readFileSync:function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;try{let r=n.readFileSync(e,t);return r=Hn(r),JSON.parse(r,t.reviver)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}},writeFile:Gn,writeFileSync:function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);return r.writeFileSync(e,u,n)}};var Un={readJson:Vn.readFile,readJsonSync:Vn.readFileSync,writeJson:Vn.writeFile,writeJsonSync:Vn.writeFileSync};const Wn=re.fromCallback,zn=we,Kn=p.default,qn=$e,Yn=Ge.pathExists;var Xn={outputFile:Wn((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Kn.dirname(e);Yn(u,((o,i)=>o?r(o):i?zn.writeFile(e,t,n,r):void qn.mkdirs(u,(u=>{if(u)return r(u);zn.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Kn.dirname(e);if(zn.existsSync(n))return zn.writeFileSync(e,...t);qn.mkdirsSync(n),zn.writeFileSync(e,...t)}};const{stringify:Zn}=Mn,{outputFile:Qn}=Xn;var er=async function(e,t,n={}){const r=Zn(t,n);await Qn(e,r,n)};const{stringify:tr}=Mn,{outputFileSync:nr}=Xn;var rr=function(e,t,n){const r=tr(t,n);nr(e,r,n)};const ur=re.fromPromise,or=Un;or.outputJson=ur(er),or.outputJsonSync=rr,or.outputJSON=or.outputJson,or.outputJSONSync=or.outputJsonSync,or.writeJSON=or.writeJson,or.writeJSONSync=or.writeJsonSync,or.readJSON=or.readJson,or.readJSONSync=or.readJsonSync;var ir=or;const sr=we,cr=p.default,ar=Ot.copy,lr=Gt.remove,fr=$e.mkdirp,dr=Ge.pathExists,Dr=et;function pr(e,t,n,r,u){return r?Er(e,t,n,u):n?lr(t,(r=>r?u(r):Er(e,t,n,u))):void dr(t,((r,o)=>r?u(r):o?u(new Error("dest already exists.")):Er(e,t,n,u)))}function Er(e,t,n,r){sr.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};ar(e,t,u,(t=>t?r(t):lr(e,r)))}(e,t,n,r):r()))}var mr=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;Dr.checkPaths(e,t,"move",n,((n,o)=>{if(n)return r(n);const{srcStat:i,isChangingCase:s=!1}=o;Dr.checkParentPaths(e,i,t,"move",(n=>n?r(n):function(e){const t=cr.dirname(e);return cr.parse(t).root===t}(t)?pr(e,t,u,s,r):void fr(cr.dirname(t),(n=>n?r(n):pr(e,t,u,s,r)))))}))};const hr=we,yr=p.default,Cr=Ot.copySync,Fr=Gt.removeSync,gr=$e.mkdirpSync,Ar=et;function vr(e,t,n){try{hr.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Cr(e,t,r),Fr(e)}(e,t,n)}}var Sr=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u,isChangingCase:o=!1}=Ar.checkPathsSync(e,t,"move",n);return Ar.checkParentPathsSync(e,u,t,"move"),function(e){const t=yr.dirname(e);return yr.parse(t).root===t}(t)||gr(yr.dirname(t)),function(e,t,n,r){if(r)return vr(e,t,n);if(n)return Fr(t),vr(e,t,n);if(hr.existsSync(t))throw new Error("dest already exists.");return vr(e,t,n)}(e,t,r,o)};var wr,Or,br,_r,Br,Pr={move:(0,re.fromCallback)(mr),moveSync:Sr},kr={...ne,...Ot,...Xt,...Rn,...ir,...$e,...Pr,...Xn,...Ge,...Gt},xr={},Nr={exports:{}},Ir={exports:{}};function Tr(){if(Or)return wr;Or=1;var e=1e3,t=60*e,n=60*t,r=24*n,u=7*r,o=365.25*r;function i(e,t,n,r){var u=t>=1.5*n;return Math.round(e/n)+" "+r+(u?"s":"")}return wr=function(s,c){c=c||{};var a=typeof s;if("string"===a&&s.length>0)return function(i){if((i=String(i)).length>100)return;var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(i);if(!s)return;var c=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*o;case"weeks":case"week":case"w":return c*u;case"days":case"day":case"d":return c*r;case"hours":case"hour":case"hrs":case"hr":case"h":return c*n;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(s);if("number"===a&&isFinite(s))return c.long?function(u){var o=Math.abs(u);if(o>=r)return i(u,o,r,"day");if(o>=n)return i(u,o,n,"hour");if(o>=t)return i(u,o,t,"minute");if(o>=e)return i(u,o,e,"second");return u+" ms"}(s):function(u){var o=Math.abs(u);if(o>=r)return Math.round(u/r)+"d";if(o>=n)return Math.round(u/n)+"h";if(o>=t)return Math.round(u/t)+"m";if(o>=e)return Math.round(u/e)+"s";return u+"ms"}(s);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(s))}}function Rr(){if(_r)return br;return _r=1,br=function(e){function t(e){let r,u,o,i=null;function s(...e){if(!s.enabled)return;const n=s,u=Number(new Date),o=u-(r||u);n.diff=o,n.prev=r,n.curr=u,r=u,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,u)=>{if("%%"===r)return"%";i++;const o=t.formatters[u];if("function"==typeof o){const t=e[i];r=o.call(n,t),e.splice(i,1),i--}return r})),t.formatArgs.call(n,e);(n.log||t.log).apply(n,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(u!==t.namespaces&&(u=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),u=r.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{const n=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(n+e),u=t.indexOf("--");return-1!==r&&(-1===u||r{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=function(){if($r)return jr;$r=1;const e=E.default,t=A.default,n=Vr(),{env:r}=process;let u;function o(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function i(t,o){if(0===u)return 0;if(n("color=16m")||n("color=full")||n("color=truecolor"))return 3;if(n("color=256"))return 2;if(t&&!o&&void 0===u)return 0;const i=u||0;if("dumb"===r.TERM)return i;if("win32"===process.platform){const t=e.release().split(".");return Number(t[0])>=10&&Number(t[2])>=10586?Number(t[2])>=14931?3:2:1}if("CI"in r)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((e=>e in r))||"codeship"===r.CI_NAME?1:i;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?1:0;if("truecolor"===r.COLORTERM)return 3;if("TERM_PROGRAM"in r){const e=parseInt((r.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(r.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(r.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?1:i}return n("no-color")||n("no-colors")||n("color=false")||n("color=never")?u=0:(n("color")||n("colors")||n("color=true")||n("color=always"))&&(u=1),"FORCE_COLOR"in r&&(u="true"===r.FORCE_COLOR?1:"false"===r.FORCE_COLOR?0:0===r.FORCE_COLOR.length?1:Math.min(parseInt(r.FORCE_COLOR,10),3)),jr={supportsColor:function(e){return o(i(e,e&&e.isTTY))},stdout:o(i(!0,t.isatty(1))),stderr:o(i(!0,t.isatty(2)))}}();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const n=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let r=process.env[t];return r=!!/^(yes|on|true|enabled)$/i.test(r)||!/^(no|off|false|disabled)$/i.test(r)&&("null"===r?null:Number(r)),e[n]=r,e}),{}),e.exports=Rr()(t);const{formatters:u}=e.exports;u.o=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},u.O=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts)}}(Gr,Gr.exports)),Gr.exports}Jr=Nr,"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?Jr.exports=(Br||(Br=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,u=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(u=r))})),t.splice(u,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Rr()(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Ir,Ir.exports)),Ir.exports):Jr.exports=Ur();var Wr=function(e){return(e=e||{}).circles?function(e){var t=[],n=[];return e.proto?function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o}:function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u)if(!1!==Object.hasOwnProperty.call(u,i)){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o};function r(e,r){for(var u=Object.keys(e),o=new Array(u.length),i=0;i!e,Qr=e=>e&&"object"==typeof e&&!Array.isArray(e),eu=(e,t,n)=>{(Array.isArray(t)?t:[t]).forEach((t=>{if(t)throw new Error(`Problem with log4js configuration: (${Kr.inspect(e,{depth:5})}) - ${n}`)}))};var tu={configure:e=>{qr("New configuration to be validated: ",e),eu(e,Zr(Qr(e)),"must be an object."),qr(`Calling pre-processing listeners (${Yr.length})`),Yr.forEach((t=>t(e))),qr("Configuration pre-processing finished."),qr(`Calling configuration listeners (${Xr.length})`),Xr.forEach((t=>t(e))),qr("Configuration finished.")},addListener:e=>{Xr.push(e),qr(`Added listener, now ${Xr.length} listeners`)},addPreProcessingListener:e=>{Yr.push(e),qr(`Added pre-processing listener, now ${Yr.length} listeners`)},throwExceptionIf:eu,anObject:Qr,anInteger:e=>e&&"number"==typeof e&&Number.isInteger(e),validIdentifier:e=>/^[A-Za-z][A-Za-z0-9_]*$/g.test(e),not:Zr},nu={exports:{}};!function(e){function t(e,t){for(var n=e.toString();n.length-1?s:c,l=n(u.getHours()),f=n(u.getMinutes()),d=n(u.getSeconds()),D=t(u.getMilliseconds(),3),p=function(e){var t=Math.abs(e),n=String(Math.floor(t/60)),r=String(t%60);return n=("0"+n).slice(-2),r=("0"+r).slice(-2),0===e?"Z":(e<0?"+":"-")+n+":"+r}(u.getTimezoneOffset());return r.replace(/dd/g,o).replace(/MM/g,i).replace(/y{1,4}/g,a).replace(/hh/g,l).replace(/mm/g,f).replace(/ss/g,d).replace(/SSS/g,D).replace(/O/g,p)}function u(e,t,n,r){e["set"+(r?"":"UTC")+t](n)}e.exports=r,e.exports.asString=r,e.exports.parse=function(t,n,r){if(!t)throw new Error("pattern must be supplied");return function(t,n,r){var o=t.indexOf("O")<0,i=!1,s=[{pattern:/y{1,4}/,regexp:"\\d{1,4}",fn:function(e,t){u(e,"FullYear",t,o)}},{pattern:/MM/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Month",t-1,o),e.getMonth()!==t-1&&(i=!0)}},{pattern:/dd/,regexp:"\\d{1,2}",fn:function(e,t){i&&u(e,"Month",e.getMonth()-1,o),u(e,"Date",t,o)}},{pattern:/hh/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Hours",t,o)}},{pattern:/mm/,regexp:"\\d\\d",fn:function(e,t){u(e,"Minutes",t,o)}},{pattern:/ss/,regexp:"\\d\\d",fn:function(e,t){u(e,"Seconds",t,o)}},{pattern:/SSS/,regexp:"\\d\\d\\d",fn:function(e,t){u(e,"Milliseconds",t,o)}},{pattern:/O/,regexp:"[+-]\\d{1,2}:?\\d{2}?|Z",fn:function(e,t){t="Z"===t?0:t.replace(":","");var n=Math.abs(t),r=(t>0?-1:1)*(n%100+60*Math.floor(n/100));e.setUTCMinutes(e.getUTCMinutes()+r)}}],c=s.reduce((function(e,t){return t.pattern.test(e.regexp)?(t.index=e.regexp.match(t.pattern).index,e.regexp=e.regexp.replace(t.pattern,"("+t.regexp+")")):t.index=-1,e}),{regexp:t,index:[]}),a=s.filter((function(e){return e.index>-1}));a.sort((function(e,t){return e.index-t.index}));var l=new RegExp(c.regexp).exec(n);if(l){var f=r||e.exports.now();return a.forEach((function(e,t){e.fn(f,l[t+1])})),f}throw new Error("String '"+n+"' could not be parsed as '"+t+"'")}(t,n,r)},e.exports.now=function(){return new Date},e.exports.ISO8601_FORMAT="yyyy-MM-ddThh:mm:ss.SSS",e.exports.ISO8601_WITH_TZ_OFFSET_FORMAT="yyyy-MM-ddThh:mm:ss.SSSO",e.exports.DATETIME_FORMAT="dd MM yyyy hh:mm:ss.SSS",e.exports.ABSOLUTETIME_FORMAT="hh:mm:ss.SSS"}(nu);const ru=nu.exports,uu=E.default,ou=F.default,iu=p.default,su={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[90,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[91,39],yellow:[33,39]};function cu(e){return e?`[${su[e][0]}m`:""}function au(e){return e?`[${su[e][1]}m`:""}function lu(e,t){return n=ou.format("[%s] [%s] %s - ",ru.asString(e.startTime),e.level.toString(),e.categoryName),cu(r=t)+n+au(r);var n,r}function fu(e){return lu(e)+ou.format(...e.data)}function du(e){return lu(e,e.level.colour)+ou.format(...e.data)}function Du(e){return ou.format(...e.data)}function pu(e){return e.data[0]}function Eu(e,t){const n=/%(-?[0-9]+)?(\.?-?[0-9]+)?([[\]cdhmnprzxXyflos%])(\{([^}]+)\})?|([^%]+)/;function r(e){return e&&e.pid?e.pid.toString():process.pid.toString()}e=e||"%r %p %c - %m%n";const u={c:function(e,t){let n=e.categoryName;if(t){const e=parseInt(t,10),r=n.split(".");ee&&(n=r.slice(-e).join(iu.sep))}return n},l:function(e){return e.lineNumber?`${e.lineNumber}`:""},o:function(e){return e.columnNumber?`${e.columnNumber}`:""},s:function(e){return e.callStack||""}};function o(e,t,n){return u[e](t,n)}function i(e,t,n){let r=e;return r=function(e,t){let n;return e?(n=parseInt(e.substr(1),10),n>0?t.slice(0,n):t.slice(n)):t}(t,r),r=function(e,t){let n;if(e)if("-"===e.charAt(0))for(n=parseInt(e.substr(1),10);t.lengthDu,basic:()=>fu,colored:()=>du,coloured:()=>du,pattern:e=>Eu(e&&e.pattern,e&&e.tokens),dummy:()=>pu};var hu={basicLayout:fu,messagePassThroughLayout:Du,patternLayout:Eu,colouredLayout:du,coloredLayout:du,dummyLayout:pu,addLayout(e,t){mu[e]=t},layout:(e,t)=>mu[e]&&mu[e](t)};const yu=tu,Cu=["white","grey","black","blue","cyan","green","magenta","red","yellow"];class Fu{constructor(e,t,n){this.level=e,this.levelStr=t,this.colour=n}toString(){return this.levelStr}static getLevel(e,t){return e?e instanceof Fu?e:(e instanceof Object&&e.levelStr&&(e=e.levelStr),Fu[e.toString().toUpperCase()]||t):t}static addLevels(e){if(e){Object.keys(e).forEach((t=>{const n=t.toUpperCase();Fu[n]=new Fu(e[t].value,n,e[t].colour);const r=Fu.levels.findIndex((e=>e.levelStr===n));r>-1?Fu.levels[r]=Fu[n]:Fu.levels.push(Fu[n])})),Fu.levels.sort(((e,t)=>e.level-t.level))}}isLessThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level<=e.level}isGreaterThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level>=e.level}isEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level===e.level}}Fu.levels=[],Fu.addLevels({ALL:{value:Number.MIN_VALUE,colour:"grey"},TRACE:{value:5e3,colour:"blue"},DEBUG:{value:1e4,colour:"cyan"},INFO:{value:2e4,colour:"green"},WARN:{value:3e4,colour:"yellow"},ERROR:{value:4e4,colour:"red"},FATAL:{value:5e4,colour:"magenta"},MARK:{value:9007199254740992,colour:"grey"},OFF:{value:Number.MAX_VALUE,colour:"grey"}}),yu.addListener((e=>{const t=e.levels;if(t){yu.throwExceptionIf(e,yu.not(yu.anObject(t)),"levels must be an object");Object.keys(t).forEach((n=>{yu.throwExceptionIf(e,yu.not(yu.validIdentifier(n)),`level name "${n}" is not a valid identifier (must start with a letter, only contain A-Z,a-z,0-9,_)`),yu.throwExceptionIf(e,yu.not(yu.anObject(t[n])),`level "${n}" must be an object`),yu.throwExceptionIf(e,yu.not(t[n].value),`level "${n}" must have a 'value' property`),yu.throwExceptionIf(e,yu.not(yu.anInteger(t[n].value)),`level "${n}".value must have an integer value`),yu.throwExceptionIf(e,yu.not(t[n].colour),`level "${n}" must have a 'colour' property`),yu.throwExceptionIf(e,yu.not(Cu.indexOf(t[n].colour)>-1),`level "${n}".colour must be one of ${Cu.join(", ")}`)}))}})),yu.addListener((e=>{Fu.addLevels(e.levels)}));var gu=Fu,Au={exports:{}},vu={};/*! (c) 2020 Andrea Giammarchi */ -const{parse:Su,stringify:wu}=JSON,{keys:Ou}=Object,bu=String,_u="string",Bu={},Pu="object",ku=(e,t)=>t,xu=e=>e instanceof bu?bu(e):e,Nu=(e,t)=>typeof t===_u?new bu(t):t,Iu=(e,t,n,r)=>{const u=[];for(let o=Ou(n),{length:i}=o,s=0;s{const r=bu(t.push(n)-1);return e.set(n,r),r},Ru=(e,t)=>{const n=Su(e,Nu).map(xu),r=n[0],u=t||ku,o=typeof r===Pu&&r?Iu(n,new Set,r,u):r;return u.call({"":o},"",o)};vu.parse=Ru;const Mu=(e,t,n)=>{const r=t&&typeof t===Pu?(e,n)=>""===e||-1Su(Mu(e));vu.fromJSON=e=>Ru(wu(e));const Lu=vu,ju=gu;class $u{constructor(e,t,n,r,u){this.startTime=new Date,this.categoryName=e,this.data=n,this.level=t,this.context=Object.assign({},r),this.pid=process.pid,u&&(this.functionName=u.functionName,this.fileName=u.fileName,this.lineNumber=u.lineNumber,this.columnNumber=u.columnNumber,this.callStack=u.callStack)}serialise(){const e=this.data.map((e=>(e&&e.message&&e.stack&&(e=Object.assign({message:e.message,stack:e.stack},e)),e)));return this.data=e,Lu.stringify(this)}static deserialise(e){let t;try{const n=Lu.parse(e);n.data=n.data.map((e=>{if(e&&e.message&&e.stack){const t=new Error(e);Object.keys(e).forEach((n=>{t[n]=e[n]})),e=t}return e})),t=new $u(n.categoryName,ju.getLevel(n.level.levelStr),n.data,n.context),t.startTime=new Date(n.startTime),t.pid=n.pid,t.cluster=n.cluster}catch(n){t=new $u("log4js",ju.ERROR,["Unable to parse log:",e,"because: ",n])}return t}}var Hu=$u;const Ju=Nr.exports("log4js:clustering"),Gu=Hu,Vu=tu;let Uu=!1,Wu=null;try{Wu=require("cluster")}catch(e){Ju("cluster module not present"),Uu=!0}const zu=[];let Ku=!1,qu="NODE_APP_INSTANCE";const Yu=()=>Ku&&"0"===process.env[qu],Xu=()=>Uu||Wu.isMaster||Yu(),Zu=e=>{zu.forEach((t=>t(e)))},Qu=(e,t)=>{if(Ju("cluster message received from worker ",e,": ",t),e.topic&&e.data&&(t=e,e=void 0),t&&t.topic&&"log4js:message"===t.topic){Ju("received message: ",t.data);const e=Gu.deserialise(t.data);Zu(e)}};Uu||Vu.addListener((e=>{zu.length=0,({pm2:Ku,disableClustering:Uu,pm2InstanceVar:qu="NODE_APP_INSTANCE"}=e),Ju(`clustering disabled ? ${Uu}`),Ju(`cluster.isMaster ? ${Wu&&Wu.isMaster}`),Ju(`pm2 enabled ? ${Ku}`),Ju(`pm2InstanceVar = ${qu}`),Ju(`process.env[${qu}] = ${process.env[qu]}`),Ku&&process.removeListener("message",Qu),Wu&&Wu.removeListener&&Wu.removeListener("message",Qu),Uu||e.disableClustering?Ju("Not listening for cluster messages, because clustering disabled."):Yu()?(Ju("listening for PM2 broadcast messages"),process.on("message",Qu)):Wu.isMaster?(Ju("listening for cluster messages"),Wu.on("message",Qu)):Ju("not listening for messages, because we are not a master process")}));var eo={onlyOnMaster:(e,t)=>Xu()?e():t,isMaster:Xu,send:e=>{Xu()?Zu(e):(Ku||(e.cluster={workerId:Wu.worker.id,worker:process.pid}),process.send({topic:"log4js:message",data:e.serialise()}))},onMessage:e=>{zu.push(e)}},to={};function no(e){if("number"==typeof e&&Number.isInteger(e))return e;const t={K:1024,M:1048576,G:1073741824},n=Object.keys(t),r=e.substr(e.length-1).toLocaleUpperCase(),u=e.substring(0,e.length-1).trim();if(n.indexOf(r)<0||!Number.isInteger(Number(u)))throw Error(`maxLogSize: "${e}" is invalid`);return u*t[r]}function ro(e){return function(e,t){const n=Object.assign({},t);return Object.keys(e).forEach((r=>{n[r]&&(n[r]=e[r](t[r]))})),n}({maxLogSize:no},e)}const uo={file:ro,fileSync:ro};to.modifyConfig=e=>uo[e.type]?uo[e.type](e):e;var oo={};const io=console.log.bind(console);oo.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{io(e(n,t))}}(n,e.timezoneOffset)};var so={};so.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stdout.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var co={};co.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stderr.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var ao={};ao.configure=function(e,t,n,r){const u=n(e.appender);return function(e,t,n,r){const u=r.getLevel(e),o=r.getLevel(t,r.FATAL);return e=>{const t=e.level;t.isGreaterThanOrEqualTo(u)&&t.isLessThanOrEqualTo(o)&&n(e)}}(e.level,e.maxLevel,u,r)};var lo={};const fo=Nr.exports("log4js:categoryFilter");lo.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return"string"==typeof e&&(e=[e]),n=>{fo(`Checking ${n.categoryName} against ${e}`),-1===e.indexOf(n.categoryName)&&(fo("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Do={};const po=Nr.exports("log4js:noLogFilter");Do.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return n=>{po(`Checking data: ${n.data} against filters: ${e}`),"string"==typeof e&&(e=[e]),e=e.filter((e=>null!=e&&""!==e));const r=new RegExp(e.join("|"),"i");(0===e.length||n.data.findIndex((e=>r.test(e)))<0)&&(po("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Eo={},mo={exports:{}},ho={},yo={fromCallback:function(e){return Object.defineProperty((function(){if("function"!=typeof arguments[arguments.length-1])return new Promise(((t,n)=>{arguments[arguments.length]=(e,r)=>{if(e)return n(e);t(r)},arguments.length++,e.apply(this,arguments)}));e.apply(this,arguments)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(){const t=arguments[arguments.length-1];if("function"!=typeof t)return e.apply(this,arguments);e.apply(this,arguments).then((e=>t(null,e)),t)}),"name",{value:e.name})}};!function(e){const t=yo.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchown","lchmod","link","lstat","mkdir","mkdtemp","open","readFile","readdir","readlink","realpath","rename","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.keys(n).forEach((t=>{"promises"!==t&&(e[t]=n[t])})),r.forEach((r=>{e[r]=t(n[r])})),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.realpath.native&&(e.realpath.native=t(n.realpath.native))}(ho);const Co=p.default;function Fo(e){return(e=Co.normalize(Co.resolve(e)).split(Co.sep)).length>0?e[0]:null}const go=/[<>:"|?*]/;var Ao=function(e){const t=Fo(e);return e=e.replace(t,""),go.test(e)};const vo=we,So=p.default,wo=Ao,Oo=parseInt("0777",8);var bo=function e(t,n,r,u){if("function"==typeof n?(r=n,n={}):n&&"object"==typeof n||(n={mode:n}),"win32"===process.platform&&wo(t)){const e=new Error(t+" contains invalid WIN32 path characters.");return e.code="EINVAL",r(e)}let o=n.mode;const i=n.fs||vo;void 0===o&&(o=Oo&~process.umask()),u||(u=null),r=r||function(){},t=So.resolve(t),i.mkdir(t,o,(o=>{if(!o)return r(null,u=u||t);if("ENOENT"===o.code){if(So.dirname(t)===t)return r(o);e(So.dirname(t),n,((u,o)=>{u?r(u,o):e(t,n,r,o)}))}else i.stat(t,((e,t)=>{e||!t.isDirectory()?r(o,u):r(null,u)}))}))};const _o=we,Bo=p.default,Po=Ao,ko=parseInt("0777",8);var xo=function e(t,n,r){n&&"object"==typeof n||(n={mode:n});let u=n.mode;const o=n.fs||_o;if("win32"===process.platform&&Po(t)){const e=new Error(t+" contains invalid WIN32 path characters.");throw e.code="EINVAL",e}void 0===u&&(u=ko&~process.umask()),r||(r=null),t=Bo.resolve(t);try{o.mkdirSync(t,u),r=r||t}catch(u){if("ENOENT"===u.code){if(Bo.dirname(t)===t)throw u;r=e(Bo.dirname(t),n,r),e(t,n,r)}else{let e;try{e=o.statSync(t)}catch(e){throw u}if(!e.isDirectory())throw u}}return r};const No=(0,yo.fromCallback)(bo);var Io={mkdirs:No,mkdirsSync:xo,mkdirp:No,mkdirpSync:xo,ensureDir:No,ensureDirSync:xo};const To=we;E.default,p.default;var Ro=function(e,t,n,r){To.open(e,"r+",((e,u)=>{if(e)return r(e);To.futimes(u,t,n,(e=>{To.close(u,(t=>{r&&r(e||t)}))}))}))},Mo=function(e,t,n){const r=To.openSync(e,"r+");return To.futimesSync(r,t,n),To.closeSync(r)};const Lo=we,jo=p.default,$o=10,Ho=5,Jo=0,Go=process.versions.node.split("."),Vo=Number.parseInt(Go[0],10),Uo=Number.parseInt(Go[1],10),Wo=Number.parseInt(Go[2],10);function zo(){if(Vo>$o)return!0;if(Vo===$o){if(Uo>Ho)return!0;if(Uo===Ho&&Wo>=Jo)return!0}return!1}function Ko(e,t){const n=jo.resolve(e).split(jo.sep).filter((e=>e)),r=jo.resolve(t).split(jo.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function qo(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var Yo,Xo,Zo={checkPaths:function(e,t,n,r){!function(e,t,n){zo()?Lo.stat(e,{bigint:!0},((e,r)=>{if(e)return n(e);Lo.stat(t,{bigint:!0},((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))})):Lo.stat(e,((e,r)=>{if(e)return n(e);Lo.stat(t,((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))}))}(e,t,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;return s&&s.ino&&s.dev&&s.ino===i.ino&&s.dev===i.dev?r(new Error("Source and destination must not be the same.")):i.isDirectory()&&Ko(e,t)?r(new Error(qo(e,t,n))):r(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n){const{srcStat:r,destStat:u}=function(e,t){let n,r;n=zo()?Lo.statSync(e,{bigint:!0}):Lo.statSync(e);try{r=zo()?Lo.statSync(t,{bigint:!0}):Lo.statSync(t)}catch(e){if("ENOENT"===e.code)return{srcStat:n,destStat:null};throw e}return{srcStat:n,destStat:r}}(e,t);if(u&&u.ino&&u.dev&&u.ino===r.ino&&u.dev===r.dev)throw new Error("Source and destination must not be the same.");if(r.isDirectory()&&Ko(e,t))throw new Error(qo(e,t,n));return{srcStat:r,destStat:u}},checkParentPaths:function e(t,n,r,u,o){const i=jo.resolve(jo.dirname(t)),s=jo.resolve(jo.dirname(r));if(s===i||s===jo.parse(s).root)return o();zo()?Lo.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o))):Lo.stat(s,((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=jo.resolve(jo.dirname(t)),i=jo.resolve(jo.dirname(r));if(i===o||i===jo.parse(i).root)return;let s;try{s=zo()?Lo.statSync(i,{bigint:!0}):Lo.statSync(i)}catch(e){if("ENOENT"===e.code)return;throw e}if(s.ino&&s.dev&&s.ino===n.ino&&s.dev===n.dev)throw new Error(qo(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ko};const Qo=we,ei=p.default,ti=Io.mkdirsSync,ni=Mo,ri=Zo;function ui(e,t,n,r){if(!r.filter||r.filter(t,n))return function(e,t,n,r){const u=r.dereference?Qo.statSync:Qo.lstatSync,o=u(t);if(o.isDirectory())return function(e,t,n,r,u){if(!t)return function(e,t,n,r){return Qo.mkdirSync(n),ii(t,n,r),Qo.chmodSync(n,e.mode)}(e,n,r,u);if(t&&!t.isDirectory())throw new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`);return ii(n,r,u)}(o,e,t,n,r);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return Qo.unlinkSync(n),oi(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):oi(e,n,r,u)}(o,e,t,n,r);if(o.isSymbolicLink())return function(e,t,n,r){let u=Qo.readlinkSync(t);r.dereference&&(u=ei.resolve(process.cwd(),u));if(e){let e;try{e=Qo.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return Qo.symlinkSync(u,n);throw e}if(r.dereference&&(e=ei.resolve(process.cwd(),e)),ri.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(Qo.statSync(n).isDirectory()&&ri.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return Qo.unlinkSync(t),Qo.symlinkSync(e,t)}(u,n)}return Qo.symlinkSync(u,n)}(e,t,n,r)}(e,t,n,r)}function oi(e,t,n,r){return"function"==typeof Qo.copyFileSync?(Qo.copyFileSync(t,n),Qo.chmodSync(n,e.mode),r.preserveTimestamps?ni(n,e.atime,e.mtime):void 0):function(e,t,n,r){const u=65536,o=(Xo?Yo:(Xo=1,Yo=function(e){if("function"==typeof Buffer.allocUnsafe)try{return Buffer.allocUnsafe(e)}catch(t){return new Buffer(e)}return new Buffer(e)}))(u),i=Qo.openSync(t,"r"),s=Qo.openSync(n,"w",e.mode);let c=0;for(;cfunction(e,t,n,r){const u=ei.join(t,e),o=ei.join(n,e),{destStat:i}=ri.checkPathsSync(u,o,"copy");return ui(i,u,o,r)}(r,e,t,n)))}var si=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=ri.checkPathsSync(e,t,"copy");return ri.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ei.dirname(n);Qo.existsSync(u)||ti(u);return ui(e,t,n,r)}(u,e,t,n)},ci={copySync:si};const ai=yo.fromPromise,li=ho;var fi={pathExists:ai((function(e){return li.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:li.existsSync};const di=we,Di=p.default,pi=Io.mkdirs,Ei=fi.pathExists,mi=Ro,hi=Zo;function yi(e,t,n,r,u){const o=Di.dirname(n);Ei(o,((i,s)=>i?u(i):s?Fi(e,t,n,r,u):void pi(o,(o=>o?u(o):Fi(e,t,n,r,u)))))}function Ci(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function Fi(e,t,n,r,u){return r.filter?Ci(gi,e,t,n,r,u):gi(e,t,n,r,u)}function gi(e,t,n,r,u){(r.dereference?di.stat:di.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){if(!t)return function(e,t,n,r,u){di.mkdir(n,(o=>{if(o)return u(o);Si(t,n,r,(t=>t?u(t):di.chmod(n,e.mode,u)))}))}(e,n,r,u,o);if(t&&!t.isDirectory())return o(new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`));return Si(n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();di.unlink(n,(o=>o?u(o):Ai(e,t,n,r,u)))}(e,n,r,u,o):Ai(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){di.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=Di.resolve(process.cwd(),o)),e?void di.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?di.symlink(o,n,u):u(t):(r.dereference&&(i=Di.resolve(process.cwd(),i)),hi.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&hi.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){di.unlink(t,(r=>r?n(r):di.symlink(e,t,n)))}(o,n,u)))):di.symlink(o,n,u))))}(e,t,n,r,u):void 0))}function Ai(e,t,n,r,u){return"function"==typeof di.copyFile?di.copyFile(t,n,(t=>t?u(t):vi(e,n,r,u))):function(e,t,n,r,u){const o=di.createReadStream(t);o.on("error",(e=>u(e))).once("open",(()=>{const t=di.createWriteStream(n,{mode:e.mode});t.on("error",(e=>u(e))).on("open",(()=>o.pipe(t))).once("close",(()=>vi(e,n,r,u)))}))}(e,t,n,r,u)}function vi(e,t,n,r){di.chmod(t,e.mode,(u=>u?r(u):n.preserveTimestamps?mi(t,e.atime,e.mtime,r):r()))}function Si(e,t,n,r){di.readdir(e,((u,o)=>u?r(u):wi(o,e,t,n,r)))}function wi(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=Di.join(n,t),s=Di.join(r,t);hi.checkPaths(i,s,"copy",((t,c)=>{if(t)return o(t);const{destStat:a}=c;Fi(a,i,s,u,(t=>t?o(t):wi(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Oi=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),hi.checkPaths(e,t,"copy",((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;hi.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?Ci(yi,s,e,t,n,r):yi(s,e,t,n,r)))}))};var bi={copy:(0,yo.fromCallback)(Oi)};const _i=we,Bi=p.default,Pi=g.default,ki="win32"===process.platform;function xi(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||_i[t],e[t+="Sync"]=e[t]||_i[t]})),e.maxBusyTries=e.maxBusyTries||3}function Ni(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi.strictEqual(typeof n,"function","rimraf: callback function required"),Pi(t,"rimraf: invalid options argument provided"),Pi.strictEqual(typeof t,"object","rimraf: options should be object"),xi(t),Ii(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rIi(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Ii(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&ki?Ti(e,t,r,n):u&&u.isDirectory()?Mi(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return ki?Ti(e,t,r,n):Mi(e,t,r,n);if("EISDIR"===r.code)return Mi(e,t,r,n)}return n(r)}))))}function Ti(e,t,n,r){Pi(e),Pi(t),Pi("function"==typeof r),n&&Pi(n instanceof Error),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Mi(e,t,n,r):t.unlink(e,r)}))}))}function Ri(e,t,n){let r;Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?ji(e,t,n):t.unlinkSync(e)}function Mi(e,t,n,r){Pi(e),Pi(t),n&&Pi(n instanceof Error),Pi("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{Ni(Bi.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Li(e,t){let n;xi(t=t||{}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi(t,"rimraf: missing options"),Pi.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&ki&&Ri(e,t,n)}try{n&&n.isDirectory()?ji(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return ki?Ri(e,t,n):ji(e,t,n);if("EISDIR"!==n.code)throw n;ji(e,t,n)}}function ji(e,t,n){Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Pi(e),Pi(t),t.readdirSync(e).forEach((n=>Li(Bi.join(e,n),t))),!ki){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch(e){}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var $i=Ni;Ni.sync=Li;const Hi=$i;var Ji={remove:(0,yo.fromCallback)(Hi),removeSync:Hi.sync};const Gi=yo.fromCallback,Vi=we,Ui=p.default,Wi=Io,zi=Ji,Ki=Gi((function(e,t){t=t||function(){},Vi.readdir(e,((n,r)=>{if(n)return Wi.mkdirs(e,t);r=r.map((t=>Ui.join(e,t))),function e(){const n=r.pop();if(!n)return t();zi.remove(n,(n=>{if(n)return t(n);e()}))}()}))}));function qi(e){let t;try{t=Vi.readdirSync(e)}catch(t){return Wi.mkdirsSync(e)}t.forEach((t=>{t=Ui.join(e,t),zi.removeSync(t)}))}var Yi={emptyDirSync:qi,emptydirSync:qi,emptyDir:Ki,emptydir:Ki};const Xi=yo.fromCallback,Zi=p.default,Qi=we,es=Io,ts=fi.pathExists;var ns={createFile:Xi((function(e,t){function n(){Qi.writeFile(e,"",(e=>{if(e)return t(e);t()}))}Qi.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Zi.dirname(e);ts(o,((e,r)=>e?t(e):r?n():void es.mkdirs(o,(e=>{if(e)return t(e);n()}))))}))})),createFileSync:function(e){let t;try{t=Qi.statSync(e)}catch(e){}if(t&&t.isFile())return;const n=Zi.dirname(e);Qi.existsSync(n)||es.mkdirsSync(n),Qi.writeFileSync(e,"")}};const rs=yo.fromCallback,us=p.default,os=we,is=Io,ss=fi.pathExists;var cs={createLink:rs((function(e,t,n){function r(e,t){os.link(e,t,(e=>{if(e)return n(e);n(null)}))}ss(t,((u,o)=>u?n(u):o?n(null):void os.lstat(e,(u=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);const o=us.dirname(t);ss(o,((u,i)=>u?n(u):i?r(e,t):void is.mkdirs(o,(u=>{if(u)return n(u);r(e,t)}))))}))))})),createLinkSync:function(e,t){if(os.existsSync(t))return;try{os.lstatSync(e)}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const n=us.dirname(t);return os.existsSync(n)||is.mkdirsSync(n),os.linkSync(e,t)}};const as=p.default,ls=we,fs=fi.pathExists;var ds={symlinkPaths:function(e,t,n){if(as.isAbsolute(e))return ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=as.dirname(t),u=as.join(r,e);return fs(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:as.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(as.isAbsolute(e)){if(n=ls.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=as.dirname(t),u=as.join(r,e);if(n=ls.existsSync(u),n)return{toCwd:u,toDst:e};if(n=ls.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:as.relative(r,e)}}}};const Ds=we;var ps={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);Ds.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=Ds.lstatSync(e)}catch(e){return"file"}return n&&n.isDirectory()?"dir":"file"}};const Es=yo.fromCallback,ms=p.default,hs=we,ys=Io.mkdirs,Cs=Io.mkdirsSync,Fs=ds.symlinkPaths,gs=ds.symlinkPathsSync,As=ps.symlinkType,vs=ps.symlinkTypeSync,Ss=fi.pathExists;var ws={createSymlink:Es((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Ss(t,((u,o)=>u?r(u):o?r(null):void Fs(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,As(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=ms.dirname(t);Ss(o,((n,i)=>n?r(n):i?hs.symlink(e,t,u,r):void ys(o,(n=>{if(n)return r(n);hs.symlink(e,t,u,r)}))))}))}))))})),createSymlinkSync:function(e,t,n){if(hs.existsSync(t))return;const r=gs(e,t);e=r.toDst,n=vs(r.toCwd,n);const u=ms.dirname(t);return hs.existsSync(u)||Cs(u),hs.symlinkSync(e,t,n)}};var Os,bs={createFile:ns.createFile,createFileSync:ns.createFileSync,ensureFile:ns.createFile,ensureFileSync:ns.createFileSync,createLink:cs.createLink,createLinkSync:cs.createLinkSync,ensureLink:cs.createLink,ensureLinkSync:cs.createLinkSync,createSymlink:ws.createSymlink,createSymlinkSync:ws.createSymlinkSync,ensureSymlink:ws.createSymlink,ensureSymlinkSync:ws.createSymlinkSync};try{Os=we}catch(e){Os=D.default}function _s(e,t){var n,r="\n";return"object"==typeof t&&null!==t&&(t.spaces&&(n=t.spaces),t.EOL&&(r=t.EOL)),JSON.stringify(e,t?t.replacer:null,n).replace(/\n/g,r)+r}function Bs(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e=e.replace(/^\uFEFF/,"")}var Ps={readFile:function(e,t,n){null==n&&(n=t,t={}),"string"==typeof t&&(t={encoding:t});var r=(t=t||{}).fs||Os,u=!0;"throws"in t&&(u=t.throws),r.readFile(e,t,(function(r,o){if(r)return n(r);var i;o=Bs(o);try{i=JSON.parse(o,t?t.reviver:null)}catch(t){return u?(t.message=e+": "+t.message,n(t)):n(null,null)}n(null,i)}))},readFileSync:function(e,t){"string"==typeof(t=t||{})&&(t={encoding:t});var n=t.fs||Os,r=!0;"throws"in t&&(r=t.throws);try{var u=n.readFileSync(e,t);return u=Bs(u),JSON.parse(u,t.reviver)}catch(t){if(r)throw t.message=e+": "+t.message,t;return null}},writeFile:function(e,t,n,r){null==r&&(r=n,n={});var u=(n=n||{}).fs||Os,o="";try{o=_s(t,n)}catch(e){return void(r&&r(e,null))}u.writeFile(e,o,n,r)},writeFileSync:function(e,t,n){var r=(n=n||{}).fs||Os,u=_s(t,n);return r.writeFileSync(e,u,n)}},ks=Ps;const xs=yo.fromCallback,Ns=ks;var Is={readJson:xs(Ns.readFile),readJsonSync:Ns.readFileSync,writeJson:xs(Ns.writeFile),writeJsonSync:Ns.writeFileSync};const Ts=p.default,Rs=Io,Ms=fi.pathExists,Ls=Is;var js=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=Ts.dirname(e);Ms(u,((o,i)=>o?r(o):i?Ls.writeJson(e,t,n,r):void Rs.mkdirs(u,(u=>{if(u)return r(u);Ls.writeJson(e,t,n,r)}))))};const $s=we,Hs=p.default,Js=Io,Gs=Is;var Vs=function(e,t,n){const r=Hs.dirname(e);$s.existsSync(r)||Js.mkdirsSync(r),Gs.writeJsonSync(e,t,n)};const Us=yo.fromCallback,Ws=Is;Ws.outputJson=Us(js),Ws.outputJsonSync=Vs,Ws.outputJSON=Ws.outputJson,Ws.outputJSONSync=Ws.outputJsonSync,Ws.writeJSON=Ws.writeJson,Ws.writeJSONSync=Ws.writeJsonSync,Ws.readJSON=Ws.readJson,Ws.readJSONSync=Ws.readJsonSync;var zs=Ws;const Ks=we,qs=p.default,Ys=ci.copySync,Xs=Ji.removeSync,Zs=Io.mkdirpSync,Qs=Zo;function ec(e,t,n){try{Ks.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Ys(e,t,r),Xs(e)}(e,t,n)}}var tc=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u}=Qs.checkPathsSync(e,t,"move");return Qs.checkParentPathsSync(e,u,t,"move"),Zs(qs.dirname(t)),function(e,t,n){if(n)return Xs(t),ec(e,t,n);if(Ks.existsSync(t))throw new Error("dest already exists.");return ec(e,t,n)}(e,t,r)},nc={moveSync:tc};const rc=we,uc=p.default,oc=bi.copy,ic=Ji.remove,sc=Io.mkdirp,cc=fi.pathExists,ac=Zo;function lc(e,t,n,r){rc.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};oc(e,t,u,(t=>t?r(t):ic(e,r)))}(e,t,n,r):r()))}var fc=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;ac.checkPaths(e,t,"move",((n,o)=>{if(n)return r(n);const{srcStat:i}=o;ac.checkParentPaths(e,i,t,"move",(n=>{if(n)return r(n);sc(uc.dirname(t),(n=>n?r(n):function(e,t,n,r){if(n)return ic(t,(u=>u?r(u):lc(e,t,n,r)));cc(t,((u,o)=>u?r(u):o?r(new Error("dest already exists.")):lc(e,t,n,r)))}(e,t,u,r)))}))}))};var dc={move:(0,yo.fromCallback)(fc)};const Dc=yo.fromCallback,pc=we,Ec=p.default,mc=Io,hc=fi.pathExists;var yc={outputFile:Dc((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Ec.dirname(e);hc(u,((o,i)=>o?r(o):i?pc.writeFile(e,t,n,r):void mc.mkdirs(u,(u=>{if(u)return r(u);pc.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Ec.dirname(e);if(pc.existsSync(n))return pc.writeFileSync(e,...t);mc.mkdirsSync(n),pc.writeFileSync(e,...t)}};!function(e){e.exports=Object.assign({},ho,ci,bi,Yi,bs,zs,Io,nc,dc,yc,fi,Ji);const t=D.default;Object.getOwnPropertyDescriptor(t,"promises")&&Object.defineProperty(e.exports,"promises",{get:()=>t.promises})}(mo);const Cc=Nr.exports("streamroller:fileNameFormatter"),Fc=p.default;const gc=Nr.exports("streamroller:fileNameParser"),Ac=nu.exports;const vc=Nr.exports("streamroller:moveAndMaybeCompressFile"),Sc=mo.exports,wc=v.default;var Oc=async(e,t,n)=>{if(n=function(e){const t={mode:parseInt("0600",8),compress:!1},n=Object.assign({},t,e);return vc(`_parseOption: moveAndMaybeCompressFile called with option=${JSON.stringify(n)}`),n}(n),e!==t){if(await Sc.pathExists(e))if(vc(`moveAndMaybeCompressFile: moving file from ${e} to ${t} ${n.compress?"with":"without"} compress`),n.compress)await new Promise(((r,u)=>{let o=!1;const i=Sc.createWriteStream(t,{mode:n.mode,flags:"wx"}).on("open",(()=>{o=!0;const t=Sc.createReadStream(e).on("open",(()=>{t.pipe(wc.createGzip()).pipe(i)})).on("error",(t=>{vc(`moveAndMaybeCompressFile: error reading ${e}`,t),i.destroy(t)}))})).on("finish",(()=>{vc(`moveAndMaybeCompressFile: finished compressing ${t}, deleting ${e}`),Sc.unlink(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error deleting ${e}, truncating instead`,t),Sc.truncate(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error truncating ${e}`,t),u(t)}))}))})).on("error",(e=>{o?(vc(`moveAndMaybeCompressFile: error writing ${t}, deleting`,e),Sc.unlink(t).then((()=>{u(e)})).catch((e=>{vc(`moveAndMaybeCompressFile: error deleting ${t}`,e),u(e)}))):(vc(`moveAndMaybeCompressFile: error creating ${t}`,e),u(e))}))})).catch((()=>{}));else{vc(`moveAndMaybeCompressFile: renaming ${e} to ${t}`);try{await Sc.move(e,t,{overwrite:!0})}catch(n){if(vc(`moveAndMaybeCompressFile: error renaming ${e} to ${t}`,n),"ENOENT"!==n.code){vc("moveAndMaybeCompressFile: trying copy+truncate instead");try{await Sc.copy(e,t,{overwrite:!0}),await Sc.truncate(e)}catch(e){vc("moveAndMaybeCompressFile: error copy+truncate",e)}}}}}else vc("moveAndMaybeCompressFile: source and target are the same, not doing anything")};const bc=Nr.exports("streamroller:RollingFileWriteStream"),_c=mo.exports,Bc=p.default,Pc=E.default,kc=()=>new Date,xc=nu.exports,{Writable:Nc}=C.default,Ic=({file:e,keepFileExt:t,needsIndex:n,alwaysIncludeDate:r,compress:u,fileNameSep:o})=>{let i=o||".";const s=Fc.join(e.dir,e.name),c=t=>t+e.ext,a=(e,t,r)=>!n&&r||!t?e:e+i+t,l=(e,t,n)=>(t>0||r)&&n?e+i+n:e,f=(e,t)=>t&&u?e+".gz":e,d=t?[l,a,c,f]:[c,l,a,f];return({date:e,index:t})=>(Cc(`_formatFileName: date=${e}, index=${t}`),d.reduce(((n,r)=>r(n,t,e)),s))},Tc=({file:e,keepFileExt:t,pattern:n,fileNameSep:r})=>{let u=r||".";const o="__NOT_MATCHING__";let i=[(e,t)=>e.endsWith(".gz")?(gc("it is gzipped"),t.isCompressed=!0,e.slice(0,-1*".gz".length)):e,t?t=>t.startsWith(e.name)&&t.endsWith(e.ext)?(gc("it starts and ends with the right things"),t.slice(e.name.length+1,-1*e.ext.length)):o:t=>t.startsWith(e.base)?(gc("it starts with the right things"),t.slice(e.base.length+1)):o,n?(e,t)=>{const r=e.split(u);let o=r[r.length-1];gc("items: ",r,", indexStr: ",o);let i=e;void 0!==o&&o.match(/^\d+$/)?(i=e.slice(0,-1*(o.length+1)),gc(`dateStr is ${i}`),n&&!i&&(i=o,o="0")):o="0";try{const r=Ac.parse(n,i,new Date(0,0));return Ac.asString(n,r)!==i?e:(t.index=parseInt(o,10),t.date=i,t.timestamp=r.getTime(),"")}catch(t){return gc(`Problem parsing ${i} as ${n}, error was: `,t),e}}:(e,t)=>e.match(/^\d+$/)?(gc("it has an index"),t.index=parseInt(e,10),""):e];return e=>{let t={filename:e,index:0,isCompressed:!1};return i.reduce(((e,n)=>n(e,t)),e)?null:t}},Rc=Oc;var Mc=class extends Nc{constructor(e,t){if(bc(`constructor: creating RollingFileWriteStream. path=${e}`),"string"!=typeof e||0===e.length)throw new Error(`Invalid filename: ${e}`);if(e.endsWith(Bc.sep))throw new Error(`Filename is a directory: ${e}`);0===e.indexOf(`~${Bc.sep}`)&&(e=e.replace("~",Pc.homedir())),super(t),this.options=this._parseOption(t),this.fileObject=Bc.parse(e),""===this.fileObject.dir&&(this.fileObject=Bc.parse(Bc.join(process.cwd(),e))),this.fileFormatter=Ic({file:this.fileObject,alwaysIncludeDate:this.options.alwaysIncludePattern,needsIndex:this.options.maxSize 0`)}else delete n.maxSize;if(n.numBackups||0===n.numBackups){if(n.numBackups<0)throw new Error(`options.numBackups (${n.numBackups}) should be >= 0`);if(n.numBackups>=Number.MAX_SAFE_INTEGER)throw new Error(`options.numBackups (${n.numBackups}) should be < Number.MAX_SAFE_INTEGER`);n.numToKeep=n.numBackups+1}else if(n.numToKeep<=0)throw new Error(`options.numToKeep (${n.numToKeep}) should be > 0`);return bc(`_parseOption: creating stream with option=${JSON.stringify(n)}`),n}_final(e){this.currentFileStream.end("",this.options.encoding,e)}_write(e,t,n){this._shouldRoll().then((()=>{bc(`_write: writing chunk. file=${this.currentFileStream.path} state=${JSON.stringify(this.state)} chunk=${e}`),this.currentFileStream.write(e,t,(t=>{this.state.currentSize+=e.length,n(t)}))}))}async _shouldRoll(){(this._dateChanged()||this._tooBig())&&(bc(`_shouldRoll: rolling because dateChanged? ${this._dateChanged()} or tooBig? ${this._tooBig()}`),await this._roll())}_dateChanged(){return this.state.currentDate&&this.state.currentDate!==xc(this.options.pattern,kc())}_tooBig(){return this.state.currentSize>=this.options.maxSize}_roll(){return bc("_roll: closing the current stream"),new Promise(((e,t)=>{this.currentFileStream.end("",this.options.encoding,(()=>{this._moveOldFiles().then(e).catch(t)}))}))}async _moveOldFiles(){const e=await this._getExistingFiles();for(let t=(this.state.currentDate?e.filter((e=>e.date===this.state.currentDate)):e).length;t>=0;t--){bc(`_moveOldFiles: i = ${t}`);const e=this.fileFormatter({date:this.state.currentDate,index:t}),n=this.fileFormatter({date:this.state.currentDate,index:t+1}),r={compress:this.options.compress&&0===t,mode:this.options.mode};await Rc(e,n,r)}this.state.currentSize=0,this.state.currentDate=this.state.currentDate?xc(this.options.pattern,kc()):null,bc(`_moveOldFiles: finished rolling files. state=${JSON.stringify(this.state)}`),this._renewWriteStream(),await new Promise(((e,t)=>{this.currentFileStream.write("","utf8",(()=>{this._clean().then(e).catch(t)}))}))}async _getExistingFiles(){const e=await _c.readdir(this.fileObject.dir).catch((()=>[]));bc(`_getExistingFiles: files=${e}`);const t=e.map((e=>this.fileNameParser(e))).filter((e=>e)),n=e=>(e.timestamp?e.timestamp:kc().getTime())-e.index;return t.sort(((e,t)=>n(e)-n(t))),t}_renewWriteStream(){const e=this.fileFormatter({date:this.state.currentDate,index:0}),t=e=>{try{return _c.mkdirSync(e,{recursive:!0})}catch(n){if("ENOENT"===n.code)return t(Bc.dirname(e)),t(e);if("EEXIST"!==n.code&&"EROFS"!==n.code)throw n;try{if(_c.statSync(e).isDirectory())return e;throw n}catch(e){throw n}}};t(this.fileObject.dir);const n={flags:this.options.flags,encoding:this.options.encoding,mode:this.options.mode};var r,u;_c.appendFileSync(e,"",(r={...n},u="flags",r["flag"]=r[u],delete r[u],r)),this.currentFileStream=_c.createWriteStream(e,n),this.currentFileStream.on("error",(e=>{this.emit("error",e)}))}async _clean(){const e=await this._getExistingFiles();if(bc(`_clean: numToKeep = ${this.options.numToKeep}, existingFiles = ${e.length}`),bc("_clean: existing files are: ",e),this._tooManyFiles(e.length)){const n=e.slice(0,e.length-this.options.numToKeep).map((e=>Bc.format({dir:this.fileObject.dir,base:e.filename})));await(t=n,bc(`deleteFiles: files to delete: ${t}`),Promise.all(t.map((e=>_c.unlink(e).catch((t=>{bc(`deleteFiles: error when unlinking ${e}, ignoring. Error was ${t}`)}))))))}var t}_tooManyFiles(e){return this.options.numToKeep>0&&e>this.options.numToKeep}};const Lc=Mc;var jc=class extends Lc{constructor(e,t,n,r){r||(r={}),t&&(r.maxSize=t),r.numBackups||0===r.numBackups||(n||0===n||(n=1),r.numBackups=n),super(e,r),this.backups=r.numBackups,this.size=this.options.maxSize}get theStream(){return this.currentFileStream}};const $c=Mc;var Hc={RollingFileWriteStream:Mc,RollingFileStream:jc,DateRollingFileStream:class extends $c{constructor(e,t,n){t&&"object"==typeof t&&(n=t,t=null),n||(n={}),t||(t="yyyy-MM-dd"),n.pattern=t,n.numBackups||0===n.numBackups?n.daysToKeep=n.numBackups:(n.daysToKeep||0===n.daysToKeep?process.emitWarning("options.daysToKeep is deprecated due to the confusion it causes when used together with file size rolling. Please use options.numBackups instead.","DeprecationWarning","streamroller-DEP0001"):n.daysToKeep=1,n.numBackups=n.daysToKeep),super(e,n),this.mode=this.options.mode}get theStream(){return this.currentFileStream}}};const Jc=Nr.exports("log4js:file"),Gc=p.default,Vc=Hc,Uc=E.default.EOL;let Wc=!1;const zc=new Set;function Kc(){zc.forEach((e=>{e.sighupHandler()}))}function qc(e,t,n,r){const u=new Vc.RollingFileStream(e,t,n,r);return u.on("error",(t=>{console.error("log4js.fileAppender - Writing to file %s, error happened ",e,t)})),u.on("drain",(()=>{process.emit("log4js:pause",!1)})),u}Eo.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.mode=e.mode||384,function(e,t,n,r,u,o){e=Gc.normalize(e),Jc("Creating file appender (",e,", ",n,", ",r=r||0===r?r:5,", ",u,", ",o,")");let i=qc(e,n,r,u);const s=function(e){if(i.writable){if(!0===u.removeColor){const t=/\x1b[[0-9;]*m/g;e.data=e.data.map((e=>"string"==typeof e?e.replace(t,""):e))}i.write(t(e,o)+Uc,"utf8")||process.emit("log4js:pause",!0)}};return s.reopen=function(){i.end((()=>{i=qc(e,n,r,u)}))},s.sighupHandler=function(){Jc("SIGHUP handler called."),s.reopen()},s.shutdown=function(e){zc.delete(s),0===zc.size&&Wc&&(process.removeListener("SIGHUP",Kc),Wc=!1),i.end("","utf-8",e)},zc.add(s),Wc||(process.on("SIGHUP",Kc),Wc=!0),s}(e.filename,n,e.maxLogSize,e.backups,e,e.timezoneOffset)};var Yc={};const Xc=Hc,Zc=E.default.EOL;function Qc(e,t,n,r,u){r.maxSize=r.maxLogSize;const o=function(e,t,n){const r=new Xc.DateRollingFileStream(e,t,n);return r.on("error",(t=>{console.error("log4js.dateFileAppender - Writing to file %s, error happened ",e,t)})),r.on("drain",(()=>{process.emit("log4js:pause",!1)})),r}(e,t,r),i=function(e){o.writable&&(o.write(n(e,u)+Zc,"utf8")||process.emit("log4js:pause",!0))};return i.shutdown=function(e){o.end("","utf-8",e)},i}Yc.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.alwaysIncludePattern||(e.alwaysIncludePattern=!1),e.mode=e.mode||384,Qc(e.filename,e.pattern,n,e,e.timezoneOffset)};var ea={};const ta=Nr.exports("log4js:fileSync"),na=p.default,ra=D.default,ua=E.default.EOL||"\n";function oa(e,t){if(ra.existsSync(e))return;const n=ra.openSync(e,t.flags,t.mode);ra.closeSync(n)}class ia{constructor(e,t,n,r){ta("In RollingFileStream"),function(){if(!e||!t||t<=0)throw new Error("You must specify a filename and file size")}(),this.filename=e,this.size=t,this.backups=n,this.options=r,this.currentSize=0,this.currentSize=function(e){let t=0;try{t=ra.statSync(e).size}catch(t){oa(e,r)}return t}(this.filename)}shouldRoll(){return ta("should roll with current size %d, and max size %d",this.currentSize,this.size),this.currentSize>=this.size}roll(e){const t=this,n=new RegExp(`^${na.basename(e)}`);function r(e){return n.test(e)}function u(t){return parseInt(t.substring(`${na.basename(e)}.`.length),10)||0}function o(e,t){return u(e)>u(t)?1:u(e) ${e}.${r+1}`),ra.renameSync(na.join(na.dirname(e),n),`${e}.${r+1}`)}}ta("Rolling, rolling, rolling"),ta("Renaming the old files"),ra.readdirSync(na.dirname(e)).filter(r).sort(o).reverse().forEach(i)}write(e,t){const n=this;ta("in write"),this.shouldRoll()&&(this.currentSize=0,this.roll(this.filename)),ta("writing the chunk to the file"),n.currentSize+=e.length,ra.appendFileSync(n.filename,e)}}ea.configure=function(e,t){let n=t.basicLayout;e.layout&&(n=t.layout(e.layout.type,e.layout));const r={flags:e.flags||"a",encoding:e.encoding||"utf8",mode:e.mode||384};return function(e,t,n,r,u,o){ta("fileSync appender created");const i=function(e,t,n){let r;var u;return t?r=new ia(e,t,n,o):(oa(u=e,o),r={write(e){ra.appendFileSync(u,e)}}),r}(e=na.normalize(e),n,r=r||0===r?r:5);return e=>{i.write(t(e,u)+ua)}}(e.filename,n,e.maxLogSize,e.backups,e.timezoneOffset,r)};var sa={};const ca=Nr.exports("log4js:tcp"),aa=S.default;sa.configure=function(e,t){ca(`configure with config = ${e}`);let n=function(e){return e.serialise()};return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){let n=!1;const r=[];let u,o=3,i="__LOG4JS__";function s(e){ca("Writing log event to socket"),n=u.write(`${t(e)}${i}`,"utf8")}function c(){let e;for(ca("emptying buffer");e=r.shift();)s(e)}function a(e){n?s(e):(ca("buffering log event because it cannot write at the moment"),r.push(e))}return function t(){ca(`appender creating socket to ${e.host||"localhost"}:${e.port||5e3}`),i=`${e.endMsg||"__LOG4JS__"}`,u=aa.createConnection(e.port||5e3,e.host||"localhost"),u.on("connect",(()=>{ca("socket connected"),c(),n=!0})),u.on("drain",(()=>{ca("drain event received, emptying buffer"),n=!0,c()})),u.on("timeout",u.end.bind(u)),u.on("error",(e=>{ca("connection error",e),n=!1,c()})),u.on("close",t)}(),a.shutdown=function(e){ca("shutdown called"),r.length&&o?(ca("buffer has items, waiting 100ms to empty"),o-=1,setTimeout((()=>{a.shutdown(e)}),100)):(u.removeAllListeners("close"),u.end(e))},a}(e,n)};const la=p.default,fa=Nr.exports("log4js:appenders"),da=tu,Da=eo,pa=gu,Ea=hu,ma=to,ha=new Map;ha.set("console",oo),ha.set("stdout",so),ha.set("stderr",co),ha.set("logLevelFilter",ao),ha.set("categoryFilter",lo),ha.set("noLogFilter",Do),ha.set("file",Eo),ha.set("dateFile",Yc),ha.set("fileSync",ea),ha.set("tcp",sa);const ya=new Map,Ca=(e,t)=>{fa("Loading module from ",e);try{return require(e)}catch(n){return void da.throwExceptionIf(t,"MODULE_NOT_FOUND"!==n.code,`appender "${e}" could not be loaded (error was: ${n})`)}},Fa=new Set,ga=(e,t)=>{if(ya.has(e))return ya.get(e);if(!t.appenders[e])return!1;if(Fa.has(e))throw new Error(`Dependency loop detected for appender ${e}.`);Fa.add(e),fa(`Creating appender ${e}`);const n=Aa(e,t);return Fa.delete(e),ya.set(e,n),n},Aa=(e,t)=>{const n=t.appenders[e],r=n.type.configure?n.type:((e,t)=>ha.get(e)||Ca(`./${e}`,t)||Ca(e,t)||require.main&&Ca(la.join(la.dirname(require.main.filename),e),t)||Ca(la.join(process.cwd(),e),t))(n.type,t);return da.throwExceptionIf(t,da.not(r),`appender "${e}" is not valid (type "${n.type}" could not be found)`),r.appender&&fa(`DEPRECATION: Appender ${n.type} exports an appender function.`),r.shutdown&&fa(`DEPRECATION: Appender ${n.type} exports a shutdown function.`),fa(`${e}: clustering.isMaster ? ${Da.isMaster()}`),fa(`${e}: appenderModule is ${F.default.inspect(r)}`),Da.onlyOnMaster((()=>(fa(`calling appenderModule.configure for ${e} / ${n.type}`),r.configure(ma.modifyConfig(n),Ea,(e=>ga(e,t)),pa))),(()=>{}))},va=e=>{ya.clear(),Fa.clear();const t=[];Object.values(e.categories).forEach((e=>{t.push(...e.appenders)})),Object.keys(e.appenders).forEach((n=>{(t.includes(n)||"tcp-server"===e.appenders[n].type)&&ga(n,e)}))},Sa=()=>{va({appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"trace"}}})};Sa(),da.addListener((e=>{da.throwExceptionIf(e,da.not(da.anObject(e.appenders)),'must have a property "appenders" of type object.');const t=Object.keys(e.appenders);da.throwExceptionIf(e,da.not(t.length),"must define at least one appender."),t.forEach((t=>{da.throwExceptionIf(e,da.not(e.appenders[t].type),`appender "${t}" is not valid (must be an object with property "type")`)}))})),da.addListener(va),Au.exports=ya,Au.exports.init=Sa;var wa={exports:{}};!function(e){const t=Nr.exports("log4js:categories"),n=tu,r=gu,u=Au.exports,o=new Map;function i(e,t,n){if(!1===t.inherit)return;const r=n.lastIndexOf(".");if(r<0)return;const u=n.substring(0,r);let o=e.categories[u];o||(o={inherit:!0,appenders:[]}),i(e,o,u),!e.categories[u]&&o.appenders&&o.appenders.length&&o.level&&(e.categories[u]=o),t.appenders=t.appenders||[],t.level=t.level||o.level,o.appenders.forEach((e=>{t.appenders.includes(e)||t.appenders.push(e)})),t.parent=o}function s(e){if(!e.categories)return;Object.keys(e.categories).forEach((t=>{const n=e.categories[t];i(e,n,t)}))}n.addPreProcessingListener((e=>s(e))),n.addListener((e=>{n.throwExceptionIf(e,n.not(n.anObject(e.categories)),'must have a property "categories" of type object.');const t=Object.keys(e.categories);n.throwExceptionIf(e,n.not(t.length),"must define at least one category."),t.forEach((t=>{const o=e.categories[t];n.throwExceptionIf(e,[n.not(o.appenders),n.not(o.level)],`category "${t}" is not valid (must be an object with properties "appenders" and "level")`),n.throwExceptionIf(e,n.not(Array.isArray(o.appenders)),`category "${t}" is not valid (appenders must be an array of appender names)`),n.throwExceptionIf(e,n.not(o.appenders.length),`category "${t}" is not valid (appenders must contain at least one appender name)`),Object.prototype.hasOwnProperty.call(o,"enableCallStack")&&n.throwExceptionIf(e,"boolean"!=typeof o.enableCallStack,`category "${t}" is not valid (enableCallStack must be boolean type)`),o.appenders.forEach((r=>{n.throwExceptionIf(e,n.not(u.get(r)),`category "${t}" is not valid (appender "${r}" is not defined)`)})),n.throwExceptionIf(e,n.not(r.getLevel(o.level)),`category "${t}" is not valid (level "${o.level}" not recognised; valid levels are ${r.levels.join(", ")})`)})),n.throwExceptionIf(e,n.not(e.categories.default),'must define a "default" category.')}));const c=e=>{o.clear();Object.keys(e.categories).forEach((n=>{const i=e.categories[n],s=[];i.appenders.forEach((e=>{s.push(u.get(e)),t(`Creating category ${n}`),o.set(n,{appenders:s,level:r.getLevel(i.level),enableCallStack:i.enableCallStack||!1})}))}))},a=()=>{c({categories:{default:{appenders:["out"],level:"OFF"}}})};a(),n.addListener(c);const l=e=>(t(`configForCategory: searching for config for ${e}`),o.has(e)?(t(`configForCategory: ${e} exists in config, returning it`),o.get(e)):e.indexOf(".")>0?(t(`configForCategory: ${e} has hierarchy, searching for parents`),l(e.substring(0,e.lastIndexOf(".")))):(t("configForCategory: returning config for default category"),l("default")));e.exports=o,e.exports=Object.assign(e.exports,{appendersForCategory:e=>l(e).appenders,getLevelForCategory:e=>l(e).level,setLevelForCategory:(e,n)=>{let r=o.get(e);if(t(`setLevelForCategory: found ${r} for ${e}`),!r){const n=l(e);t(`setLevelForCategory: no config found for category, found ${n} for parents of ${e}`),r={appenders:n.appenders}}r.level=n,o.set(e,r)},getEnableCallStackForCategory:e=>!0===l(e).enableCallStack,setEnableCallStackForCategory:(e,t)=>{l(e).enableCallStack=t},init:a})}(wa);const Oa=Nr.exports("log4js:logger"),ba=Hu,_a=gu,Ba=eo,Pa=wa.exports,ka=tu,xa=/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/;function Na(e,t=4){const n=e.stack.split("\n").slice(t),r=xa.exec(n[0]);return r&&6===r.length?{functionName:r[1],fileName:r[2],lineNumber:parseInt(r[3],10),columnNumber:parseInt(r[4],10),callStack:n.join("\n")}:null}class Ia{constructor(e){if(!e)throw new Error("No category provided.");this.category=e,this.context={},this.parseCallStack=Na,Oa(`Logger created (${this.category}, ${this.level})`)}get level(){return _a.getLevel(Pa.getLevelForCategory(this.category),_a.TRACE)}set level(e){Pa.setLevelForCategory(this.category,_a.getLevel(e,this.level))}get useCallStack(){return Pa.getEnableCallStackForCategory(this.category)}set useCallStack(e){Pa.setEnableCallStackForCategory(this.category,!0===e)}log(e,...t){let n=_a.getLevel(e);n||(this._log(_a.WARN,"log4js:logger.log: invalid value for log-level as first parameter given: ",e),n=_a.INFO),this.isLevelEnabled(n)&&this._log(n,t)}isLevelEnabled(e){return this.level.isLessThanOrEqualTo(e)}_log(e,t){Oa(`sending log data (${e}) to appenders`);const n=new ba(this.category,e,t,this.context,this.useCallStack&&this.parseCallStack(new Error));Ba.send(n)}addContext(e,t){this.context[e]=t}removeContext(e){delete this.context[e]}clearContext(){this.context={}}setParseCallStackFunction(e){this.parseCallStack=e}}function Ta(e){const t=_a.getLevel(e),n=t.toString().toLowerCase().replace(/_([a-z])/g,(e=>e[1].toUpperCase())),r=n[0].toUpperCase()+n.slice(1);Ia.prototype[`is${r}Enabled`]=function(){return this.isLevelEnabled(t)},Ia.prototype[n]=function(...e){this.log(t,...e)}}_a.levels.forEach(Ta),ka.addListener((()=>{_a.levels.forEach(Ta)}));var Ra=Ia;const Ma=gu;function La(e){return e.originalUrl||e.url}function ja(e,t){for(let n=0;ne.source?e.source:e));t=new RegExp(n.join("|"))}return t}(t.nolog);return(e,i,s)=>{if(e._logging)return s();if(o&&o.test(e.originalUrl))return s();if(n.isLevelEnabled(r)||"auto"===t.level){const o=new Date,{writeHead:s}=i;e._logging=!0,i.writeHead=(e,t)=>{i.writeHead=s,i.writeHead(e,t),i.__statusCode=e,i.__headers=t||{}},i.on("finish",(()=>{i.responseTime=new Date-o,i.statusCode&&"auto"===t.level&&(r=Ma.INFO,i.statusCode>=300&&(r=Ma.WARN),i.statusCode>=400&&(r=Ma.ERROR)),r=function(e,t,n){let r=t;if(n){const t=n.find((t=>{let n=!1;return n=t.from&&t.to?e>=t.from&&e<=t.to:-1!==t.codes.indexOf(e),n}));t&&(r=Ma.getLevel(t.level,r))}return r}(i.statusCode,r,t.statusRules);const s=function(e,t,n){const r=[];return r.push({token:":url",replacement:La(e)}),r.push({token:":protocol",replacement:e.protocol}),r.push({token:":hostname",replacement:e.hostname}),r.push({token:":method",replacement:e.method}),r.push({token:":status",replacement:t.__statusCode||t.statusCode}),r.push({token:":response-time",replacement:t.responseTime}),r.push({token:":date",replacement:(new Date).toUTCString()}),r.push({token:":referrer",replacement:e.headers.referer||e.headers.referrer||""}),r.push({token:":http-version",replacement:`${e.httpVersionMajor}.${e.httpVersionMinor}`}),r.push({token:":remote-addr",replacement:e.headers["x-forwarded-for"]||e.ip||e._remoteAddress||e.socket&&(e.socket.remoteAddress||e.socket.socket&&e.socket.socket.remoteAddress)}),r.push({token:":user-agent",replacement:e.headers["user-agent"]}),r.push({token:":content-length",replacement:t.getHeader("content-length")||t.__headers&&t.__headers["Content-Length"]||"-"}),r.push({token:/:req\[([^\]]+)]/g,replacement:(t,n)=>e.headers[n.toLowerCase()]}),r.push({token:/:res\[([^\]]+)]/g,replacement:(e,n)=>t.getHeader(n.toLowerCase())||t.__headers&&t.__headers[n]}),(e=>{const t=e.concat();for(let e=0;eja(e,s)));t&&n.log(r,t)}else n.log(r,ja(u,s));t.context&&n.removeContext("res")}))}return s()}},nl=Va;let rl=!1;function ul(e){if(!rl)return;Ua("Received log event ",e);Za.appendersForCategory(e.categoryName).forEach((t=>{t(e)}))}function ol(e){rl&&il();let t=e;return"string"==typeof t&&(t=function(e){Ua(`Loading configuration from ${e}`);try{return JSON.parse(Wa.readFileSync(e,"utf8"))}catch(t){throw new Error(`Problem reading config from file "${e}". Error was ${t.message}`,t)}}(e)),Ua(`Configuration is ${t}`),Ka.configure(za(t)),el.onMessage(ul),rl=!0,sl}function il(e){Ua("Shutdown called. Disabling all log writing."),rl=!1;const t=Array.from(Xa.values());Xa.init(),Za.init();const n=t.reduceRight(((e,t)=>t.shutdown?e+1:e),0);if(0===n)return Ua("No appenders with shutdown functions found."),void 0!==e&&e();let r,u=0;function o(t){r=r||t,u+=1,Ua(`Appender shutdowns complete: ${u} / ${n}`),u>=n&&(Ua("All shutdown functions completed."),e&&e(r))}return Ua(`Found ${n} appenders with shutdown functions.`),t.filter((e=>e.shutdown)).forEach((e=>e.shutdown(o))),null}const sl={getLogger:function(e){return rl||ol(process.env.LOG4JS_CONFIG||{appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"OFF"}}}),new Qa(e||"default")},configure:ol,shutdown:il,connectLogger:tl,levels:Ya,addLayout:qa.addLayout,recording:function(){return nl}};var cl=sl,al={};Object.defineProperty(al,"__esModule",{value:!0}),al.levelMap=al.getLevel=al.setCategoriesLevel=al.getConfiguration=al.setConfiguration=void 0;const ll=cl;let fl={appenders:{debug:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %p %c %[%m%]"}},info:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %[%m%]"}},"no-pattern-info":{type:"stdout",layout:{type:"pattern",pattern:"%m"}},wrong:{type:"stderr",layout:{type:"pattern",pattern:"[%d] > hvigor %[%p: %m%]"}},"just-debug":{type:"logLevelFilter",appender:"debug",level:"debug",maxLevel:"debug"},"just-info":{type:"logLevelFilter",appender:"info",level:"info",maxLevel:"info"},"just-wrong":{type:"logLevelFilter",appender:"wrong",level:"warn",maxLevel:"error"}},categories:{default:{appenders:["just-debug","just-info","just-wrong"],level:"debug"},"no-pattern-info":{appenders:["no-pattern-info"],level:"info"}}};al.setConfiguration=e=>{fl=e};al.getConfiguration=()=>fl;let dl=ll.levels.DEBUG;al.setCategoriesLevel=(e,t)=>{dl=e;const n=fl.categories;for(const r in n)(null==t?void 0:t.includes(r))||Object.prototype.hasOwnProperty.call(n,r)&&(n[r].level=e.levelStr)};al.getLevel=()=>dl,al.levelMap=new Map([["ALL",ll.levels.ALL],["MARK",ll.levels.MARK],["TRACE",ll.levels.TRACE],["DEBUG",ll.levels.DEBUG],["INFO",ll.levels.INFO],["WARN",ll.levels.WARN],["ERROR",ll.levels.ERROR],["FATAL",ll.levels.FATAL],["OFF",ll.levels.OFF]]);var Dl=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),pl=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),El=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Dl(t,e,n);return pl(t,e),t};Object.defineProperty(xr,"__esModule",{value:!0}),xr.evaluateLogLevel=xr.HvigorLogger=void 0;const ml=El(cl),hl=cl,yl=El(F.default),Cl=al;class Fl{constructor(e){ml.configure((0,Cl.getConfiguration)()),this._logger=ml.getLogger(e),this._logger.level=(0,Cl.getLevel)()}static getLogger(e){return new Fl(e)}log(e,...t){this._logger.log(e,...t)}debug(e,...t){this._logger.debug(e,...t)}info(e,...t){this._logger.info(e,...t)}warn(e,...t){void 0!==e&&""!==e&&this._logger.warn(e,...t)}error(e,...t){this._logger.error(e,...t)}_printTaskExecuteInfo(e,t){this.info(`Finished :${e}... after ${t}`)}_printFailedTaskInfo(e){this.error(`Failed :${e}... `)}_printDisabledTaskInfo(e){this.info(`Disabled :${e}... `)}_printUpToDateTaskInfo(e){this.info(`UP-TO-DATE :${e}... `)}errorMessageExit(e,...t){throw new Error(yl.format(e,...t))}errorExit(e,t,...n){t&&this._logger.error(t,n),this._logger.error(e.stack)}setLevel(e,t){(0,Cl.setCategoriesLevel)(e,t),ml.shutdown(),ml.configure((0,Cl.getConfiguration)())}getLevel(){return this._logger.level}configure(e){const t=(0,Cl.getConfiguration)(),n={appenders:{...t.appenders,...e.appenders},categories:{...t.categories,...e.categories}};(0,Cl.setConfiguration)(n),ml.shutdown(),ml.configure(n)}}xr.HvigorLogger=Fl,xr.evaluateLogLevel=function(e,t){t.debug?e.setLevel(hl.levels.DEBUG):t.warn?e.setLevel(hl.levels.WARN):t.error?e.setLevel(hl.levels.ERROR):e.setLevel(hl.levels.INFO)};var gl=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(X,"__esModule",{value:!0}),X.parseJsonText=X.parseJsonFile=void 0;const Al=Z,vl=gl(kr),Sl=gl(p.default),wl=gl(E.default),Ol=xr.HvigorLogger.getLogger("parse-json-util");var bl;!function(e){e[e.Char=0]="Char",e[e.EOF=1]="EOF",e[e.Identifier=2]="Identifier"}(bl||(bl={}));let _l,Bl,Pl,kl,xl,Nl,Il="start",Tl=[],Rl=0,Ml=1,Ll=0,jl=!1,$l="default",Hl="'",Jl=1;function Gl(e,t=!1){Bl=String(e),Il="start",Tl=[],Rl=0,Ml=1,Ll=0,kl=void 0,jl=t;do{_l=Vl(),Xl[Il]()}while("eof"!==_l.type);return kl}function Vl(){for($l="default",xl="",Hl="'",Jl=1;;){Nl=Ul();const e=zl[$l]();if(e)return e}}function Ul(){if(Bl[Rl])return String.fromCodePoint(Bl.codePointAt(Rl))}function Wl(){const e=Ul();return"\n"===e?(Ml++,Ll=0):e?Ll+=e.length:Ll++,e&&(Rl+=e.length),e}X.parseJsonFile=function(e,t=!1,n="utf-8"){const r=vl.default.readFileSync(Sl.default.resolve(e),{encoding:n});try{return Gl(r,t)}catch(t){if(t instanceof SyntaxError){const n=t.message.split("at");2===n.length&&Ol.errorMessageExit(`${n[0].trim()}${wl.default.EOL}\t at ${e}:${n[1].trim()}`)}Ol.errorMessageExit(`${e} is not in valid JSON/JSON5 format.`)}},X.parseJsonText=Gl;const zl={default(){switch(Nl){case"/":return Wl(),void($l="comment");case void 0:return Wl(),Kl("eof")}if(!Al.JudgeUtil.isIgnoreChar(Nl)&&!Al.JudgeUtil.isSpaceSeparator(Nl))return zl[Il]();Wl()},start(){$l="value"},beforePropertyName(){switch(Nl){case"$":case"_":return xl=Wl(),void($l="identifierName");case"\\":return Wl(),void($l="identifierNameStartEscape");case"}":return Kl("punctuator",Wl());case'"':case"'":return Hl=Nl,Wl(),void($l="string")}if(Al.JudgeUtil.isIdStartChar(Nl))return xl+=Wl(),void($l="identifierName");throw tf(bl.Char,Wl())},afterPropertyName(){if(":"===Nl)return Kl("punctuator",Wl());throw tf(bl.Char,Wl())},beforePropertyValue(){$l="value"},afterPropertyValue(){switch(Nl){case",":case"}":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},beforeArrayValue(){if("]"===Nl)return Kl("punctuator",Wl());$l="value"},afterArrayValue(){switch(Nl){case",":case"]":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},end(){throw tf(bl.Char,Wl())},comment(){switch(Nl){case"*":return Wl(),void($l="multiLineComment");case"/":return Wl(),void($l="singleLineComment")}throw tf(bl.Char,Wl())},multiLineComment(){switch(Nl){case"*":return Wl(),void($l="multiLineCommentAsterisk");case void 0:throw tf(bl.Char,Wl())}Wl()},multiLineCommentAsterisk(){switch(Nl){case"*":return void Wl();case"/":return Wl(),void($l="default");case void 0:throw tf(bl.Char,Wl())}Wl(),$l="multiLineComment"},singleLineComment(){switch(Nl){case"\n":case"\r":case"\u2028":case"\u2029":return Wl(),void($l="default");case void 0:return Wl(),Kl("eof")}Wl()},value(){switch(Nl){case"{":case"[":return Kl("punctuator",Wl());case"n":return Wl(),ql("ull"),Kl("null",null);case"t":return Wl(),ql("rue"),Kl("boolean",!0);case"f":return Wl(),ql("alse"),Kl("boolean",!1);case"-":case"+":return"-"===Wl()&&(Jl=-1),void($l="numerical");case".":case"0":case"I":case"N":return void($l="numerical");case'"':case"'":return Hl=Nl,Wl(),xl="",void($l="string")}if(void 0===Nl||!Al.JudgeUtil.isDigitWithoutZero(Nl))throw tf(bl.Char,Wl());$l="numerical"},numerical(){switch(Nl){case".":return xl=Wl(),void($l="decimalPointLeading");case"0":return xl=Wl(),void($l="zero");case"I":return Wl(),ql("nfinity"),Kl("numeric",Jl*(1/0));case"N":return Wl(),ql("aN"),Kl("numeric",NaN)}if(void 0!==Nl&&Al.JudgeUtil.isDigitWithoutZero(Nl))return xl=Wl(),void($l="decimalInteger");throw tf(bl.Char,Wl())},zero(){switch(Nl){case".":case"e":case"E":return void($l="decimal");case"x":case"X":return xl+=Wl(),void($l="hexadecimal")}return Kl("numeric",0)},decimalInteger(){switch(Nl){case".":case"e":case"E":return void($l="decimal")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimal(){switch(Nl){case".":xl+=Wl(),$l="decimalFraction";break;case"e":case"E":xl+=Wl(),$l="decimalExponent"}},decimalPointLeading(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalFraction");throw tf(bl.Char,Wl())},decimalFraction(){switch(Nl){case"e":case"E":return xl+=Wl(),void($l="decimalExponent")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimalExponent(){switch(Nl){case"+":case"-":return xl+=Wl(),void($l="decimalExponentSign")}if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentSign(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentInteger(){if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},hexadecimal(){if(Al.JudgeUtil.isHexDigit(Nl))return xl+=Wl(),void($l="hexadecimalInteger");throw tf(bl.Char,Wl())},hexadecimalInteger(){if(!Al.JudgeUtil.isHexDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},identifierNameStartEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":break;default:if(!Al.JudgeUtil.isIdStartChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},identifierName(){switch(Nl){case"$":case"_":case"‌":case"‍":return void(xl+=Wl());case"\\":return Wl(),void($l="identifierNameEscape")}if(!Al.JudgeUtil.isIdContinueChar(Nl))return Kl("identifier",xl);xl+=Wl()},identifierNameEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!Al.JudgeUtil.isIdContinueChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},string(){switch(Nl){case"\\":return Wl(),void(xl+=function(){const e=Ul(),t=function(){switch(Ul()){case"b":return Wl(),"\b";case"f":return Wl(),"\f";case"n":return Wl(),"\n";case"r":return Wl(),"\r";case"t":return Wl(),"\t";case"v":return Wl(),"\v"}return}();if(t)return t;switch(e){case"0":if(Wl(),Al.JudgeUtil.isDigit(Ul()))throw tf(bl.Char,Wl());return"\0";case"x":return Wl(),function(){let e="",t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());if(e+=Wl(),t=Ul(),!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());return e+=Wl(),String.fromCodePoint(parseInt(e,16))}();case"u":return Wl(),Yl();case"\n":case"\u2028":case"\u2029":return Wl(),"";case"\r":return Wl(),"\n"===Ul()&&Wl(),""}if(void 0===e||Al.JudgeUtil.isDigitWithoutZero(e))throw tf(bl.Char,Wl());return Wl()}());case'"':case"'":if(Nl===Hl){const e=Kl("string",xl);return Wl(),e}return void(xl+=Wl());case"\n":case"\r":case void 0:throw tf(bl.Char,Wl());case"\u2028":case"\u2029":!function(e){Ol.warn(`JSON5: '${ef(e)}' in strings is not valid ECMAScript; consider escaping.`)}(Nl)}xl+=Wl()}};function Kl(e,t){return{type:e,value:t,line:Ml,column:Ll}}function ql(e){for(const t of e){if(Ul()!==t)throw tf(bl.Char,Wl());Wl()}}function Yl(){let e="",t=4;for(;t-- >0;){const t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());e+=Wl()}return String.fromCodePoint(parseInt(e,16))}const Xl={start(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},beforePropertyName(){switch(_l.type){case"identifier":case"string":return Pl=_l.value,void(Il="afterPropertyName");case"punctuator":return void Ql();case"eof":throw tf(bl.EOF)}},afterPropertyName(){if("eof"===_l.type)throw tf(bl.EOF);Il="beforePropertyValue"},beforePropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},afterPropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforePropertyName");case"}":Ql()}},beforeArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);"punctuator"!==_l.type||"]"!==_l.value?Zl():Ql()},afterArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforeArrayValue");case"]":Ql()}},end(){}};function Zl(){const e=function(){let e;switch(_l.type){case"punctuator":switch(_l.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=_l.value}return e}();if(jl&&"object"==typeof e&&(e._line=Ml,e._column=Ll),void 0===kl)kl=e;else{const t=Tl[Tl.length-1];Array.isArray(t)?jl&&"object"!=typeof e?t.push({value:e,_line:Ml,_column:Ll}):t.push(e):t[Pl]=jl&&"object"!=typeof e?{value:e,_line:Ml,_column:Ll}:e}!function(e){if(e&&"object"==typeof e)Tl.push(e),Il=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}}(e)}function Ql(){Tl.pop();const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}function ef(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return`\\x${`00${t}`.substring(t.length)}`}return e}function tf(e,t){let n="";switch(e){case bl.Char:n=void 0===t?`JSON5: invalid end of input at ${Ml}:${Ll}`:`JSON5: invalid character '${ef(t)}' at ${Ml}:${Ll}`;break;case bl.EOF:n=`JSON5: invalid end of input at ${Ml}:${Ll}`;break;case bl.Identifier:Ll-=5,n=`JSON5: invalid identifier character at ${Ml}:${Ll}`}const r=new nf(n);return r.lineNumber=Ml,r.columnNumber=Ll,r}class nf extends SyntaxError{}var rf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),uf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&rf(t,e,n);return uf(t,e),t};Object.defineProperty(Y,"__esModule",{value:!0});var sf=Y.cleanWorkSpace=Ff=Y.executeInstallHvigor=yf=Y.isHvigorInstalled=mf=Y.isAllDependenciesInstalled=void 0;const cf=of(D.default),af=of(p.default),lf=b,ff=j,df=$,Df=X;let pf,Ef;var mf=Y.isAllDependenciesInstalled=function(){function e(e){const t=null==e?void 0:e.dependencies;return void 0===t?0:Object.getOwnPropertyNames(t).length}if(pf=gf(),Ef=Af(),e(pf)+1!==e(Ef))return!1;for(const e in null==pf?void 0:pf.dependencies)if(!(0,ff.hasNpmPackInPaths)(e,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])||!hf(e,pf,Ef))return!1;return!0};function hf(e,t,n){return void 0!==n.dependencies&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,t.dependencies[e])===n.dependencies[e]}var yf=Y.isHvigorInstalled=function(){return pf=gf(),Ef=Af(),(0,ff.hasNpmPackInPaths)(lf.HVIGOR_ENGINE_PACKAGE_NAME,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion)===Ef.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]};const Cf={cwd:lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,stdio:["inherit","inherit","inherit"]};var Ff=Y.executeInstallHvigor=function(){(0,df.logInfoPrintConsole)("Hvigor installing...");const e={dependencies:{}};e.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]=(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion);try{cf.mkdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,{recursive:!0});const t=af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,lf.DEFAULT_PACKAGE_JSON);cf.writeFileSync(t,JSON.stringify(e))}catch(e){(0,df.logErrorAndExit)(e)}!function(){const e=["config","set","store-dir",lf.HVIGOR_PNPM_STORE_PATH];(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,e,Cf)}(),(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,["install"],Cf)};function gf(){const e=af.resolve(lf.HVIGOR_PROJECT_WRAPPER_HOME,lf.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);return cf.existsSync(e)||(0,df.logErrorAndExit)(`Error: Hvigor config file ${e} does not exist.`),(0,Df.parseJsonFile)(e)}function Af(){return cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH)?(0,Df.parseJsonFile)(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH):{dependencies:{}}}sf=Y.cleanWorkSpace=function(){if((0,df.logInfoPrintConsole)("Hvigor cleaning..."),!cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME))return;const e=cf.readdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME);if(e&&0!==e.length){cf.existsSync(lf.HVIGOR_BOOT_JS_FILE_PATH)&&(0,ff.executeCommand)(process.argv[0],[lf.HVIGOR_BOOT_JS_FILE_PATH,"--stop-daemon"],{});try{e.forEach((e=>{cf.rmSync(af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,e),{recursive:!0})}))}catch(e){(0,df.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${lf.HVIGOR_PROJECT_DEPENDENCIES_HOME}.`)}}};var vf={},Sf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),wf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Sf(t,e,n);return wf(t,e),t};Object.defineProperty(vf,"__esModule",{value:!0});var bf=vf.executeBuild=void 0;const _f=b,Bf=Of(D.default),Pf=Of(p.default),kf=$;bf=vf.executeBuild=function(){const e=Pf.resolve(_f.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const t=Bf.realpathSync(e);require(t)}catch(t){(0,kf.logErrorAndExit)(`Error: ENOENT: no such file ${e},delete ${_f.HVIGOR_PROJECT_DEPENDENCIES_HOME} and retry.`)}},function(){if(O.checkNpmConifg(),O.environmentHandler(),O.isPnpmAvailable()||O.executeInstallPnpm(),yf()&&mf())bf();else{sf();try{Ff()}catch(e){return void sf()}bf()}}(); \ No newline at end of file diff --git a/code/BasicFeature/Native/NdkRawfile/hvigorw b/code/BasicFeature/Native/NdkRawfile/hvigorw deleted file mode 100644 index 0576aadb41..0000000000 --- a/code/BasicFeature/Native/NdkRawfile/hvigorw +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -# ---------------------------------------------------------------------------- -# Copyright (c) 2023 Huawei Device Co., Ltd. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ---------------------------------------------------------------------------- -# ---------------------------------------------------------------------------- -# Hvigor startup script, version 1.0.0 -# -# Required ENV vars: -# ------------------ -# NODE_HOME - location of a Node home dir -# or -# Add /usr/local/nodejs/bin to the PATH environment variable -# ---------------------------------------------------------------------------- - -HVIGOR_APP_HOME=$(dirname $(readlink -f $0)) -HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js -warn() { - echo "" - echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" -} - -error() { - echo "" - echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" -} - -fail() { - error "$@" - exit 1 -} - -# Determine node to start hvigor wrapper script -if [ -n "${NODE_HOME}" ];then - EXECUTABLE_NODE="${NODE_HOME}/bin/node" - if [ ! -x "$EXECUTABLE_NODE" ];then - fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed" - fi -else - EXECUTABLE_NODE="node" - which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path" -fi - -# Check hvigor wrapper script -if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then - fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}" -fi - -# start hvigor-wrapper script -exec "${EXECUTABLE_NODE}" \ - "${HVIGOR_WRAPPER_SCRIPT}" "$@" diff --git a/code/BasicFeature/Native/NdkRawfile/hvigorw.bat b/code/BasicFeature/Native/NdkRawfile/hvigorw.bat deleted file mode 100644 index d9546692e7..0000000000 --- a/code/BasicFeature/Native/NdkRawfile/hvigorw.bat +++ /dev/null @@ -1,79 +0,0 @@ -:: Copyright (c) 2023 Huawei Device Co., Ltd. -:: Licensed under the Apache License, Version 2.0 (the "License"); -:: you may not use this file except in compliance with the License. -:: You may obtain a copy of the License at -:: -:: http://www.apache.org/licenses/LICENSE-2.0 -:: -:: Unless required by applicable law or agreed to in writing, software -:: distributed under the License is distributed on an "AS IS" BASIS, -:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -:: See the License for the specific language governing permissions and -:: limitations under the License. - -@echo off - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Hvigor startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js -set NODE_EXE=node.exe - -goto start - -:start -@rem Find node.exe -if defined NODE_HOME goto findNodeFromNodeHome - -%NODE_EXE% --version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. -echo. -echo Please set the NODE_HOME variable in your environment to match the -echo location of your NodeJs installation. - -goto fail - -:findNodeFromNodeHome -set NODE_HOME=%NODE_HOME:"=% -set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE% - -if exist "%NODE_EXE_PATH%" goto execute -echo. -echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. -echo. -echo Please set the NODE_HOME variable in your environment to match the -echo location of your NodeJs installation. - -goto fail - -:execute -@rem Execute hvigor -"%NODE_EXE%" %WRAPPER_MODULE_PATH% %* - -if "%ERRORLEVEL%" == "0" goto hvigorwEnd - -:fail -exit /b 1 - -:hvigorwEnd -if "%OS%" == "Windows_NT" endlocal - -:end diff --git a/code/BasicFeature/Native/NdkRawfile/oh-package.json5 b/code/BasicFeature/Native/NdkRawfile/oh-package.json5 index f081bc5aa7..1471fd4176 100644 --- a/code/BasicFeature/Native/NdkRawfile/oh-package.json5 +++ b/code/BasicFeature/Native/NdkRawfile/oh-package.json5 @@ -1,19 +1,5 @@ -/* - * Copyright (c) 2023 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - { + "modelVersion": "5.0.0", "license": "", "devDependencies": { "@ohos/hypium": "1.0.6" @@ -23,5 +9,5 @@ "description": "Please describe the basic information.", "main": "", "version": "1.0.0", - "dependencies": {} -} + "dependencies": {}, +} \ No newline at end of file diff --git a/code/BasicFeature/Native/NdkRawfile/screenshots/device/main.png b/code/BasicFeature/Native/NdkRawfile/screenshots/device/main.png index deae91b7b417812a9c4dd898e1e4fa93484f5278..21b7a60e8b82ae4f2c1c030c6f3549d7cb8ff4a9 100644 GIT binary patch literal 65640 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 literal 66741 zcmeFZ1yEb>*De|wTnoirON+Z}DPF9&)8g(fp}4!WSa2y;THM`Ti))KRf(8pW|L;3< z@Be%=XXeV8bLZaq?PM`KA=x|Y-OpZYy=y(|eg6Ht1$e0>rzi(NLIMDg5D&ofDnJH+ zj*5zgih_=YhK7NGj)_f(gN=oSO-AqvkC2L-hMJ0;l9HB@gPE3|je(N#jo@20E^a

`yqE?e(F0!KBLVS| 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 -- Gitee