diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..455bc93 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,35 @@ +name: "Test" +on: + pull_request: + push: + branches: + - main + +jobs: + BrowserTest: + runs-on: ubuntu-latest + strategy: + matrix: + node: [14, 16, 18] + steps: + - name: Checkout Code + uses: actions/checkout@v3 + - name: Install Node + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node }} + check-latest: true + cache: "npm" + - name: Install Dependencies + run: npm ci + + - name: Setup JDK 17 + uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: temurin + - name: Setup Android SDK + uses: amyu/setup-android@v3 + + - name: Run tests 👩🏽‍💻 + run: npm run test diff --git a/README-ZH_CN.md b/README-ZH_CN.md new file mode 100644 index 0000000..67d476a --- /dev/null +++ b/README-ZH_CN.md @@ -0,0 +1,420 @@ +# android-tools + +使用 Nodejs 控制管理 Andorid 设备。 + +## 安装 + +```shell +npm i @wtto00/android-tools +``` + +## 用法 + +```js +import Android from "@wtto00/android-tools"; + +const options = { + // adb: "platform-tools/adb", + // avdmanager: "cmdline-tools/bin/avdmanager", + // sdkmanager: "cmdline-tools/bin/sdkmanager", + // emulator: "emulator/emulator", +}; +const android = new Android(options); +``` + +Andorid Options +| field | type | required | default | note | +| ----- | ---- | -------- | ------- | ---- | +|adb|string|false|`${process.env.ANDROID_HOME}/platform-tools/adb`或者系统环境已配置的`adb`路径|`adb` 可执行文件与 `ANDROID_HOME` 的相对路径| +|avdmanager|string|false|`${process.env.ANDROID_HOME}/cmdline-tools/bin/avdmanager`或者系统环境已配置的`avdmanager`路径|`avdmanager` 可执行文件与 `ANDROID_HOME` 的相对路径| +|sdkmanager|string|false|`${process.env.ANDROID_HOME}/cmdline-tools/bin/sdkmanager`或者系统环境已配置的`sdkmanager`路径|`sdkmanager` 可执行文件与 `ANDROID_HOME` 的相对路径| +|emulator|string|false|`${process.env.ANDROID_HOME}/emulator/emulator`或者系统环境已配置的`emulator`路径|`emulator` 可执行文件与 `ANDROID_HOME` 的相对路径| + +### start + +打开一个已存在的模拟器设备。 + +```js +android + .start("android-avd-name") + .then((res) => { + console.log(`emulatorId: ${res.id}`); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ------- | ------ | -------- | ------- | ---------- | +| avdName | string | true | - | 模拟器名称 | + +### waitForDevice + +等待给定的设备打开,可使用状态。 + +```js +android + .waitForDevice("emulator-id") + .then(() => { + console.log("available"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | ------------- | +| emulatorId | string | true | - | 模拟器设备 ID | + +### ensureReady + +确保给定的设备已准备就绪。可以 adb 执行一系列命令。 + +```js +android + .ensureReady("emulator-id") + .then(() => { + console.log("ready"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | ------------- | +| emulatorId | string | true | - | 模拟器设备 ID | + +### createAVD + +创建一个模拟器。 + +```js +android + .createAVD({ + name: avdName, + package: "android-image-name", + force: false, + }) + .then(() => { + console.log("has been created"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ------- | ------- | -------- | ------- | --------------------------------------------------------------------------------------- | +| sdcard | string | false | - | 共享 SD 卡镜像的路径,或者为新模拟器选择一个新的 SD 卡大小。 | +| tag | string | false | - | 用于模拟器的 sys-img 标签。默认情况下,如果平台只有一个标签用于其系统镜像,则自动选择。 | +| path | string | false | - | 新的模拟器将创建在哪个目录位置。 | +| package | string | true | - | 此模拟器的系统镜像的路径(例如 'system-images;android-19;google_apis;x86')。 | +| name | string | false | - | 新模拟器的名称。 | +| skin | string | false | - | 此设备可选择使用的皮肤名称。 | +| force | boolean | false | - | 创建虚拟设备(覆盖现有的模拟器)。 | +| abi | string | false | - | 如果平台的系统镜像只有一个 ABI,则默认为自动选择 ABI 来使用模拟器。 | +| device | string | false | - | 可选的要使用的设备定义。可以是设备索引或 id。 | + +### hasAVD + +当前系统是否已存在给定的模拟器。 + +```js +android + .hasAVD("android-avd-name") + .then((res) => { + console.log(res ? "has been created" : "not exist"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | ---------- | +| emulatorId | string | true | - | 模拟器名称 | + +### stop + +停止给定的模拟器。 + +```js +android + .stop("emulator-id") + .then(() => { + console.log("has sent stop command"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | ------------- | +| emulatorId | string | true | - | 模拟器设备 ID | + +### waitForStop + +等待给定的模拟器停止完毕。 + +```js +android + .waitForStop("emulator-id") + .then(() => { + console.log("has been stopped"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | ------------- | +| emulatorId | string | true | - | 模拟器设备 ID | + +### isInstalled + +在给定的模拟器设备和,是否已安装给定的软件包。 + +```js +android + .isInstalled("emulator-id", "com.android.webview") + .then((res) => { + console.log(res ? "installed" : "not installed"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ----------- | ------ | -------- | ------- | ------------- | +| emulatorId | string | true | - | 模拟器设备 ID | +| packageName | string | true | - | 软件包 id | + +### install + +为给定的模拟器设备安装给定的软件包。 + +```js +android + .isInstalled("emulator-id", "/path/to/apk") + .then(() => { + console.log("installed"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | ---------------------- | +| emulatorId | string | true | - | 模拟器设备 ID | +| apkPath | string | true | - | apk 安装包所在路径位置 | + +### inputKeyEvent + +发送按键指令给给定的模拟器设备。 + +```js +android + .inputKeyEvent("emulator-id", 82) + .then(() => { + console.log("has send key"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | -------------------------------------------------------------------------------------------------- | +| emulatorId | string | true | - | 模拟器设备 ID | +| key | number | true | - | 所要发送的按键 key 值,见[安卓文档](https://developer.android.com/reference/android/view/KeyEvent) | + +### devices + +列出当前已连接的设备。相当于`adb devices`。 + +```js +android + .devices() + .then((res) => { + res.forEach((item) => { + console.log(`name: ${item.name}, status: ${item.status}`); + }); + }) + .catch((err) => { + console.log(err); + }); +``` + +### listPackages + +列出给定设备上,已安装的软件包 + +```js +android + .listPackages("emulator-id") + .then((res) => { + res.forEach((item) => { + console.log(item); + }); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | ------------- | +| emulatorId | string | true | - | 模拟器设备 ID | + +### listDevices + +列出当前系统可用的用于创建模拟器的设备列表。 + +```js +android + .listDevices() + .then((res) => { + res.forEach((item) => { + console.log(`id: ${item.id}, Name: ${item.Name}, OEM: ${item.OEM}, Tag: ${item.Tag}`); + }); + }) + .catch((err) => { + console.log(err); + }); +``` + +### listAVDs + +详细列出当前已创建的模拟器列表。 + +```js +android + .listAVDs() + .then((res) => { + res.forEach((item) => { + console.log(`Name: ${item.Name}, Path: ${item.Path}, Target: ${item.Target}, Sdcard: ${item.Sdcard}`); + }); + }) + .catch((err) => { + console.log(err); + }); +``` + +### listTargets + +列出可用的安卓镜像设备。 + +```js +android + .listTargets() + .then((res) => { + res.forEach((item) => { + console.log(`id: ${item.id}, Name: ${item.Name}, Type: ${item.Type}, API level: ${item["API level"]}`); + }); + }) + .catch((err) => { + console.log(err); + }); +``` + +### listImages + +列出所有的安卓镜像。 + +```js +android + .listImages() + .then((res) => { + res.forEach((item) => { + console.log( + `name: ${item.name}, type: ${item.type}, sdk: ${item.sdk}, vendor: ${item.vendor}, arch: ${item.arch}` + ); + }); + }) + .catch((err) => { + console.log(err); + }); +``` + +### adb + +使用`adb`执行自定义命令。 + +```js +android + .adb("emulator-id", "shell pm list packages") + .then((res) => { + console.log(res.output); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ----- | ------ | -------- | ------- | ------------ | +| cmd | string | true | - | 要执行的命令 | + +### avdmanager + +使用`avdmanager`执行自定义命令。 + +```js +android + .avdmanager("list avd") + .then((res) => { + console.log(res.output); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ----- | ------ | -------- | ------- | ------------ | +| cmd | string | true | - | 要执行的命令 | + +### sdkmanager + +使用`sdkmanager`执行自定义命令。 + +```js +android + .sdkmanager("--list") + .then((res) => { + console.log(res.output); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ----- | ------ | -------- | ------- | ------------ | +| cmd | string | true | - | 要执行的命令 | + +### emulator + +使用`emulator`执行自定义命令。 + +```js +android + .emulator("--help") + .then((res) => { + console.log(res.output); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ----- | ------ | -------- | ------- | ------------ | +| cmd | string | true | - | 要执行的命令 | diff --git a/README.md b/README.md index da82b9c..c624b4c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,420 @@ # android-tools + Node module for managing and controlling the Android Devices. + +## Install + +```shell +npm i @wtto00/android-tools +``` + +## Usage + +```js +import Android from "@wtto00/android-tools"; + +const options = { + // adb: "platform-tools/adb", + // avdmanager: "cmdline-tools/bin/avdmanager", + // sdkmanager: "cmdline-tools/bin/sdkmanager", + // emulator: "emulator/emulator", +}; +const android = new Android(options); +``` + +Andorid Options +| field | type | required | default | note | +| ----- | ---- | -------- | ------- | ---- | +|adb|string|false|`${process.env.ANDROID_HOME}/platform-tools/adb` or `adb` in `PATH`|The location of the `adb` executable file relative to `ANDROID_HOME`| +|avdmanager|string|false|`${process.env.ANDROID_HOME}/cmdline-tools/bin/avdmanager` or `avdmanager` in `PATH`| The location of the `avdmanager` executable file relative to `ANDROID_HOME`| +|sdkmanager|string|false|`${process.env.ANDROID_HOME}/cmdline-tools/bin/sdkmanager` or `sdkmanager` in `PATH`|The location of the `sdkmanager` executable file relative to `ANDROID_HOME`| +|emulator|string|false|`${process.env.ANDROID_HOME}/emulator/emulator` or `emulator` in `PATH`|The location of the `emulator` executable file relative to `ANDROID_HOME`| + +### start + +Start the emulator using the AVD supplied through with `avdName`. + +```js +android + .start("android-avd-name") + .then((res) => { + console.log(`emulatorId: ${res.id}`); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ------- | ------ | -------- | ------- | ----------- | +| avdName | string | true | - | Name of AVD | + +### waitForDevice + +Waiting for the simulator device to become available. + +```js +android + .waitForDevice("emulator-id") + .then(() => { + console.log("available"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | --------------------- | +| emulatorId | string | true | - | ID of emulator device | + +### ensureReady + +Ensure device has been started and ready. + +```js +android + .ensureReady("emulator-id") + .then(() => { + console.log("ready"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | --------------------- | +| emulatorId | string | true | - | ID of emulator device | + +### createAVD + +Create a AVD based upon `image`. + +```js +android + .createAVD({ + name: avdName, + package: "android-image-name", + force: false, + }) + .then(() => { + console.log("has been created"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ------- | ------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | +| sdcard | string | false | - | Path to a shared SD card image, or size of a new sdcard for the new AVD. | +| tag | string | false | - | The sys-img tag to use for the AVD. The default is to auto-select if the platform has only one tag for its system images. | +| path | string | false | - | Directory where the new AVD will be created. | +| package | string | true | - | Package path of the system image for this AVD (e.g. 'system-images;android-19;google_apis;x86'). | +| name | string | false | - | Name of the new AVD. | +| skin | string | false | - | The optional name of a skin to use with this device. | +| force | boolean | false | - | Forces creation (overwrites an existing AVD) | +| abi | string | false | - | The ABI to use for the AVD. The default is to auto-select the ABI if the platform has only one ABI for its system images. | +| device | string | false | - | The optional device definition to use. Can be a device index or id. | + +### hasAVD + +Check if a specific AVD has been created on this machine. + +```js +android + .hasAVD("android-avd-name") + .then((res) => { + console.log(res ? "has been created" : "not exist"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | ----------- | +| emulatorId | string | true | - | Name of AVD | + +### stop + +Stop a certain emulator. + +```js +android + .stop("emulator-id") + .then(() => { + console.log("has sent stop command"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | --------------------- | +| emulatorId | string | true | - | ID of emulator device | + +### waitForStop + +Wait until the device is stopped. + +```js +android + .waitForStop("emulator-id") + .then(() => { + console.log("has been stopped"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | --------------------- | +| emulatorId | string | true | - | ID of emulator device | + +### isInstalled + +Check the package specified with `packageName` is installed or not. + +```js +android + .isInstalled("emulator-id", "com.android.webview") + .then((res) => { + console.log(res ? "installed" : "not installed"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ----------- | ------ | -------- | ------- | --------------------- | +| emulatorId | string | true | - | ID of emulator device | +| packageName | string | true | - | Package name of App | + +### install + +Install an APK located by absolute URI `apkPath` onto device with `emulatorId`. + +```js +android + .isInstalled("emulator-id", "/path/to/apk") + .then(() => { + console.log("installed"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | ------------------------- | +| emulatorId | string | true | - | ID of emulator device | +| apkPath | string | true | - | Absolute path of apk file | + +### inputKeyEvent + +adb shell input keyevent. + +```js +android + .inputKeyEvent("emulator-id", 82) + .then(() => { + console.log("has send key"); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | ------------------------------------------------------------------------------------------------ | +| emulatorId | string | true | - | ID of emulator device | +| key | number | true | - | key number,see[Android Document](https://developer.android.com/reference/android/view/KeyEvent) | + +### devices + +List connected devices + +```js +android + .devices() + .then((res) => { + res.forEach((item) => { + console.log(`name: ${item.name}, status: ${item.status}`); + }); + }) + .catch((err) => { + console.log(err); + }); +``` + +### listPackages + +List packages installed on the emulator with `emulatorId`. + +```js +android + .listPackages("emulator-id") + .then((res) => { + res.forEach((item) => { + console.log(item); + }); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ---------- | ------ | -------- | ------- | --------------------- | +| emulatorId | string | true | - | ID of emulator device | + +### listDevices + +List the available device list for creating emulators in the current system. + +```js +android + .listDevices() + .then((res) => { + res.forEach((item) => { + console.log(`id: ${item.id}, Name: ${item.Name}, OEM: ${item.OEM}, Tag: ${item.Tag}`); + }); + }) + .catch((err) => { + console.log(err); + }); +``` + +### listAVDs + +List all AVDs created on this machine. + +```js +android + .listAVDs() + .then((res) => { + res.forEach((item) => { + console.log(`Name: ${item.Name}, Path: ${item.Path}, Target: ${item.Target}, Sdcard: ${item.Sdcard}`); + }); + }) + .catch((err) => { + console.log(err); + }); +``` + +### listTargets + +List available Android targets. + +```js +android + .listTargets() + .then((res) => { + res.forEach((item) => { + console.log(`id: ${item.id}, Name: ${item.Name}, Type: ${item.Type}, API level: ${item["API level"]}`); + }); + }) + .catch((err) => { + console.log(err); + }); +``` + +### listImages + +List available Android images on this machine. + +```js +android + .listImages() + .then((res) => { + res.forEach((item) => { + console.log( + `name: ${item.name}, type: ${item.type}, sdk: ${item.sdk}, vendor: ${item.vendor}, arch: ${item.arch}` + ); + }); + }) + .catch((err) => { + console.log(err); + }); +``` + +### adb + +Use `adb` to execute commands. + +```js +android + .adb("emulator-id", "shell pm list packages") + .then((res) => { + console.log(res.output); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ----- | ------ | -------- | ------- | --------------------------- | +| cmd | string | true | - | The command to be executed. | + +### avdmanager + +Use `avdmanager` to execute commands. + +```js +android + .avdmanager("list avd") + .then((res) => { + console.log(res.output); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ----- | ------ | -------- | ------- | --------------------------- | +| cmd | string | true | - | The command to be executed. | + +### sdkmanager + +Use `sdkmanager` to execute commands. + +```js +android + .sdkmanager("--list") + .then((res) => { + console.log(res.output); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ----- | ------ | -------- | ------- | --------------------------- | +| cmd | string | true | - | The command to be executed. | + +### emulator + +Use `emulator` to execute commands. + +```js +android + .emulator("--help") + .then((res) => { + console.log(res.output); + }) + .catch((err) => { + console.log(err); + }); +``` + +| field | type | required | default | note | +| ----- | ------ | -------- | ------- | --------------------------- | +| cmd | string | true | - | The command to be executed. | diff --git a/package.json b/package.json index a8f22f9..55c03f0 100644 --- a/package.json +++ b/package.json @@ -43,12 +43,12 @@ "@rollup/plugin-node-resolve": "^15.2.1", "@rollup/plugin-typescript": "^11.1.3", "@types/jest": "^29.5.4", - "@types/node": "^20.6.0", + "@types/node": "^20.6.1", "@types/promise-retry": "^1.1.3", - "jest": "^29.6.4", + "jest": "^29.7.0", "promise-retry": "^2.0.1", - "rollup": "^3.29.0", - "rollup-plugin-dts": "^6.0.1", + "rollup": "^3.29.1", + "rollup-plugin-dts": "^6.0.2", "ts-jest": "^29.1.1", "ts-node": "^10.9.1", "tslib": "^2.6.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d0f09a..395bbcc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,40 +7,40 @@ settings: devDependencies: '@rollup/plugin-commonjs': specifier: ^25.0.4 - version: 25.0.4(rollup@3.29.0) + version: 25.0.4(rollup@3.29.1) '@rollup/plugin-node-resolve': specifier: ^15.2.1 - version: 15.2.1(rollup@3.29.0) + version: 15.2.1(rollup@3.29.1) '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@3.29.0)(tslib@2.6.2)(typescript@5.2.2) + version: 11.1.3(rollup@3.29.1)(tslib@2.6.2)(typescript@5.2.2) '@types/jest': specifier: ^29.5.4 version: 29.5.4 '@types/node': - specifier: ^20.6.0 - version: 20.6.0 + specifier: ^20.6.1 + version: 20.6.1 '@types/promise-retry': specifier: ^1.1.3 version: 1.1.3 jest: - specifier: ^29.6.4 - version: 29.6.4(@types/node@20.6.0)(ts-node@10.9.1) + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.6.1)(ts-node@10.9.1) promise-retry: specifier: ^2.0.1 version: 2.0.1 rollup: - specifier: ^3.29.0 - version: 3.29.0 + specifier: ^3.29.1 + version: 3.29.1 rollup-plugin-dts: - specifier: ^6.0.1 - version: 6.0.1(rollup@3.29.0)(typescript@5.2.2) + specifier: ^6.0.2 + version: 6.0.2(rollup@3.29.1)(typescript@5.2.2) ts-jest: specifier: ^29.1.1 - version: 29.1.1(@babel/core@7.22.17)(jest@29.6.4)(typescript@5.2.2) + version: 29.1.1(@babel/core@7.22.19)(jest@29.7.0)(typescript@5.2.2) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.6.0)(typescript@5.2.2) + version: 10.9.1(@types/node@20.6.1)(typescript@5.2.2) tslib: specifier: ^2.6.2 version: 2.6.2 @@ -71,20 +71,20 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.22.17: - resolution: {integrity: sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==} + /@babel/core@7.22.19: + resolution: {integrity: sha512-Q8Yj5X4LHVYTbLCKVz0//2D2aDmHF4xzCdEttYvKOnWvErGsa6geHXD6w46x64n5tP69VfeH+IfSrdyH3MLhwA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.13 '@babel/generator': 7.22.15 '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/helper-module-transforms': 7.22.19(@babel/core@7.22.19) '@babel/helpers': 7.22.15 '@babel/parser': 7.22.16 '@babel/template': 7.22.15 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 + '@babel/traverse': 7.22.19 + '@babel/types': 7.22.19 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -98,7 +98,7 @@ packages: resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 @@ -125,35 +125,35 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true - /@babel/helper-module-transforms@7.22.17(@babel/core@7.22.17): - resolution: {integrity: sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==} + /@babel/helper-module-transforms@7.22.19(@babel/core@7.22.19): + resolution: {integrity: sha512-m6h1cJvn+OJ+R3jOHp30faq5xKJ7VbjwDj5RGgHuRlU9hrMeKsGC+JpihkR5w1g7IfseCPPtZ0r7/hB4UKaYlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.19 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -165,14 +165,14 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@babel/helper-string-parser@7.22.5: @@ -180,8 +180,8 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier@7.22.15: - resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} + /@babel/helper-validator-identifier@7.22.19: + resolution: {integrity: sha512-Tinq7ybnEPFFXhlYOYFiSjespWQk0dq2dRNAiMdRTOYQzEGqnnNyrTxPYHP5r6wGjlF1rFgABdDV0g8EwD6Qbg==} engines: {node: '>=6.9.0'} dev: true @@ -195,8 +195,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 + '@babel/traverse': 7.22.19 + '@babel/types': 7.22.19 transitivePeerDependencies: - supports-color dev: true @@ -206,7 +206,7 @@ packages: engines: {node: '>=6.9.0'} requiresBuild: true dependencies: - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.19 chalk: 2.4.2 js-tokens: 4.0.0 dev: true @@ -216,135 +216,135 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.17): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.19): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.19): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.17): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.19): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.17): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.19): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.19): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.17): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.19): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.17): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.19): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.19): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.17): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.19): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.19): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.19): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.19): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.17): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.19): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.17): + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.19): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -354,11 +354,11 @@ packages: dependencies: '@babel/code-frame': 7.22.13 '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true - /@babel/traverse@7.22.17: - resolution: {integrity: sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==} + /@babel/traverse@7.22.19: + resolution: {integrity: sha512-ZCcpVPK64krfdScRbpxF6xA5fz7IOsfMwx1tcACvCzt6JY+0aHkBk7eIU8FRDSZRU5Zei6Z4JfgAxN1bqXGECg==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 @@ -368,19 +368,19 @@ packages: '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types@7.22.17: - resolution: {integrity: sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==} + /@babel/types@7.22.19: + resolution: {integrity: sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.19 to-fast-properties: 2.0.0 dev: true @@ -411,20 +411,20 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console@29.6.4: - resolution: {integrity: sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==} + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.6.0 + '@types/node': 20.6.1 chalk: 4.1.2 - jest-message-util: 29.6.3 - jest-util: 29.6.3 + jest-message-util: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 dev: true - /@jest/core@29.6.4(ts-node@10.9.1): - resolution: {integrity: sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==} + /@jest/core@29.7.0(ts-node@10.9.1): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -432,32 +432,32 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.6.4 - '@jest/reporters': 29.6.4 - '@jest/test-result': 29.6.4 - '@jest/transform': 29.6.4 + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 + '@types/node': 20.6.1 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 - jest-changed-files: 29.6.3 - jest-config: 29.6.4(@types/node@20.6.0)(ts-node@10.9.1) - jest-haste-map: 29.6.4 - jest-message-util: 29.6.3 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.6.1)(ts-node@10.9.1) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 jest-regex-util: 29.6.3 - jest-resolve: 29.6.4 - jest-resolve-dependencies: 29.6.4 - jest-runner: 29.6.4 - jest-runtime: 29.6.4 - jest-snapshot: 29.6.4 - jest-util: 29.6.3 - jest-validate: 29.6.3 - jest-watcher: 29.6.4 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 micromatch: 4.0.5 - pretty-format: 29.6.3 + pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -466,59 +466,59 @@ packages: - ts-node dev: true - /@jest/environment@29.6.4: - resolution: {integrity: sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==} + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.6.4 + '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 - jest-mock: 29.6.3 + '@types/node': 20.6.1 + jest-mock: 29.7.0 dev: true - /@jest/expect-utils@29.6.4: - resolution: {integrity: sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==} + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 dev: true - /@jest/expect@29.6.4: - resolution: {integrity: sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==} + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.6.4 - jest-snapshot: 29.6.4 + expect: 29.7.0 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers@29.6.4: - resolution: {integrity: sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==} + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.6.0 - jest-message-util: 29.6.3 - jest-mock: 29.6.3 - jest-util: 29.6.3 + '@types/node': 20.6.1 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 dev: true - /@jest/globals@29.6.4: - resolution: {integrity: sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==} + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.6.4 - '@jest/expect': 29.6.4 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 '@jest/types': 29.6.3 - jest-mock: 29.6.3 + jest-mock: 29.7.0 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters@29.6.4: - resolution: {integrity: sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==} + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -527,12 +527,12 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.6.4 - '@jest/test-result': 29.6.4 - '@jest/transform': 29.6.4 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.19 - '@types/node': 20.6.0 + '@types/node': 20.6.1 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -543,9 +543,9 @@ packages: istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.6 - jest-message-util: 29.6.3 - jest-util: 29.6.3 - jest-worker: 29.6.4 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 @@ -570,31 +570,31 @@ packages: graceful-fs: 4.2.11 dev: true - /@jest/test-result@29.6.4: - resolution: {integrity: sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==} + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.6.4 + '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.2 dev: true - /@jest/test-sequencer@29.6.4: - resolution: {integrity: sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==} + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.6.4 + '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 - jest-haste-map: 29.6.4 + jest-haste-map: 29.7.0 slash: 3.0.0 dev: true - /@jest/transform@29.6.4: - resolution: {integrity: sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==} + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.19 babel-plugin-istanbul: 6.1.1 @@ -602,9 +602,9 @@ packages: convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-haste-map: 29.6.4 + jest-haste-map: 29.7.0 jest-regex-util: 29.6.3 - jest-util: 29.6.3 + jest-util: 29.7.0 micromatch: 4.0.5 pirates: 4.0.6 slash: 3.0.0 @@ -620,7 +620,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.6.0 + '@types/node': 20.6.1 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -662,7 +662,7 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@rollup/plugin-commonjs@25.0.4(rollup@3.29.0): + /@rollup/plugin-commonjs@25.0.4(rollup@3.29.1): resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -671,16 +671,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.0) + '@rollup/pluginutils': 5.0.4(rollup@3.29.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.29.0 + rollup: 3.29.1 dev: true - /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.0): + /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.1): resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -689,16 +689,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.0) + '@rollup/pluginutils': 5.0.4(rollup@3.29.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.4 - rollup: 3.29.0 + resolve: 1.22.5 + rollup: 3.29.1 dev: true - /@rollup/plugin-typescript@11.1.3(rollup@3.29.0)(tslib@2.6.2)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.3(rollup@3.29.1)(tslib@2.6.2)(typescript@5.2.2): resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -711,14 +711,14 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.0) - resolve: 1.22.4 - rollup: 3.29.0 + '@rollup/pluginutils': 5.0.4(rollup@3.29.1) + resolve: 1.22.5 + rollup: 3.29.1 tslib: 2.6.2 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.4(rollup@3.29.0): + /@rollup/pluginutils@5.0.4(rollup@3.29.1): resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -730,7 +730,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.29.0 + rollup: 3.29.1 dev: true /@sinclair/typebox@0.27.8: @@ -769,7 +769,7 @@ packages: resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} dependencies: '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.20.1 @@ -778,20 +778,20 @@ packages: /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@types/babel__traverse@7.20.1: resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@types/estree@1.0.1: @@ -801,7 +801,7 @@ packages: /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.1 dev: true /@types/istanbul-lib-coverage@2.0.4: @@ -823,12 +823,12 @@ packages: /@types/jest@29.5.4: resolution: {integrity: sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==} dependencies: - expect: 29.6.4 - pretty-format: 29.6.3 + expect: 29.7.0 + pretty-format: 29.7.0 dev: true - /@types/node@20.6.0: - resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} + /@types/node@20.6.1: + resolution: {integrity: sha512-4LcJvuXQlv4lTHnxwyHQZ3uR9Zw2j7m1C9DfuwoTFQQP4Pmu04O6IfLYgMmHoOCt0nosItLLZAH+sOrRE0Bo8g==} dev: true /@types/promise-retry@1.1.3: @@ -920,17 +920,17 @@ packages: sprintf-js: 1.0.3 dev: true - /babel-jest@29.6.4(@babel/core@7.22.17): - resolution: {integrity: sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==} + /babel-jest@29.7.0(@babel/core@7.22.19): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.17 - '@jest/transform': 29.6.4 + '@babel/core': 7.22.19 + '@jest/transform': 29.7.0 '@types/babel__core': 7.20.1 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.22.17) + babel-preset-jest: 29.6.3(@babel/core@7.22.19) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -956,40 +956,40 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 '@types/babel__core': 7.20.1 '@types/babel__traverse': 7.20.1 dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.17): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.19): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.17) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.17) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.17) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.17) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.17) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.17) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.22.17): + '@babel/core': 7.22.19 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.19) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.19) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.19) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.19) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.19) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.19) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.19) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.19) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.19) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.19) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.19) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.19) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.22.19): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.17) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.19) dev: true /balanced-match@1.0.2: @@ -1021,8 +1021,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001532 - electron-to-chromium: 1.4.513 + caniuse-lite: 1.0.30001534 + electron-to-chromium: 1.4.522 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) dev: true @@ -1064,8 +1064,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001532: - resolution: {integrity: sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==} + /caniuse-lite@1.0.30001534: + resolution: {integrity: sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==} dev: true /chalk@2.4.2: @@ -1157,6 +1157,25 @@ packages: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true + /create-jest@29.7.0(@types/node@20.6.1)(ts-node@10.9.1): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.6.1)(ts-node@10.9.1) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true @@ -1211,8 +1230,8 @@ packages: engines: {node: '>=0.3.1'} dev: true - /electron-to-chromium@1.4.513: - resolution: {integrity: sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw==} + /electron-to-chromium@1.4.522: + resolution: {integrity: sha512-KGKjcafTpOxda0kqwQ72M0tDmX6RsGhUJTy0Hr7slt0+CgHh9Oex8JdjY9Og68dUkTLUlBOJC0A5W5Mw3QSGCg==} dev: true /emittery@0.13.1: @@ -1280,15 +1299,15 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expect@29.6.4: - resolution: {integrity: sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==} + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.6.4 + '@jest/expect-utils': 29.7.0 jest-get-type: 29.6.3 - jest-matcher-utils: 29.6.4 - jest-message-util: 29.6.3 - jest-util: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 dev: true /fast-json-stable-stringify@2.1.0: @@ -1495,7 +1514,7 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/parser': 7.22.16 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -1508,7 +1527,7 @@ packages: resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/parser': 7.22.16 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -1545,36 +1564,36 @@ packages: istanbul-lib-report: 3.0.1 dev: true - /jest-changed-files@29.6.3: - resolution: {integrity: sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==} + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 - jest-util: 29.6.3 + jest-util: 29.7.0 p-limit: 3.1.0 dev: true - /jest-circus@29.6.4: - resolution: {integrity: sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==} + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.6.4 - '@jest/expect': 29.6.4 - '@jest/test-result': 29.6.4 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 + '@types/node': 20.6.1 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 is-generator-fn: 2.1.0 - jest-each: 29.6.3 - jest-matcher-utils: 29.6.4 - jest-message-util: 29.6.3 - jest-runtime: 29.6.4 - jest-snapshot: 29.6.4 - jest-util: 29.6.3 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 p-limit: 3.1.0 - pretty-format: 29.6.3 + pretty-format: 29.7.0 pure-rand: 6.0.3 slash: 3.0.0 stack-utils: 2.0.6 @@ -1583,8 +1602,8 @@ packages: - supports-color dev: true - /jest-cli@29.6.4(@types/node@20.6.0)(ts-node@10.9.1): - resolution: {integrity: sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==} + /jest-cli@29.7.0(@types/node@20.6.1)(ts-node@10.9.1): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -1593,17 +1612,16 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.6.4(ts-node@10.9.1) - '@jest/test-result': 29.6.4 + '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.6.1)(ts-node@10.9.1) exit: 0.1.2 - graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.6.4(@types/node@20.6.0)(ts-node@10.9.1) - jest-util: 29.6.3 - jest-validate: 29.6.3 - prompts: 2.4.2 + jest-config: 29.7.0(@types/node@20.6.1)(ts-node@10.9.1) + jest-util: 29.7.0 + jest-validate: 29.7.0 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' @@ -1612,8 +1630,8 @@ packages: - ts-node dev: true - /jest-config@29.6.4(@types/node@20.6.0)(ts-node@10.9.1): - resolution: {integrity: sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==} + /jest-config@29.7.0(@types/node@20.6.1)(ts-node@10.9.1): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -1624,73 +1642,73 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.17 - '@jest/test-sequencer': 29.6.4 + '@babel/core': 7.22.19 + '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 - babel-jest: 29.6.4(@babel/core@7.22.17) + '@types/node': 20.6.1 + babel-jest: 29.7.0(@babel/core@7.22.19) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 29.6.4 - jest-environment-node: 29.6.4 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 jest-get-type: 29.6.3 jest-regex-util: 29.6.3 - jest-resolve: 29.6.4 - jest-runner: 29.6.4 - jest-util: 29.6.3 - jest-validate: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.6.3 + pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.6.0)(typescript@5.2.2) + ts-node: 10.9.1(@types/node@20.6.1)(typescript@5.2.2) transitivePeerDependencies: - babel-plugin-macros - supports-color dev: true - /jest-diff@29.6.4: - resolution: {integrity: sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==} + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.6.3 - pretty-format: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-docblock@29.6.3: - resolution: {integrity: sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==} + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each@29.6.3: - resolution: {integrity: sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==} + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 jest-get-type: 29.6.3 - jest-util: 29.6.3 - pretty-format: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 dev: true - /jest-environment-node@29.6.4: - resolution: {integrity: sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==} + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.6.4 - '@jest/fake-timers': 29.6.4 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 - jest-mock: 29.6.3 - jest-util: 29.6.3 + '@types/node': 20.6.1 + jest-mock: 29.7.0 + jest-util: 29.7.0 dev: true /jest-get-type@29.6.3: @@ -1698,45 +1716,45 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map@29.6.4: - resolution: {integrity: sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==} + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.6 - '@types/node': 20.6.0 + '@types/node': 20.6.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 jest-regex-util: 29.6.3 - jest-util: 29.6.3 - jest-worker: 29.6.4 + jest-util: 29.7.0 + jest-worker: 29.7.0 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 dev: true - /jest-leak-detector@29.6.3: - resolution: {integrity: sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==} + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 - pretty-format: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-matcher-utils@29.6.4: - resolution: {integrity: sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==} + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.6.4 + jest-diff: 29.7.0 jest-get-type: 29.6.3 - pretty-format: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-message-util@29.6.3: - resolution: {integrity: sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==} + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.22.13 @@ -1745,21 +1763,21 @@ packages: chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.5 - pretty-format: 29.6.3 + pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 dev: true - /jest-mock@29.6.3: - resolution: {integrity: sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==} + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.6.0 - jest-util: 29.6.3 + '@types/node': 20.6.1 + jest-util: 29.7.0 dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@29.6.4): + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -1768,7 +1786,7 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.6.4 + jest-resolve: 29.7.0 dev: true /jest-regex-util@29.6.3: @@ -1776,132 +1794,132 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies@29.6.4: - resolution: {integrity: sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==} + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-regex-util: 29.6.3 - jest-snapshot: 29.6.4 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color dev: true - /jest-resolve@29.6.4: - resolution: {integrity: sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==} + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 - jest-haste-map: 29.6.4 - jest-pnp-resolver: 1.2.3(jest-resolve@29.6.4) - jest-util: 29.6.3 - jest-validate: 29.6.3 - resolve: 1.22.4 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.5 resolve.exports: 2.0.2 slash: 3.0.0 dev: true - /jest-runner@29.6.4: - resolution: {integrity: sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==} + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.6.4 - '@jest/environment': 29.6.4 - '@jest/test-result': 29.6.4 - '@jest/transform': 29.6.4 + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 + '@types/node': 20.6.1 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 - jest-docblock: 29.6.3 - jest-environment-node: 29.6.4 - jest-haste-map: 29.6.4 - jest-leak-detector: 29.6.3 - jest-message-util: 29.6.3 - jest-resolve: 29.6.4 - jest-runtime: 29.6.4 - jest-util: 29.6.3 - jest-watcher: 29.6.4 - jest-worker: 29.6.4 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime@29.6.4: - resolution: {integrity: sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==} + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.6.4 - '@jest/fake-timers': 29.6.4 - '@jest/globals': 29.6.4 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 '@jest/source-map': 29.6.3 - '@jest/test-result': 29.6.4 - '@jest/transform': 29.6.4 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 + '@types/node': 20.6.1 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 glob: 7.2.3 graceful-fs: 4.2.11 - jest-haste-map: 29.6.4 - jest-message-util: 29.6.3 - jest-mock: 29.6.3 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 jest-regex-util: 29.6.3 - jest-resolve: 29.6.4 - jest-snapshot: 29.6.4 - jest-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-snapshot@29.6.4: - resolution: {integrity: sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==} + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 '@babel/generator': 7.22.15 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.17) - '@babel/types': 7.22.17 - '@jest/expect-utils': 29.6.4 - '@jest/transform': 29.6.4 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.19) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.19) + '@babel/types': 7.22.19 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.17) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.19) chalk: 4.1.2 - expect: 29.6.4 + expect: 29.7.0 graceful-fs: 4.2.11 - jest-diff: 29.6.4 + jest-diff: 29.7.0 jest-get-type: 29.6.3 - jest-matcher-utils: 29.6.4 - jest-message-util: 29.6.3 - jest-util: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 natural-compare: 1.4.0 - pretty-format: 29.6.3 + pretty-format: 29.7.0 semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true - /jest-util@29.6.3: - resolution: {integrity: sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==} + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.6.0 + '@types/node': 20.6.1 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 picomatch: 2.3.1 dev: true - /jest-validate@29.6.3: - resolution: {integrity: sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==} + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 @@ -1909,35 +1927,35 @@ packages: chalk: 4.1.2 jest-get-type: 29.6.3 leven: 3.1.0 - pretty-format: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-watcher@29.6.4: - resolution: {integrity: sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==} + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.6.4 + '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 + '@types/node': 20.6.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.6.3 + jest-util: 29.7.0 string-length: 4.0.2 dev: true - /jest-worker@29.6.4: - resolution: {integrity: sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==} + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.6.0 - jest-util: 29.6.3 + '@types/node': 20.6.1 + jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.6.4(@types/node@20.6.0)(ts-node@10.9.1): - resolution: {integrity: sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==} + /jest@29.7.0(@types/node@20.6.1)(ts-node@10.9.1): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -1946,10 +1964,10 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.6.4(ts-node@10.9.1) + '@jest/core': 29.7.0(ts-node@10.9.1) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.6.4(@types/node@20.6.0)(ts-node@10.9.1) + jest-cli: 29.7.0(@types/node@20.6.1)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -2202,8 +2220,8 @@ packages: find-up: 4.1.0 dev: true - /pretty-format@29.6.3: - resolution: {integrity: sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 @@ -2257,8 +2275,8 @@ packages: engines: {node: '>=10'} dev: true - /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + /resolve@1.22.5: + resolution: {integrity: sha512-qWhv7PF1V95QPvRoUGHxOtnAlEvlXBylMZcjUR9pAumMmveFtcHJRXGIr+TkjfNJVQypqv2qcDiiars2y1PsSg==} hasBin: true dependencies: is-core-module: 2.13.0 @@ -2271,22 +2289,22 @@ packages: engines: {node: '>= 4'} dev: true - /rollup-plugin-dts@6.0.1(rollup@3.29.0)(typescript@5.2.2): - resolution: {integrity: sha512-XJbCldVrp4TLc2Hg4DfrRiJgzJ73uhZB0sPSDizgdlrhSJ1bsIkkRMkwRKNQYgkbfMz4CHLdbnFKVivHE0vsPA==} - engines: {node: '>=16'} + /rollup-plugin-dts@6.0.2(rollup@3.29.1)(typescript@5.2.2): + resolution: {integrity: sha512-GYCCy9DyE5csSuUObktJBpjNpW2iLZMabNDIiAqzQWBl7l/WHzjvtAXevf8Lftk8EA920tuxeB/g8dM8MVMR6A==} + engines: {node: '>=v16'} peerDependencies: rollup: ^3.25 typescript: ^4.5 || ^5.0 dependencies: magic-string: 0.30.3 - rollup: 3.29.0 + rollup: 3.29.1 typescript: 5.2.2 optionalDependencies: '@babel/code-frame': 7.22.13 dev: true - /rollup@3.29.0: - resolution: {integrity: sha512-nszM8DINnx1vSS+TpbWKMkxem0CDWk3cSit/WWCBVs9/JZ1I/XLwOsiUglYuYReaeWWSsW9kge5zE5NZtf/a4w==} + /rollup@3.29.1: + resolution: {integrity: sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2445,7 +2463,7 @@ packages: is-number: 7.0.0 dev: true - /ts-jest@29.1.1(@babel/core@7.22.17)(jest@29.6.4)(typescript@5.2.2): + /ts-jest@29.1.1(@babel/core@7.22.19)(jest@29.7.0)(typescript@5.2.2): resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -2466,11 +2484,11 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.19 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.6.4(@types/node@20.6.0)(ts-node@10.9.1) - jest-util: 29.6.3 + jest: 29.7.0(@types/node@20.6.1)(ts-node@10.9.1) + jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -2479,7 +2497,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@20.6.0)(typescript@5.2.2): + /ts-node@10.9.1(@types/node@20.6.1)(typescript@5.2.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -2498,7 +2516,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.6.0 + '@types/node': 20.6.1 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 diff --git a/src/index.ts b/src/index.ts index 4172c1e..6fa12c4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -221,7 +221,7 @@ class Android { } /** - * create a AVD based upon `image` (from `sdkmanager --list | grep system-images`) + * create a AVD based upon `image` * @param image android system image * @param name name of AVD */ @@ -283,7 +283,7 @@ class Android { /** * Install an APK located by absolute URI `apkPath` onto device with `emulatorId`. * @param emulatorId id of emulator - * @param apkPath path od apk file + * @param apkPath path of apk file */ async install(emulatorId: string, apkPath: string) { const process = await this.adb(emulatorId, `install ${apkPath}`); @@ -339,7 +339,7 @@ class Android { } /** - * List all AVDs created on this machine. + * List the available device list for creating emulators in the current system. */ async listDevices() { const proc = await this.avdmanager("list device");