From 90194c55db224ec4ad428e905b6b74bdc1973527 Mon Sep 17 00:00:00 2001 From: yuandongping Date: Wed, 28 May 2025 16:32:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E6=9E=B6=E5=B7=B2=E5=BA=9F=E5=BC=83?= =?UTF-8?q?=E5=BA=94=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yuandongping --- README_zh.md | 12 +- .../AccessibilityExtAbility/.gitignore | 5 - .../AppScope/app.json5 | 26 --- .../resources/base/element/string.json | 8 - .../resources/base/media/app_icon.png | Bin 6790 -> 0 bytes .../AccessibilityExtAbility/README_zh.md | 65 ------- .../build-profile.json5 | 42 ----- .../AccessibilityExtAbility/entry/.gitignore | 3 - .../entry/build-profile.json5 | 28 --- .../entry/hvigorfile.js | 2 - .../entry/oh-package.json5 | 24 --- .../AccessibilityExtAbility.ts | 37 ---- .../AccessibilityManager.ts | 175 ------------------ .../src/main/ets/Application/AbilityStage.ts | 23 --- .../src/main/ets/MainAbility/MainAbility.ts | 50 ----- .../entry/src/main/ets/pages/index.ets | 128 ------------- .../src/main/ets/utils/AccessibilityUtils.ts | 107 ----------- .../entry/src/main/ets/utils/Logger.ts | 45 ----- .../entry/src/main/ets/utils/ResourceUtils.ts | 53 ------ .../entry/src/main/module.json5 | 69 ------- .../main/resources/base/element/color.json | 8 - .../main/resources/base/element/string.json | 52 ------ .../src/main/resources/base/media/icon.png | Bin 6790 -> 0 bytes .../base/profile/accessibility_config.json | 8 - .../resources/base/profile/main_pages.json | 5 - .../main/resources/zh_CN/element/string.json | 52 ------ .../ets/TestRunner/OpenHarmonyTestRunner.ts | 62 ------- .../src/ohosTest/ets/test/Ability.test.ets | 27 --- .../entry/src/ohosTest/ets/test/App.test.ets | 61 ------ .../entry/src/ohosTest/ets/test/List.test.ets | 22 --- .../ohosTest/ets/testability/TestAbility.ets | 61 ------ .../ohosTest/ets/testability/pages/Index.ets | 54 ------ .../entry/src/ohosTest/ets/util/Logger.ts | 46 ----- .../entry/src/ohosTest/module.json5 | 52 ------ .../resources/base/element/color.json | 8 - .../resources/base/element/string.json | 32 ---- .../ohosTest/resources/base/media/icon.png | Bin 6790 -> 0 bytes .../resources/base/profile/test_pages.json | 5 - .../resources/en_GB/element/string.json | 20 -- .../resources/zh_CN/element/string.json | 20 -- .../hvigor/hvigor-config.json5 | 21 --- .../hvigor/hvigor-wrapper.js | 2 - .../AccessibilityExtAbility/hvigorfile.js | 2 - .../AccessibilityExtAbility/hvigorw | 63 ------- .../AccessibilityExtAbility/hvigorw.bat | 72 ------- .../AccessibilityExtAbility/oh-package.json5 | 26 --- .../AccessibilityExtAbility/ohosTest.md | 8 - .../screenshots/device/Connected.png | Bin 48093 -> 0 bytes .../screenshots/device/NotConnected.png | Bin 47108 -> 0 bytes 49 files changed, 3 insertions(+), 1688 deletions(-) delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/.gitignore delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/AppScope/app.json5 delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/AppScope/resources/base/element/string.json delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/AppScope/resources/base/media/app_icon.png delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/README_zh.md delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/build-profile.json5 delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/.gitignore delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/build-profile.json5 delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/hvigorfile.js delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/oh-package.json5 delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/AccessibilityExtAbility/AccessibilityExtAbility.ts delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/AccessibilityExtAbility/AccessibilityManager.ts delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/Application/AbilityStage.ts delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/MainAbility/MainAbility.ts delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/pages/index.ets delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/utils/AccessibilityUtils.ts delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/utils/Logger.ts delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/utils/ResourceUtils.ts delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/module.json5 delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/element/color.json delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/element/string.json delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/media/icon.png delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/profile/accessibility_config.json delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/profile/main_pages.json delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/zh_CN/element/string.json delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/test/Ability.test.ets delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/test/App.test.ets delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/test/List.test.ets delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/testability/TestAbility.ets delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/testability/pages/Index.ets delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/util/Logger.ts delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/module.json5 delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/base/element/color.json delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/base/element/string.json delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/base/media/icon.png delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/base/profile/test_pages.json delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/en_GB/element/string.json delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/zh_CN/element/string.json delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigor/hvigor-config.json5 delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigor/hvigor-wrapper.js delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigorfile.js delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigorw delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigorw.bat delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/oh-package.json5 delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/ohosTest.md delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/screenshots/device/Connected.png delete mode 100644 code/SystemFeature/ApplicationModels/AccessibilityExtAbility/screenshots/device/NotConnected.png diff --git a/README_zh.md b/README_zh.md index ff41a39d30..1db1453593 100644 --- a/README_zh.md +++ b/README_zh.md @@ -236,7 +236,7 @@ -系统特性(仅对系统应用开放) +系统特性(仅对系统应用开放) 能力增强 基础能力增强 @@ -244,11 +244,11 @@ - 应用模型 + 应用模型 仿桌面应用(API 10) 任务管理 静态订阅(API 10) - 无障碍扩展 + 自定义分享(API 10) 企业设备管理扩展 @@ -256,12 +256,6 @@ 启动上一次的组件实例 Stage模型(API10) - - 自定义分享(API 10) - - - - 自动填充 AutoFill自动填充能力 diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/.gitignore b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/.gitignore deleted file mode 100644 index 2d6d1d08c0..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/node_modules -/local.properties -/.idea -**/build -/oh_modules \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/AppScope/app.json5 b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/AppScope/app.json5 deleted file mode 100644 index d431b0c229..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/AppScope/app.json5 +++ /dev/null @@ -1,26 +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. - */ - -{ - "app": { - "bundleName": "com.samples.accessibilityextability", - "vendor": "example", - "versionCode": 1000000, - "versionName": "1.0.0", - "icon": "$media:app_icon", - "label": "$string:app_name", - "distributedNotificationEnabled": true - } -} diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/AppScope/resources/base/element/string.json b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/AppScope/resources/base/element/string.json deleted file mode 100644 index 70521fadef..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/AppScope/resources/base/element/string.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "string": [ - { - "name": "app_name", - "value": "AccessibilityExtAbility" - } - ] -} diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/AppScope/resources/base/media/app_icon.png b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/AppScope/resources/base/media/app_icon.png deleted file mode 100644 index ce307a8827bd75456441ceb57d530e4c8d45d36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6790 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 .git/info/sparse-checkout -git remote add origin https://gitee.com/openharmony/applications_app_samples.git -git pull origin master -``` \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/build-profile.json5 b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/build-profile.json5 deleted file mode 100644 index 23373b246a..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/build-profile.json5 +++ /dev/null @@ -1,42 +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. - */ - -{ - "app": { - "signingConfigs": [], - "compileSdkVersion": 9, - "compatibleSdkVersion": 9, - "products": [ - { - "name": "default", - "signingConfig": "default", - } - ] - }, - "modules": [ - { - "name": "entry", - "srcPath": "./entry", - "targets": [ - { - "name": "default", - "applyToProducts": [ - "default" - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/.gitignore b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/.gitignore deleted file mode 100644 index 4f9a973815..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/node_modules -/.preview -/build \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/build-profile.json5 b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/build-profile.json5 deleted file mode 100644 index 7376c96fd0..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/build-profile.json5 +++ /dev/null @@ -1,28 +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. - */ - -{ - "apiType": 'stageMode', - "buildOption": { - }, - "targets": [ - { - "name": "default", - }, - { - "name": "ohosTest", - } - ] -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/hvigorfile.js b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/hvigorfile.js deleted file mode 100644 index d7720ee6a7..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/hvigorfile.js +++ /dev/null @@ -1,2 +0,0 @@ -// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. -module.exports = require('@ohos/hvigor-ohos-plugin').hapTasks diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/oh-package.json5 b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/oh-package.json5 deleted file mode 100644 index 907d65a0ae..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/oh-package.json5 +++ /dev/null @@ -1,24 +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. - */ - -{ - "license": "ISC", - "devDependencies": {}, - "name": "entry", - "description": "example description", - "repository": {}, - "version": "1.0.0", - "dependencies": {} -} diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/AccessibilityExtAbility/AccessibilityExtAbility.ts b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/AccessibilityExtAbility/AccessibilityExtAbility.ts deleted file mode 100644 index 699b4cd368..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/AccessibilityExtAbility/AccessibilityExtAbility.ts +++ /dev/null @@ -1,37 +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. - */ - -import AccessibilityExtensionAbility from '@ohos.application.AccessibilityExtensionAbility' -import AccessibilityManager from './AccessibilityManager' -import Logger from '../utils/Logger' - -class AccessibilityExtAbility extends AccessibilityExtensionAbility { - onConnect() { - Logger.info("AccessibilityExtAbility onConnect") - AccessibilityManager.getInstance().onStart(this.context) - } - - onDisconnect() { - Logger.info("AccessibilityExtAbility onDisconnect") - AccessibilityManager.getInstance().onStop() - } - - onAccessibilityEvent(accessibilityEvent) { - Logger.info("AccessibilityExtAbility onAccessibilityEvent type: " + accessibilityEvent.eventType) - AccessibilityManager.getInstance().onEvent(accessibilityEvent) - } -} - -export default AccessibilityExtAbility \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/AccessibilityExtAbility/AccessibilityManager.ts b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/AccessibilityExtAbility/AccessibilityManager.ts deleted file mode 100644 index f52ee691c7..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/AccessibilityExtAbility/AccessibilityManager.ts +++ /dev/null @@ -1,175 +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. - */ - -import AccessibilityUtils from '../utils/AccessibilityUtils' -import ResourceUtils from '../utils/ResourceUtils' -import Logger from '../utils/Logger' - -const wantedAttribute = ["componentId", "componentType", "bundleName", "text", "hintText", "description", - "focusable", "clickable", "longClickable", "accessibilityFocused", "windowId"] - -export default class AccessibilityManager { - private static instance = null - accessibleContext = null - currentPageElementArray = null - targetElement = { - KEY: "text", - VALUE: null - } - - static getInstance() { - if (this.instance == null) { - this.instance = new AccessibilityManager() - } - return this.instance - } - - onStart(context) { - Logger.info("AccessibilityManager onStart") - this.accessibleContext = context - } - - onStop() { - Logger.info("AccessibilityManager onStop") - this.accessibleContext = null - } - - onEvent(accessibilityEvent) { - Logger.info("AccessibilityManager onEvent") - switch (accessibilityEvent.eventType) { - case "rightThenDown": - this.getCurrentPageAllElement() - break - case "leftThenDown": - this.printAllElementInfo() - break - case "left": - this.setAccessibilityFocused() - break - case "right": - this.clearAccessibilityFocus() - break - case "down": - this.clickTargetElement() - break - default: - break - } - } - - async getCurrentPageAllElement() { - Logger.info("AccessibilityManager getCurrentPageAllElement") - let rootElement = null - try { - rootElement = await this.accessibleContext.getWindowRootElement() - } catch (error) { - Logger.error("AccessibilityExtAbility Failed to getWindowRootElement. Cause: " + JSON.stringify(error)) - } - this.currentPageElementArray = await AccessibilityUtils.createElementArray(rootElement) - } - - async printAllElementInfo() { - Logger.info("AccessibilityManager printAllElementInfo") - if (this.currentPageElementArray == null || this.currentPageElementArray.length == 0) { - Logger.error("AccessibilityManager currentPageElementArray is null") - return - } - let info = null - for (let element of this.currentPageElementArray) { - info = await AccessibilityUtils.getElementWantedInfo(element, wantedAttribute) - Logger.info("AccessibilityManager element information: " + info) - } - } - - async setAccessibilityFocused() { - Logger.info("AccessibilityManager setAccessibilityFocused") - this.targetElement.VALUE = ResourceUtils.getStringByName(this.accessibleContext, "accessibility_focus") - let element = await AccessibilityUtils.findElementByKey(this.currentPageElementArray, this.targetElement) - if (element == null) { - Logger.error("AccessibilityManager Target element not found") - return - } - let isFocusable = await AccessibilityUtils.getAttributeValue(element, "focusable") - let isAccessibilityFocused = await AccessibilityUtils.getAttributeValue(element, "accessibilityFocused") - if (!isFocusable || isAccessibilityFocused) { - return - } - try { - element.performAction("accessibilityFocus") // 元素可执行的行为可通过actionNames()获取 - Logger.info("AccessibilityManager Succeed in perform action: accessibilityFocus") - this.getCurrentPageAllElement() // 执行完动作后需更新界面信息 - } catch (error) { - Logger.error("AccessibilityManager Failed to perform action: accessibilityFocus. Cause: " + JSON.stringify(error)) - } - } - - async clearAccessibilityFocus() { - Logger.info("AccessibilityManager clearAccessibilityFocus") - this.targetElement.VALUE = ResourceUtils.getStringByName(this.accessibleContext, "accessibility_focus") - let element = await AccessibilityUtils.findElementByKey(this.currentPageElementArray, this.targetElement) - if (element == null) { - Logger.error("AccessibilityManager Target element not found") - return - } - let isAccessibilityFocused = await AccessibilityUtils.getAttributeValue(element, "accessibilityFocused") - if (!isAccessibilityFocused) { - return - } - try { - element.performAction("clearAccessibilityFocus").then(() => { - Logger.info("AccessibilityManager Succeed in perform action: clearAccessibilityFocus") - this.getCurrentPageAllElement() - }).catch((err) => { - Logger.error("AccessibilityManager Failed to perform action: clearAccessibilityFocus. Cause: " + JSON.stringify(err)) - }) - } catch (error) { - Logger.error("AccessibilityManager Failed to perform action: clearAccessibilityFocus. Cause: " + JSON.stringify(error)) - } - - } - - async clickTargetElement() { - Logger.info("AccessibilityManager clickTargetElement") - this.targetElement.VALUE = ResourceUtils.getStringByName(this.accessibleContext, "accessibility_not_clicked") - let tmpElementNotClicked = await AccessibilityUtils.findElementByKey(this.currentPageElementArray, this.targetElement) - this.targetElement.VALUE = ResourceUtils.getStringByName(this.accessibleContext, "accessibility_clicked") - let tmpElementClicked = await AccessibilityUtils.findElementByKey(this.currentPageElementArray, this.targetElement) - let element = null - if (tmpElementClicked != null) { - element = tmpElementClicked - } else if (tmpElementNotClicked != null) { - element = tmpElementNotClicked - } else { - Logger.error("AccessibilityManager Target element not found") - return - } - let isClickable = await AccessibilityUtils.getAttributeValue(element, "clickable") - if (!isClickable) { - Logger.error("AccessibilityManager Target element cannot be clicked") - return - } - try { - element.performAction("click").then((data) => { - Logger.info("AccessibilityManager Succeed in perform action: click") - this.getCurrentPageAllElement() - }).catch((err) => { - Logger.error("AccessibilityManager Failed to perform action: click. Cause: " + JSON.stringify(err)) - }) - } catch (error) { - Logger.error("AccessibilityManager Failed to perform action: click. Cause: " + JSON.stringify(error)) - } - - } -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/Application/AbilityStage.ts b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/Application/AbilityStage.ts deleted file mode 100644 index dfa6746636..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/Application/AbilityStage.ts +++ /dev/null @@ -1,23 +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. - */ - -import AbilityStage from '@ohos.app.ability.AbilityStage'; -import Logger from '../utils/Logger'; - -export default class MyAbilityStage extends AbilityStage { - onCreate() { - Logger.info("[Demo] MyAbilityStage onCreate") - } -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/MainAbility/MainAbility.ts b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/MainAbility/MainAbility.ts deleted file mode 100644 index 27802ae0a7..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/MainAbility/MainAbility.ts +++ /dev/null @@ -1,50 +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. - */ - -import UIAbility from '@ohos.app.ability.UIAbility' -import Logger from '../utils/Logger' - -export default class MainAbility extends UIAbility { - onCreate(want, launchParam) { - Logger.info("[Demo] MainAbility onCreate") - globalThis.abilityWant = want - } - - onDestroy() { - Logger.info("[Demo] MainAbility onDestroy") - } - - onWindowStageCreate(windowStage) { - // Main window is created, set main page for this ability - Logger.info("[Demo] MainAbility onWindowStageCreate") - - windowStage.setUIContent(this.context, "pages/index", null) - } - - onWindowStageDestroy() { - // Main window is destroyed, release UI related resources - Logger.info("[Demo] MainAbility onWindowStageDestroy") - } - - onForeground() { - // Ability has brought to foreground - Logger.info("[Demo] MainAbility onForeground") - } - - onBackground() { - // Ability has back to background - Logger.info("[Demo] MainAbility onBackground") - } -} diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/pages/index.ets b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/pages/index.ets deleted file mode 100644 index 9898a60283..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/pages/index.ets +++ /dev/null @@ -1,128 +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. - */ - -import accessibility from '@ohos.accessibility' -import ResourceUtils from '../utils/ResourceUtils' -import Logger from '../utils/Logger' - -@Entry -@Component -struct Index { - private context: Context = getContext(this) - @State connectState: Resource = $r("app.string.state_unconnected") - @State accessibilityTest: Resource = $r("app.string.accessibility_test") - @State currentState: Resource = $r("app.string.current_state") - @State buttonClickState: Resource = $r("app.string.accessibility_not_clicked") - - aboutToAppear(): void { - Logger.info("Index aboutToAppear()") - try { - accessibility.isOpenAccessibility().then((data) => { - console.info("Index success in isOpenAccessibility. data: " + JSON.stringify(data)) - this.connectState = data ? $r("app.string.state_connected") : $r("app.string.state_unconnected") - }).catch((err) => { - console.error("Index Failed to isOpenAccessibility. Cause: " + JSON.stringify(err)) - }) - } catch (error) { - Logger.error("Index Failed to isOpenAccessibility. Cause: " + JSON.stringify(error)) - } - try { - accessibility.on("accessibilityStateChange", (data) => { - this.connectState = data ? $r("app.string.state_connected") : $r("app.string.state_unconnected") - Logger.info("Index Subscribe accessibility state change. Result: " + JSON.stringify(data)) - }) - } catch (error) { - Logger.error("Index Failed to subscribe accessibility state change. Cause: " + JSON.stringify(error)) - } - } - - aboutToDisappear(): void { - Logger.info("Index aboutToDisappear()") - try { - accessibility.off("accessibilityStateChange", (data) => { - Logger.info("Index Unsubscribe accessibility state change. Result: " + JSON.stringify(data)) - }) - } catch (error) { - Logger.error("Index Failed to unsubscribe accessibility state change. Cause: " + JSON.stringify(error)) - } - } - - build() { - Row() { - Column() { - Row() { - Text(this.accessibilityTest) - .fontSize(30) - .fontWeight(FontWeight.Bold) - .margin(20) - } - - Row() { - Text(this.currentState) - .fontSize(25) - .fontWeight(FontWeight.Bold) - Text(": ") - .fontSize(25) - .fontWeight(FontWeight.Bold) - Text(this.connectState) - .fontSize(25) - .fontWeight(FontWeight.Bold) - } - .margin(20) - - Row() { - Button($r("app.string.accessibility_focus")) - .fontSize(20) - .fontWeight(FontWeight.Bold) - .type(ButtonType.Capsule) - .margin({ - top: 5, - bottom: 5 - }) - .backgroundColor("#0D9FFB") - .width("60%") - .height("5%") - } - .margin(10) - - Row() { - Button(this.buttonClickState) - .fontSize(20) - .fontWeight(FontWeight.Bold) - .type(ButtonType.Capsule) - .margin({ - top: 5, - bottom: 5 - }) - .backgroundColor("#0D9FFB") - .width("60%") - .height("5%") - .onClick(() => { - let currentClickState = ResourceUtils.getStringByResource(this.context, this.buttonClickState) - Logger.info("currentClickState: " + currentClickState) - if (currentClickState == ResourceUtils.getStringByName(this.context, "accessibility_not_clicked")) { - this.buttonClickState = $r("app.string.accessibility_clicked") - } else { - this.buttonClickState = $r("app.string.accessibility_not_clicked") - } - }) - } - .margin(10) - } - .width('100%') - } - .height('100%') - } -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/utils/AccessibilityUtils.ts b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/utils/AccessibilityUtils.ts deleted file mode 100644 index ae78a5b89e..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/utils/AccessibilityUtils.ts +++ /dev/null @@ -1,107 +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. - */ - -import Logger from '../utils/Logger' - -export default class AccessibilityUtils { - constructor() { - } - - static async getAttributeValue(accessibilityElement, key) { - Logger.info("AccessibilityUtils getAttributeValue") - if (accessibilityElement == null) { - Logger.error("AccessibilityUtils accessibilityElement is null") - return null - } - - let keys = await accessibilityElement.attributeNames() - let value = undefined - let isExit = false - for (let keyString of keys) { - if (key == keyString) { - isExit = true - } - } - if (isExit) { - try { - value = await accessibilityElement.attributeValue(key) - } catch (error) { - Logger.error("AccessibilityUtils Failed to get attributeValue of " + key + ". Cause: " + JSON.stringify(error)) - } - } - return value - } - - static async getElementWantedInfo(accessibilityElement, wantedAttribute) { - Logger.info("AccessibilityUtils getElementAllInfo") - if (accessibilityElement == null) { - Logger.error("AccessibilityUtils accessibilityElement is null") - return null - } - - let info = "" - let value = undefined - for (let name of wantedAttribute) { - value = await AccessibilityUtils.getAttributeValue(accessibilityElement, name); - info = info.concat(name + ": " + value + " ") - } - return info - } - - static async createElementArray(accessibilityElement) { - Logger.info("AccessibilityUtils createElementArray") - let resultArray = [] - if (accessibilityElement == null) { - Logger.error("AccessibilityUtils accessibilityElement is null.") - return resultArray - } - - let stack = [] - stack.push(accessibilityElement) - let tmpElement - while (stack.length > 0) { - tmpElement = stack.pop() - resultArray.push(tmpElement) - let childElements = await AccessibilityUtils.getAttributeValue(tmpElement, "children") - if (childElements) { - for (let childElement of childElements) { - if (childElement != null) { - stack.push(childElement) - } - } - } else { - Logger.error("AccessibilityUtils this node does not have childElement") - } - } - return resultArray - } - - static async findElementByKey(elementArray, targetElement) { - Logger.info("AccessibilityUtils findElementByKey") - if (elementArray == null || elementArray.length == 0 || targetElement == null) { - return null - } - - let value = undefined - for (let element of elementArray) { - value = await AccessibilityUtils.getAttributeValue(element, targetElement.KEY) - if (value == targetElement.VALUE) { - return element - } - } - Logger.error("AccessibilityUtils Failed to find target element.") - return null - } -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/utils/Logger.ts b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/utils/Logger.ts deleted file mode 100644 index 9291dcb438..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/utils/Logger.ts +++ /dev/null @@ -1,45 +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. - */ - -import hilog from '@ohos.hilog' - -class LoggerModel { - private domain: number - private prefix: string - private format: string = '%{public}s, %{public}s' - - constructor(prefix: string) { - this.prefix = prefix - this.domain = 0xFF00 - } - - debug(...args: any[]) { - hilog.debug(this.domain, this.prefix, this.format, args) - } - - info(...args: any[]) { - hilog.info(this.domain, this.prefix, this.format, args) - } - - warn(...args: any[]) { - hilog.warn(this.domain, this.prefix, this.format, args) - } - - error(...args: any[]) { - hilog.error(this.domain, this.prefix, this.format, args) - } -} - -export default new LoggerModel('[Sample_AccessibilityExtAbility]') \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/utils/ResourceUtils.ts b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/utils/ResourceUtils.ts deleted file mode 100644 index 7a88a2719c..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/ets/utils/ResourceUtils.ts +++ /dev/null @@ -1,53 +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. - */ - -import Logger from './Logger' - -class ResourceUtils { - constructor() { - } - - static getStringByName(context, name) { - Logger.info("ResourceUtils getStringByName") - if (context == null) { - Logger.error("ResourceUtils context is null") - return - } - let value = null - try { - value = context.resourceManager.getStringByNameSync(name) - } catch (error) { - Logger.error("ResourceUtils Failed to get string. Cause: " + JSON.stringify(error)) - } - return value - } - - static getStringByResource(context, resource) { - Logger.info("ResourceUtils getStringByResource") - if (context == null) { - Logger.error("ResourceUtils context is null") - return - } - let value = null - try { - value = context.resourceManager.getStringSync(resource) - } catch (error) { - Logger.error("ResourceUtils Failed to get string. Cause: " + JSON.stringify(error)) - } - return value - } -} - -export default ResourceUtils \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/module.json5 b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/module.json5 deleted file mode 100644 index 919cb5769d..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/module.json5 +++ /dev/null @@ -1,69 +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. - */ - -{ - "module": { - "name": "entry", - "type": "entry", - "srcEntrance": "./ets/Application/AbilityStage.ts", - "description": "$string:entry_desc", - "mainElement": "MainAbility", - "deviceTypes": [ - "default", - "tablet" - ], - "deliveryWithInstall": true, - "installationFree": false, - "pages": "$profile:main_pages", - "uiSyntax": "ets", - "abilities": [ - { - "name": "MainAbility", - "srcEntrance": "./ets/MainAbility/MainAbility.ts", - "description": "$string:MainAbility_desc", - "icon": "$media:icon", - "label": "$string:app_name", - "startWindowIcon": "$media:icon", - "startWindowBackground": "$color:start_window_background", - "visible": true, - "skills": [ - { - "entities": [ - "entity.system.home" - ], - "actions": [ - "action.system.home" - ] - } - ] - } - ], - "extensionAbilities": [ - { - "name": "AccessibilityExtAbility", - "srcEntrance": "./ets/AccessibilityExtAbility/AccessibilityExtAbility.ts", - "label": "$string:Accessibility_label", - "description": "$string:Accessibility_desc", - "type": "accessibility", - "metadata": [ - { - "name": "ohos.accessibleability", - "resource": "$profile:accessibility_config" - } - ] - } - ] - } -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/element/color.json b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/element/color.json deleted file mode 100644 index 3c712962da..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/element/color.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "color": [ - { - "name": "start_window_background", - "value": "#FFFFFF" - } - ] -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/element/string.json b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/element/string.json deleted file mode 100644 index ea72b387f3..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/element/string.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "string": [ - { - "name": "entry_desc", - "value": "description" - }, - { - "name": "MainAbility_desc", - "value": "description" - }, - { - "name": "MainAbility_label", - "value": "label" - }, - { - "name": "Accessibility_label", - "value": "accessibility label" - }, - { - "name": "Accessibility_desc", - "value": "accessibility description" - }, - { - "name": "accessibility_test", - "value": "Accessibility test" - }, - { - "name": "current_state", - "value": "Current state" - }, - { - "name": "state_unconnected", - "value": "Unconnected" - }, - { - "name": "state_connected", - "value": "Connected" - }, - { - "name": "accessibility_focus", - "value": "Focus" - }, - { - "name": "accessibility_not_clicked", - "value": "Clicked" - }, - { - "name": "accessibility_clicked", - "value": "Not clicked" - } - ] -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/media/icon.png b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/main/resources/base/media/icon.png deleted file mode 100644 index ce307a8827bd75456441ceb57d530e4c8d45d36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6790 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 { - Logger.info(TAG, 'onAbilityCreateCallback'); -} - -async function addAbilityMonitorCallback(err: object): Promise { - Logger.info(TAG, `addAbilityMonitorCallback : ${JSON.stringify(err)}`); -} - -export default class OpenHarmonyTestRunner implements TestRunner { - constructor() { - } - - onPrepare(): void { - Logger.info(TAG, 'OpenHarmonyTestRunner OnPrepare '); - } - - async onRun(): Promise { - Logger.info(TAG, 'OpenHarmonyTestRunner onRun run'); - abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments(); - abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); - let testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility'; - let lMonitor = { - abilityName: testAbilityName, - onAbilityCreate: onAbilityCreateCallback, - }; - abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback); - let cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName; - let debug = abilityDelegatorArguments.parameters['-D']; - if (debug === 'true') { - cmd += ' -D'; - } - Logger.info(TAG, `cmd : ${cmd}`); - abilityDelegator.executeShellCommand(cmd, - (err: object) => { - Logger.info(TAG, `executeShellCommand : err : ${JSON.stringify(err)}`); - }); - Logger.info(TAG, 'OpenHarmonyTestRunner onRun end'); - }; -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/test/Ability.test.ets b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/test/Ability.test.ets deleted file mode 100644 index 4913afff61..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/test/Ability.test.ets +++ /dev/null @@ -1,27 +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. - */ - -import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; - -export default function abilityTest() { - describe('ActsAbilityTest', function () { - it('assertContain', 0, function () { - let a = 'abc'; - let b = 'b'; - expect(a).assertContain(b); - expect(a).assertEqual(a); - }) - }) -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/test/App.test.ets b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/test/App.test.ets deleted file mode 100644 index 4e2a3581e5..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/test/App.test.ets +++ /dev/null @@ -1,61 +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. - */ - -import { describe, it, expect } from '@ohos/hypium'; -import { Driver, ON, Component } from '@ohos.UiTest'; -import UIAbility from '@ohos.app.ability.UIAbility'; -import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; -import Logger from '../util/Logger'; - -const TAG = 'AppTest'; -const BUNDLE = 'AccessibilityExtAbility_'; -let driver: Driver = Driver.create(); -let abilityDelegatorRegistry = AbilityDelegatorRegistry.getAbilityDelegator(); -let ability: UIAbility; - -export default function appTest() { - describe('appTest', function () { - // 启动应用 - it(BUNDLE + 'StartAbility_001', 0, async function (done) { - Logger.info(TAG, `${BUNDLE}StartAbility start`); - let want = { - bundleName: 'com.samples.accessibilityextability', - abilityName: 'MainAbility' - } - abilityDelegatorRegistry.startAbility(want, (err) => { - Logger.info(TAG, `${BUNDLE}StartAbility get err ${JSON.stringify(err)}`); - done(); - }); - ability = await abilityDelegatorRegistry.getCurrentTopAbility(); - Logger.info(TAG, `${BUNDLE}StartAbility end`); - }); - // 验证障碍服务的连接状态 - it(`${BUNDLE}CheckStatus_001`, 0, async () => { - Logger.info(TAG, `${BUNDLE}CheckStatus_001 begin`); - await driver.delayMs(5000); - let resourceManager = ability.context.resourceManager; - await driver.assertComponentExist(ON.text(await resourceManager.getStringValue($r('app.string.accessibility_test')))); - let cmd = 'accessibility enable -a AccessibilityExtAbility -b com.samples.accessibilityextability -c rgkt'; - abilityDelegatorRegistry.executeShellCommand(cmd, (err) => { - if (err) { - Logger.info(TAG, 'start Failed'); - expect().assertFail(); - } - }) - await driver.assertComponentExist(ON.text(await resourceManager.getStringValue($r('app.string.state_connected')))); - Logger.info(TAG, `${BUNDLE}CheckStatus_001 end`); - }) - }) -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/test/List.test.ets b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/test/List.test.ets deleted file mode 100644 index 71563aaa18..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/test/List.test.ets +++ /dev/null @@ -1,22 +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. - */ - -import abilityTest from './Ability.test' -import appTest from './App.test'; - -export default function testsuite() { - abilityTest() - appTest(); -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/testability/TestAbility.ets b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/testability/TestAbility.ets deleted file mode 100644 index 9323643bcd..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/testability/TestAbility.ets +++ /dev/null @@ -1,61 +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. - */ - -import UIAbility from '@ohos.app.ability.UIAbility'; -import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; -import type window from '@ohos.window'; -import { Hypium } from '@ohos/hypium'; -import testsuite from '../test/List.test'; -import Logger from '../util/Logger'; - -const TAG = 'TestAbility'; - - -export default class TestAbility extends UIAbility { - onCreate() { - Logger.info(TAG, 'TestAbility onCreate'); - let abilityDelegator: AbilityDelegatorRegistry.AbilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); - let abilityDelegatorArguments: AbilityDelegatorRegistry.AbilityDelegatorArgs = AbilityDelegatorRegistry.getArguments(); - Logger.info(TAG, 'start run testcase!!!'); - Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite); - } - - onDestroy() { - Logger.info(TAG, 'TestAbility onDestroy'); - } - - onWindowStageCreate(windowStage: window.WindowStage) { - Logger.info(TAG, 'TestAbility onWindowStageCreate'); - windowStage.loadContent('testability/pages/Index', (err) => { - if (err.code) { - Logger.error(TAG, `Failed to load the content. Cause:${JSON.stringify(err)}`); - return; - } - Logger.info(TAG, 'Succeeded in loading the content.'); - }); - } - - onWindowStageDestroy() { - Logger.info(TAG, 'TestAbility onWindowStageDestroy'); - } - - onForeground() { - Logger.info(TAG, 'TestAbility onForeground'); - } - - onBackground() { - Logger.info(TAG, 'TestAbility onBackground'); - } -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/testability/pages/Index.ets b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/testability/pages/Index.ets deleted file mode 100644 index 821eaf82ba..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/testability/pages/Index.ets +++ /dev/null @@ -1,54 +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. - */ - -import Logger from '../../util/Logger'; - -const TAG = 'UitestIndexPage'; - -@Entry -@Component -struct Index { - aboutToAppear() { - Logger.info(TAG, 'TestAbility index aboutToAppear'); - } - - @State message: string = 'Hello World'; - - build() { - Row() { - Column() { - Text(this.message) - .fontSize(50) - .fontWeight(FontWeight.Bold) - Button() { - Text('next page') - .fontSize(20) - .fontWeight(FontWeight.Bold) - } - .type(ButtonType.Capsule) - .margin({ - top: 20 - }) - .backgroundColor('#0D9FFB') - .width('35%') - .height('5%') - .onClick(() => { - }) - } - .width('100%') - } - .height('100%') - } -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/util/Logger.ts b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/util/Logger.ts deleted file mode 100644 index b5108e2285..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/ets/util/Logger.ts +++ /dev/null @@ -1,46 +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. - */ - -import hilog from '@ohos.hilog'; - -// 日志对应的领域标识,范围是0x0~0xFFFF。 -const DOMAIN: number = 0xF811; - -class Logger { - private prefix: string; - private format: string = '%{public}s, %{public}s'; - - constructor(prefix: string) { - this.prefix = prefix; - } - - debug(...args: string[]): void { - hilog.debug(DOMAIN, this.prefix, this.format, args); - } - - info(...args: string[]): void { - hilog.info(DOMAIN, this.prefix, this.format, args); - } - - warn(...args: string[]): void { - hilog.warn(DOMAIN, this.prefix, this.format, args); - } - - error(...args: string[]): void { - hilog.error(DOMAIN, this.prefix, this.format, args); - } -} - -export default new Logger('[Sample_AccessibilityExtAbility]'); \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/module.json5 b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/module.json5 deleted file mode 100644 index 22e2c611f3..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/module.json5 +++ /dev/null @@ -1,52 +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. - */ - -{ - "module": { - "name": "entry_test", - "type": "feature", - "description": "$string:module_test_desc", - "mainElement": "TestAbility", - "deviceTypes": [ - "default", - "tablet" - ], - "deliveryWithInstall": true, - "installationFree": false, - "pages": "$profile:test_pages", - "abilities": [ - { - "name": "TestAbility", - "srcEntrance": "./ets/testability/TestAbility.ets", - "description": "$string:TestAbility_desc", - "icon": "$media:icon", - "label": "$string:TestAbility_label", - "visible": true, - "startWindowIcon": "$media:icon", - "startWindowBackground": "$color:start_window_background", - "skills": [ - { - "actions": [ - "action.system.home" - ], - "entities": [ - "entity.system.home" - ] - } - ] - } - ] - } -} diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/base/element/color.json b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/base/element/color.json deleted file mode 100644 index 3c712962da..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/base/element/color.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "color": [ - { - "name": "start_window_background", - "value": "#FFFFFF" - } - ] -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/base/element/string.json b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/base/element/string.json deleted file mode 100644 index 07717b41b3..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/base/element/string.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "string": [ - { - "name": "module_test_desc", - "value": "test ability description" - }, - { - "name": "TestAbility_desc", - "value": "the test ability" - }, - { - "name": "TestAbility_label", - "value": "test label" - }, - { - "name": "accessibility_test", - "value": "accessibilitTest" - }, - { - "name": "current_state", - "value": "currentState" - }, - { - "name": "state_unconnected", - "value": "unconnected" - }, - { - "name": "state_connected", - "value": "connected" - } - ] -} \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/base/media/icon.png b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/entry/src/ohosTest/resources/base/media/icon.png deleted file mode 100644 index ce307a8827bd75456441ceb57d530e4c8d45d36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6790 zcmX|G1ymHk)?T_}Vd;>R?p|tHQo6fg38|$UVM!6BLrPFWk?s;$LOP{GmJpBl$qoSA!PUg~PA65-S00{{S`XKG6NkG0RgjEntPrmV+?0|00mu7;+5 zrdpa{2QLqPJ4Y{j7=Mrl{BaxrkdY69+c~(w{Fv-v&aR%aEI&JYSeRTLWm!zbv;?)_ ziZB;fwGbbeL5Q}YLx`J$lp~A09KK8t_z}PZ=4ZzgdeKtgoc+o5EvN9A1K1_<>M?MBqb#!ASf&# zEX?<)!RH(7>1P+j=jqG(58}TVN-$psA6K}atCuI!KTJD&FMmH-78ZejBm)0qc{ESp z|LuG1{QnBUJRg_E=h1#XMWt2%fcoN@l7eAS!Es?Q+;XsRNPhiiE=@AqlLkJzF`O18 zbsbSmKN=aaq8k3NFYZfDWpKmM!coBU0(XnL8R{4=i|wi{!uWYM2je{U{B*K2PVdu&=E zTq*-XsEsJ$u5H4g6DIm2Y!DN`>^v|AqlwuCD;w45K0@eqauiqWf7l&o)+YLHm~|L~ z7$0v5mkobriU!H<@mVJHLlmQqzQ3d6Rh_-|%Yy2li*tHO>_vcnuZ7OR_xkAIuIU&x z-|8Y0wj|6|a6_I(v91y%k_kNw6pnkNdxjqG8!%Vz_d%c_!X+6-;1`GC9_FpjoHev5fEV7RhJ>r=mh-jp$fqbqRJ=obwdgLDVP5+s zy1=_DWG0Y-Jb3t^WXmkr(d9~08k-|#Ly zaNOmT(^9tIb&eb4%CzIT zAm3CUtWSr1t4?h1kk#NBi{U|pJslvME{q|_eS^3En>SOqSxyuN1x;Is@8~m?*>}** znrRFArP!K_52RpX*&JHMR<^lVdm8ypJ}0R(SD(51j;6@ni$6bQ+2XL+R^|NnSp5}(kzvMZ^(@4fD_{QVu$(&K6H|C37TG1Am9Re{<<3gd zh@`>;BqkXMW&p0T6rt|iB$)~CvFe(XC)F9WgAZn*0@t$oZo;!*}r@_`h?KKH&6A@3= zISXoQB+~`op>NP-buiA*^0n{@i{_?MRG)&k)c)k_F+-2Lud!S9pc+i`s74NpBCaGF zXN+pHkubw*msGBTY27BKHv)RRh3;nMg4&$fD_6X9Vt~;_4D+5XPH~#Kn-yjcy!$}1 zigv#FNY>TqMhtIBb@UoF!cE~Q8~;!Pek>SQQwHnHuWKoVBosAiOr}q>!>aE*Krc)V zBUMEcJ5NU0g8}-h6i1zpMY9>m4ne?=U2~`w7K7Q0gB_=p@$5K7p6}thw z-~3dMj?YNX2X$lZ+7ngQ$=s}3mizNN@kE%OtB)?c&i~2L55z8^=yz;xMHLmlY>&Q# zJj?!)M#q_SyfkQh)k?j8IfLtB)ZCp|*vf4_B zos?73yd^h-Ac+;?E4*bpf=o*^3x3-`TVjbY4n6!EN10K6o@fxdyps05Vo3PU)otB} z`3kR+2w7_C#8Z!q`J)p{Vh!+m9-UP!$STp+Hb}}#@#_u^SsUQg<}59< zTvH3%XS4G+6FF^(m6bVF&nSUIXcl;nw{=H$%fgeJ>CgDYiLdpDXr{;-AnG z8dvcrHYVMI&`R6;GWekI@Ir3!uo)oz4^{6q0m^}@f2tM9&=YHNi6-?rh0-{+k@cQm zdp`g#YdQn%MDVg2GR>wZ`n2<0l4)9nx1Wfr&!Dvz=bPwU!h2S?ez6MVc5APE4-xLB zi&W9Q8k2@0w!C53g?iAIQ}~p*3O(@zja6KQ=M3zfW*_6o5SwR-)6VBh~m7{^-=MC-owYH5-u40a}a0liho3QZZ5L{bS_xM1)4}19)zTU$$MY zq3eZML1WC{K%YFd`Be0M-rkO^l?h{kM{$2oK1*A@HVJ57*yhDkUF!2WZ&oA4Y-sK( zCY69%#`mBCi6>6uw(x4gbFaP0+FD*JKJ-q!F1E?vLJ+d35!I5d7@^eU?(CS|C^tmI5?lv@s{{*|1F zFg|OzNpZ0hxljdjaW%45O0MOttRrd(Z?h{HYbB-KFUx&9GfFL3b8NwZ$zNu)WbBD` zYkj$^UB5%3Pj1MDr>S2Ejr9pUcgA!;ZG!@{uAy12)vG=*^9-|dNQBc8&`oxBlU~#y zs!anJX&T?57Jdr^sb>e+V`MVfY>Y0ESg7MG<7W0g&bR-ZYzzZ%2H&Etcp zcd6QeXO1D!5A#zM0lx*GH}`M)2~ZFLE;sP^RSB5wVMNfiZXPd(cmO>j=OSA3`o5r& zna(|^jGXbdN7PK)U8b7^zYtYkkeb%<%F~=OqB~kXMQkq}ii|skh@WSRt>5za;cjP0 zZ~nD%6)wzedqE}BMLt~qKwlvTr33))#uP~xyw#*Eaa|DbMQ_%mG0U8numf8)0DX`r zRoG2bM;#g|p-8gWnwRV5SCW0tLjLO&9Z?K>FImeIxlGUgo0Zk`9Qzhj1eco~7XZy+hXc@YF&ZQ=? zn*^1O56yK^x{y}q`j7}blGCx%dydV!c7)g~tJzmHhV=W~jbWRRR{1<^oDK+1clprm zz$eCy7y9+?{E|YgkW~}}iB#I4XoJ*xr8R?i_Hv$=Cof5bo-Nj~f`-DLebH}&0% zfQj9@WGd4;N~Y?mzQsHJTJq6!Qzl^-vwol(+fMt#Pl=Wh#lI5Vmu@QM0=_r+1wHt` z+8WZ~c2}KQQ+q)~2Ki77QvV&`xb|xVcTms99&cD$Zz4+-^R4kvUBxG8gDk7Y`K*)JZ^2rL(+ZWV~%W(@6 z)0bPArG#BROa_PHs~&WplQ_UIrpd)1N1QGPfv!J(Z9jNT#i%H?CE6|pPZb9hJ1JW4 z^q;ft#!HRNV0YgPojzIYT`8LuET2rUe-J|c!9l4`^*;4WtY@Ew@pL>wkjmMgGfN7 ze}}GtmU0@<_#08~I-Suk=^*9GLW=H4xhsml;vAV{%hy5Eegl@!6qKqbG024%n2HHw zCc@ivW_$@5ZoHP70(7D+(`PvgjW1Pd`wsiuv-aCukMrafwDm)B!xXVy*j2opohhoU zcJz%ADmj>i3`-3-$7nQKBQQuGY;2Qt&+(L~C>vSGFj5{Mlv?T_^dql;{zkpe4R1}R z%XfZyQ}wr*sr>jrKgm*PWLjuVc%6&&`Kbf1SuFpHPN&>W)$GmqC;pIoBC`=4-hPY8 zT*>%I2fP}vGW;R=^!1be?ta2UQd2>alOFFbVl;(SQJ4Jk#)4Z0^wpWEVvY4=vyDk@ zqlModi@iVPMC+{?rm=4(n+<;|lmUO@UKYA>EPTS~AndtK^Wy^%#3<;(dQdk3WaUkRtzSMC9}7x2||CNpF#(3T4C)@ z$~RWs`BNABKX|{cmBt>Q=&gkXl&x!!NK_%5hW0LS)Z4PB>%sV?F-{Wyj#s7W%$F{D zXdK^Fp3wvy+48+GP6F_|^PCRx=ddcTO3sG;B23A49~Qaw31SZ0Rc~`r4qqt%#OGW{ zCA_(LG5^N>yzUn&kAgVmxb=EA8s&tBXC}S1CZ(KoW)(%^JjLTPo^fs`Va;`=YlVPgmB$!yB}<(4ym6OeZ3xAJJ#;)2+B%p3P1Wt+d$eo`vz`T zXfUP2))kBDPoscH;Jc7I3NU<({|@wM$&GaDt`n7WLgIY3IA7A6-_R?z8N3mz|}*i z(zl5ot--Oq@f2-nv{X(ujT2T(k1vY_qh93pK@>H-qc%2Xta)IP0Q%zt%bqYgI`o!wv!0QerB`nCN^1n|@$sVOQ!V0teVG!I z_fD%JvfDeT1cK#-{o6Gv7}& zY0#NWin~kVaf$aufV&;63Hbs|`QVZWpDX6IMk1Hj2G}fiH9e-^6u2zf^FIr^BwD<6zjw63+{yUe8PUFvk8v{sJ=R{d#`O!sz`Q13~< zPT$JS(w=yQfU2`zPCNfSw=&zup@DXc(98afjhv@1w_f!m2Z>rMJ19AB&dB%P#Ls3b z=lK7OILM+SQ&VEd=1GN6o&>YVVtIzoZ%=Z_SdqJN2}E43{bE`>w+A;=y->@^k{oCC z$F*WTY&?34;kfyFV?b*Xb1Pq`Z=%OgwEg)Rz)tx=`f%5#w_INP=x&z5!jI;#;N$ma zhO)+MDm;SxOEVL15; zGq(v2pL3&P1Sl)8P*;G-fd{l1QJsv@e@d8)1PK4w2m*M%V3j-V~L^$i|&C@b?D?9tfwE{B^}Z$k8e5FmQ>v7Xz)sG32g9t}YBt zyR$+*_00RmPx+0mW+vVG4mxd(n$(eQf3-w>JPl2UJpafrPaL5@2j}%{VE-) zBI%6Qpj*dsdH<;g!S!avA~bv^0E+ zfyJbSjPb+j;J52U)<|cIcntQBI2T#>2;tOxu{%D?kML476AErF(qN9hPva5Nkc@BF zC-tLF@3ZFb%Kpj)M<{)x*l|*Ia@ECeXo2E4h2f!aV=cHAhi_E_mfUth(sM4^hJq7B zQsGWqdZUm9S%F`$nQ*_#NcuD`&)Ek%_s{&^78{9Hm ztri&rYLOxgFdG>O@+XHy z9#;|&vBCPXH5Mon^I`jSuR$&~ZWtyB67ujzFSj!51>#C}C17~TffQ{c-!QFQkTQ%! zIR^b1`zHx|*1GU?tbBx23weFLz5H?y_Q%N&t$}k?w+``2A=aotj0;2v$~AL z{scF-cL{wsdrmPvf#a9OHyYLcwQD4Kcm)`LLwMh4WT~p29f7M!iafJSU`IV}QY5Wa z(n44-9oA}?J{a+ah*@31WTs#&J#o1`H98#6IQf;Wv0N_!);f&9g7o-k(lW5rWnDUR zQBFIRG+X=6NnsI@mxnwm;tf5;_Uxg?jZ8m-m0}&6+DA!qam(p$mN5R})yA_7m$q@| zFEd|dpS595rxQr-n#GjI5i-AhnUE>Cr;jpCqSrD~EwK_DqI^7%3#p5)%T_od!t3SOmH9MyXeeGO2(UQL;ax|x?Ncixmeo1=$ z{-);Au{*tfzOG?KQ~K|ak8-HQ?`Pekhe2WM(8s{xv-p>Zmu_6{G!-oE$7$mY`MOJorI=+mMx?H;`pr!;fVYz?5~yXBACruWB`Ph zZM}90_<^OBxIhyZ9BW$`>6JvO;%VFpqVr8|7t3~AmxYak6?`Pp#c;**_SYmi`&z23 z`p6_~ePvH)C6x-G9$hgL=eVALq`-AiamN>!3~Lxw&{H(b{B(7xSRm6<3<{%{yXiH# zos5Rv1L+8fUKJLo%P>4I&$}y="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/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigorfile.js b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigorfile.js deleted file mode 100644 index 5f2735e3de..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigorfile.js +++ /dev/null @@ -1,2 +0,0 @@ -// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. -module.exports = require('@ohos/hvigor-ohos-plugin').appTasks \ No newline at end of file diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigorw b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigorw deleted file mode 100644 index d0a563c20a..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigorw +++ /dev/null @@ -1,63 +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/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigorw.bat b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigorw.bat deleted file mode 100644 index af893e9a2c..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/hvigorw.bat +++ /dev/null @@ -1,72 +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% %* - -:fail -exit /b 1 diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/oh-package.json5 b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/oh-package.json5 deleted file mode 100644 index b687929685..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/oh-package.json5 +++ /dev/null @@ -1,26 +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. - */ - -{ - "license": "ISC", - "devDependencies": { - "@ohos/hypium": "1.0.6" - }, - "name": "accessibilityextability", - "description": "example description", - "repository": {}, - "version": "1.0.0", - "dependencies": {} -} diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/ohosTest.md b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/ohosTest.md deleted file mode 100644 index 416643900a..0000000000 --- a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/ohosTest.md +++ /dev/null @@ -1,8 +0,0 @@ -# AbilityConnectServiceExtention 测试用例归档 - -## 用例表 - -|测试功能|预置条件|输入|预期输出|测试结果| -|--------------------------------|--------------------------------|--------------------------------|--------------------------------|--------------------------------| -|拉起应用| 应用正常运行| |成功拉起应用|Pass| -|验证连接状态| 位于主页| 文本校验|文本显示已连接|Pass| diff --git a/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/screenshots/device/Connected.png b/code/SystemFeature/ApplicationModels/AccessibilityExtAbility/screenshots/device/Connected.png deleted file mode 100644 index bd421b4e427ead64ee87f3ca04bb48962cf72357..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48093 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�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 Lsxq}wCZYca9@>k} -- Gitee