From 1eb79bcfa7f3eb9bbd0dbae27e98c4b85cb301e7 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Sun, 8 Sep 2024 21:59:04 +0100 Subject: [PATCH 01/52] test: add nested function exec test --- e2e/api.spec.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/e2e/api.spec.ts b/e2e/api.spec.ts index c9dbad50..0b87b67e 100644 --- a/e2e/api.spec.ts +++ b/e2e/api.spec.ts @@ -280,6 +280,15 @@ describe('execute', () => { it('should execute a string-based function in the electron main process', async () => { await expect(browser.electron.execute('return 1 + 2 + 3')).resolves.toEqual(6); }); + + it('should handle executing a function which declares a function', async () => { + expect( + await browser.execute(() => { + const newFunc = () => 'boom!'; + return newFunc(); + }), + ).toEqual('boom!'); + }); }); describe('mock object functionality', () => { From 76c97be3a87cd8d66f84d7bc0e313e864f5d2446 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Sun, 8 Sep 2024 22:03:57 +0100 Subject: [PATCH 02/52] chore: update deps --- apps/builder-cjs/package.json | 18 +- apps/builder-esm/package.json | 18 +- apps/forge-cjs/package.json | 16 +- apps/forge-esm/package.json | 16 +- apps/no-binary-cjs/package.json | 16 +- apps/no-binary-esm/package.json | 16 +- e2e/package.json | 16 +- package.json | 23 +- packages/@wdio_electron-types/package.json | 10 +- packages/@wdio_electron-utils/package.json | 4 +- packages/wdio-electron-service/package.json | 18 +- pnpm-lock.yaml | 1710 +++++++++---------- 12 files changed, 939 insertions(+), 942 deletions(-) diff --git a/apps/builder-cjs/package.json b/apps/builder-cjs/package.json index fd620ce9..6dfddc81 100644 --- a/apps/builder-cjs/package.json +++ b/apps/builder-cjs/package.json @@ -19,20 +19,20 @@ "@rollup/plugin-commonjs": "^26.0.1", "@rollup/plugin-node-resolve": "^15.2.1", "@types/node": "^20.16.1", - "@wdio/cli": "^9.0.7", - "@wdio/globals": "^9.0.7", - "@wdio/local-runner": "^9.0.7", - "@wdio/mocha-framework": "^9.0.6", + "@wdio/cli": "^9.0.9", + "@wdio/globals": "^9.0.9", + "@wdio/local-runner": "^9.0.9", + "@wdio/mocha-framework": "^9.0.8", "cross-env": "^7.0.3", - "electron": "^32.0.1", - "electron-builder": "^25.0.1", + "electron": "^32.0.2", + "electron-builder": "^25.0.5", "global-jsdom": "^24.0.0", "jsdom": "^24.1.1", - "rollup": "^4.21.0", + "rollup": "^4.21.2", "ts-loader": "^9.4.4", - "tsx": "^4.17.0", + "tsx": "^4.19.0", "typescript": "^5.5.4", - "webdriverio": "^9.0.7" + "webdriverio": "^9.0.9" }, "peerDependencies": { "typescript": "5.2.2" diff --git a/apps/builder-esm/package.json b/apps/builder-esm/package.json index d0549eb0..c4cd6056 100644 --- a/apps/builder-esm/package.json +++ b/apps/builder-esm/package.json @@ -22,20 +22,20 @@ "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.2.1", "@types/node": "^20.16.1", - "@wdio/cli": "^9.0.7", - "@wdio/globals": "^9.0.7", - "@wdio/local-runner": "^9.0.7", - "@wdio/mocha-framework": "^9.0.6", + "@wdio/cli": "^9.0.9", + "@wdio/globals": "^9.0.9", + "@wdio/local-runner": "^9.0.9", + "@wdio/mocha-framework": "^9.0.8", "cross-env": "^7.0.3", - "electron": "^32.0.1", - "electron-builder": "^25.0.1", + "electron": "^32.0.2", + "electron-builder": "^25.0.5", "global-jsdom": "^24.0.0", "jsdom": "^24.1.1", - "rollup": "^4.21.0", + "rollup": "^4.21.2", "ts-loader": "^9.4.4", - "tsx": "^4.17.0", + "tsx": "^4.19.0", "typescript": "^5.5.4", - "webdriverio": "^9.0.7" + "webdriverio": "^9.0.9" }, "peerDependencies": { "typescript": "5.2.2" diff --git a/apps/forge-cjs/package.json b/apps/forge-cjs/package.json index f851bd56..0e56eac5 100644 --- a/apps/forge-cjs/package.json +++ b/apps/forge-cjs/package.json @@ -21,19 +21,19 @@ "@rollup/plugin-commonjs": "^26.0.1", "@rollup/plugin-node-resolve": "^15.2.1", "@types/node": "^20.16.1", - "@wdio/cli": "^9.0.7", - "@wdio/globals": "^9.0.7", - "@wdio/local-runner": "^9.0.7", - "@wdio/mocha-framework": "^9.0.6", + "@wdio/cli": "^9.0.9", + "@wdio/globals": "^9.0.9", + "@wdio/local-runner": "^9.0.9", + "@wdio/mocha-framework": "^9.0.8", "cross-env": "^7.0.3", - "electron": "^32.0.1", + "electron": "^32.0.2", "global-jsdom": "^24.0.0", "jsdom": "^24.1.1", - "rollup": "^4.21.0", + "rollup": "^4.21.2", "ts-loader": "^9.4.4", - "tsx": "^4.17.0", + "tsx": "^4.19.0", "typescript": "^5.5.4", - "webdriverio": "^9.0.7" + "webdriverio": "^9.0.9" }, "peerDependencies": { "typescript": "5.2.2" diff --git a/apps/forge-esm/package.json b/apps/forge-esm/package.json index fb41cf24..9c42e3b5 100644 --- a/apps/forge-esm/package.json +++ b/apps/forge-esm/package.json @@ -22,19 +22,19 @@ "@rollup/plugin-commonjs": "^26.0.1", "@rollup/plugin-node-resolve": "^15.2.1", "@types/node": "^20.16.1", - "@wdio/cli": "^9.0.7", - "@wdio/globals": "^9.0.7", - "@wdio/local-runner": "^9.0.7", - "@wdio/mocha-framework": "^9.0.6", + "@wdio/cli": "^9.0.9", + "@wdio/globals": "^9.0.9", + "@wdio/local-runner": "^9.0.9", + "@wdio/mocha-framework": "^9.0.8", "cross-env": "^7.0.3", - "electron": "^32.0.1", + "electron": "^32.0.2", "global-jsdom": "^24.0.0", "jsdom": "^24.1.1", - "rollup": "^4.21.0", + "rollup": "^4.21.2", "ts-loader": "^9.4.4", - "tsx": "^4.17.0", + "tsx": "^4.19.0", "typescript": "^5.5.4", - "webdriverio": "^9.0.7" + "webdriverio": "^9.0.9" }, "peerDependencies": { "typescript": "5.2.2" diff --git a/apps/no-binary-cjs/package.json b/apps/no-binary-cjs/package.json index 7b812e2a..59b3d489 100644 --- a/apps/no-binary-cjs/package.json +++ b/apps/no-binary-cjs/package.json @@ -15,19 +15,19 @@ "@rollup/plugin-commonjs": "^26.0.1", "@rollup/plugin-node-resolve": "^15.2.1", "@types/node": "^20.16.1", - "@wdio/cli": "^9.0.7", - "@wdio/globals": "^9.0.7", - "@wdio/local-runner": "^9.0.7", - "@wdio/mocha-framework": "^9.0.6", + "@wdio/cli": "^9.0.9", + "@wdio/globals": "^9.0.9", + "@wdio/local-runner": "^9.0.9", + "@wdio/mocha-framework": "^9.0.8", "cross-env": "^7.0.3", - "electron": "^32.0.1", + "electron": "^32.0.2", "global-jsdom": "^24.0.0", "jsdom": "^24.1.1", - "rollup": "^4.21.0", + "rollup": "^4.21.2", "ts-loader": "^9.4.4", - "tsx": "^4.17.0", + "tsx": "^4.19.0", "typescript": "^5.5.4", - "webdriverio": "^9.0.7" + "webdriverio": "^9.0.9" }, "peerDependencies": { "typescript": "5.2.2" diff --git a/apps/no-binary-esm/package.json b/apps/no-binary-esm/package.json index 64476130..037251c9 100644 --- a/apps/no-binary-esm/package.json +++ b/apps/no-binary-esm/package.json @@ -17,19 +17,19 @@ "@rollup/plugin-commonjs": "^26.0.1", "@rollup/plugin-node-resolve": "^15.2.1", "@types/node": "^20.16.1", - "@wdio/cli": "^9.0.7", - "@wdio/globals": "^9.0.7", - "@wdio/local-runner": "^9.0.7", - "@wdio/mocha-framework": "^9.0.6", + "@wdio/cli": "^9.0.9", + "@wdio/globals": "^9.0.9", + "@wdio/local-runner": "^9.0.9", + "@wdio/mocha-framework": "^9.0.8", "cross-env": "^7.0.3", - "electron": "^32.0.1", + "electron": "^32.0.2", "global-jsdom": "^24.0.0", "jsdom": "^24.1.1", - "rollup": "^4.21.0", + "rollup": "^4.21.2", "ts-loader": "^9.4.4", - "tsx": "^4.17.0", + "tsx": "^4.19.0", "typescript": "^5.5.4", - "webdriverio": "^9.0.7" + "webdriverio": "^9.0.9" }, "peerDependencies": { "typescript": "5.2.2" diff --git a/e2e/package.json b/e2e/package.json index f2685d53..1ee34093 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -29,15 +29,15 @@ }, "dependencies": { "@testing-library/webdriverio": "^3.2.1", - "@wdio/cli": "^9.0.7", + "@wdio/cli": "^9.0.9", "@wdio/electron-utils": "workspace:*", - "@wdio/globals": "^9.0.7", - "@wdio/local-runner": "^9.0.7", - "@wdio/mocha-framework": "^9.0.6", - "electron": "^32.0.1", - "tsx": "^4.17.0", + "@wdio/globals": "^9.0.9", + "@wdio/local-runner": "^9.0.9", + "@wdio/mocha-framework": "^9.0.8", + "electron": "^32.0.2", + "tsx": "^4.19.0", "wdio-electron-service": "workspace:*", - "webdriverio": "^9.0.7", + "webdriverio": "^9.0.9", "xvfb-maybe": "^0.2.1" }, "devDependencies": { @@ -45,7 +45,7 @@ "@types/mocha": "^10.0.6", "@types/node": "^20.16.1", "@vitest/spy": "^2.0.5", - "@wdio/types": "^9.0.4", + "@wdio/types": "^9.0.8", "global-jsdom": "^24.0.0", "jsdom": "^24.1.1", "read-package-up": "^11.0.0", diff --git a/package.json b/package.json index 17333dec..05663944 100644 --- a/package.json +++ b/package.json @@ -45,29 +45,30 @@ "update:all": "pnpm up -iLr" }, "devDependencies": { - "@eslint/js": "^9.9.0", + "@eslint/js": "^9.10.0", "@types/eslint-config-prettier": "^6.11.2", "@types/node": "^20.16.1", "@types/shelljs": "^0.8.15", - "@typescript-eslint/eslint-plugin": "^8.2.0", - "@typescript-eslint/parser": "^8.2.0", - "@vitest/eslint-plugin": "^1.0.3", + "@typescript-eslint/eslint-plugin": "^8.4.0", + "@typescript-eslint/parser": "^8.4.0", + "@vitest/eslint-plugin": "^1.1.0", "cross-env": "^7.0.3", - "eslint": "^9.9.0", + "eslint": "^9.10.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-import-x": "^3.1.0", - "eslint-plugin-wdio": "^9.0.5", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import-x": "^4.2.1", + "eslint-plugin-wdio": "^9.0.8", "globals": "^15.9.0", "husky": "^9.1.5", "jsdom": "^24.1.1", - "lint-staged": "^15.2.9", + "lint-staged": "^15.2.10", "prettier": "^3.3.3", "read-package-up": "^11.0.0", "release-it": "^17.6.0", "shelljs": "^0.8.5", "shx": "^0.3.4", - "tsx": "^4.17.0", - "turbo": "^2.0.14" + "tsx": "^4.19.0", + "turbo": "^2.1.1" }, "pnpm": { "overrides": { @@ -79,7 +80,7 @@ "prettier --write" ] }, - "packageManager": "pnpm@9.8.0+sha512.8e4c3550fb500e808dbc30bb0ce4dd1eb614e30b1c55245f211591ec2cdf9c611cabd34e1364b42f564bd54b3945ed0f49d61d1bbf2ec9bd74b866fcdc723276", + "packageManager": "pnpm@9.9.0+sha512.60c18acd138bff695d339be6ad13f7e936eea6745660d4cc4a776d5247c540d0edee1a563695c183a66eb917ef88f2b4feb1fc25f32a7adcadc7aaf3438e99c1", "release-it": { "git": { "commitMessage": "chore: release v${version}", diff --git a/packages/@wdio_electron-types/package.json b/packages/@wdio_electron-types/package.json index 11ad20c1..acabb9ff 100644 --- a/packages/@wdio_electron-types/package.json +++ b/packages/@wdio_electron-types/package.json @@ -20,14 +20,14 @@ "devDependencies": { "@electron-forge/shared-types": "^7.4.0", "@electron/packager": "^18.3.4", - "@wdio/globals": "^9.0.7", - "@wdio/types": "^9.0.4", - "builder-util": "25.0.0-alpha.10", - "electron": "^32.0.1", + "@wdio/globals": "^9.0.9", + "@wdio/types": "^9.0.8", + "builder-util": "25.0.3", + "electron": "^32.0.2", "read-package-up": "^11.0.0", "release-it": "^17.6.0", "typescript": "^5.5.4", - "webdriverio": "^9.0.7" + "webdriverio": "^9.0.9" }, "files": [ "dist/*" diff --git a/packages/@wdio_electron-utils/package.json b/packages/@wdio_electron-utils/package.json index 2b2cc2f4..a103c94b 100644 --- a/packages/@wdio_electron-utils/package.json +++ b/packages/@wdio_electron-utils/package.json @@ -40,8 +40,8 @@ }, "dependencies": { "@electron/packager": "^18.3.4", - "@wdio/logger": "^9.0.4", - "debug": "^4.3.6", + "@wdio/logger": "^9.0.8", + "debug": "^4.3.7", "find-versions": "^6.0.0", "read-package-up": "^11.0.0" }, diff --git a/packages/wdio-electron-service/package.json b/packages/wdio-electron-service/package.json index 4c44689a..ec6379f8 100644 --- a/packages/wdio-electron-service/package.json +++ b/packages/wdio-electron-service/package.json @@ -80,15 +80,15 @@ "@vitest/spy": "^2.0.5", "@wdio/electron-types": "workspace:*", "@wdio/electron-utils": "workspace:*", - "@wdio/globals": "^9.0.7", - "@wdio/logger": "^9.0.4", + "@wdio/globals": "^9.0.9", + "@wdio/logger": "^9.0.8", "compare-versions": "^6.1.1", - "debug": "^4.3.6", - "electron-to-chromium": "^1.5.13", + "debug": "^4.3.7", + "electron-to-chromium": "^1.5.18", "fast-copy": "^3.0.1", "read-package-up": "^11.0.0", "tinyspy": "^3.0.0", - "webdriverio": "^9.0.7" + "webdriverio": "^9.0.9" }, "devDependencies": { "@electron-forge/shared-types": "^7.4.0", @@ -97,13 +97,13 @@ "@types/debug": "^4.1.12", "@types/node": "^20.16.1", "@vitest/coverage-v8": "^2.0.5", - "@wdio/types": "^9.0.4", - "builder-util": "25.0.0-alpha.10", - "electron": "^32.0.1", + "@wdio/types": "^9.0.8", + "builder-util": "25.0.3", + "electron": "^32.0.2", "jsdom": "^24.1.1", "nock": "^14.0.0-beta.11", "release-it": "^17.6.0", - "rollup": "^4.21.0", + "rollup": "^4.21.2", "shx": "^0.3.4", "typescript": "^5.5.4", "vitest": "^2.0.5" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 74e4cbc0..1458d97f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: .: devDependencies: '@eslint/js': - specifier: ^9.9.0 - version: 9.9.0 + specifier: ^9.10.0 + version: 9.10.0 '@types/eslint-config-prettier': specifier: ^6.11.2 version: 6.11.3 @@ -24,29 +24,32 @@ importers: specifier: ^0.8.15 version: 0.8.15 '@typescript-eslint/eslint-plugin': - specifier: ^8.2.0 - version: 8.2.0(@typescript-eslint/parser@8.2.0(eslint@9.9.0)(typescript@5.5.4))(eslint@9.9.0)(typescript@5.5.4) + specifier: ^8.4.0 + version: 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4) '@typescript-eslint/parser': - specifier: ^8.2.0 - version: 8.2.0(eslint@9.9.0)(typescript@5.5.4) + specifier: ^8.4.0 + version: 8.4.0(eslint@9.10.0)(typescript@5.5.4) '@vitest/eslint-plugin': - specifier: ^1.0.3 - version: 1.0.3(@typescript-eslint/utils@8.2.0(eslint@9.9.0)(typescript@5.5.4))(eslint@9.9.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6)) + specifier: ^1.1.0 + version: 1.1.0(@typescript-eslint/utils@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6)) cross-env: specifier: ^7.0.3 version: 7.0.3 eslint: - specifier: ^9.9.0 - version: 9.9.0 + specifier: ^9.10.0 + version: 9.10.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.9.0) + version: 9.1.0(eslint@9.10.0) + eslint-import-resolver-typescript: + specifier: ^3.6.3 + version: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0) eslint-plugin-import-x: - specifier: ^3.1.0 - version: 3.1.0(eslint@9.9.0)(typescript@5.5.4) + specifier: ^4.2.1 + version: 4.2.1(eslint@9.10.0)(typescript@5.5.4) eslint-plugin-wdio: - specifier: ^9.0.5 - version: 9.0.5 + specifier: ^9.0.8 + version: 9.0.8 globals: specifier: ^15.9.0 version: 15.9.0 @@ -57,8 +60,8 @@ importers: specifier: ^24.1.1 version: 24.1.1 lint-staged: - specifier: ^15.2.9 - version: 15.2.9 + specifier: ^15.2.10 + version: 15.2.10 prettier: specifier: ^3.3.3 version: 3.3.3 @@ -75,11 +78,11 @@ importers: specifier: ^0.3.4 version: 0.3.4 tsx: - specifier: ^4.17.0 - version: 4.17.0 + specifier: ^4.19.0 + version: 4.19.0 turbo: - specifier: ^2.0.14 - version: 2.0.14 + specifier: ^2.1.1 + version: 2.1.1 apps/builder-cjs: dependencies: @@ -89,34 +92,34 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: ^26.0.1 - version: 26.0.1(rollup@4.21.0) + version: 26.0.1(rollup@4.21.2) '@rollup/plugin-node-resolve': specifier: ^15.2.1 - version: 15.2.3(rollup@4.21.0) + version: 15.2.3(rollup@4.21.2) '@types/node': specifier: ^20.16.1 version: 20.16.1 '@wdio/cli': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/globals': - specifier: ^9.0.7 - version: 9.0.7(@wdio/logger@9.0.4) + specifier: ^9.0.9 + version: 9.0.9(@wdio/logger@9.0.8) '@wdio/local-runner': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/mocha-framework': - specifier: ^9.0.6 - version: 9.0.6 + specifier: ^9.0.8 + version: 9.0.8 cross-env: specifier: ^7.0.3 version: 7.0.3 electron: - specifier: ^32.0.1 - version: 32.0.1 + specifier: ^32.0.2 + version: 32.0.2 electron-builder: - specifier: ^25.0.1 - version: 25.0.4(electron-builder-squirrel-windows@25.0.4(dmg-builder@25.0.4)) + specifier: ^25.0.5 + version: 25.0.5(electron-builder-squirrel-windows@25.0.5(dmg-builder@25.0.5)) global-jsdom: specifier: ^24.0.0 version: 24.0.0(jsdom@24.1.1) @@ -124,20 +127,20 @@ importers: specifier: ^24.1.1 version: 24.1.1 rollup: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.2 + version: 4.21.2 ts-loader: specifier: ^9.4.4 version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) tsx: - specifier: ^4.17.0 - version: 4.17.0 + specifier: ^4.19.0 + version: 4.19.0 typescript: specifier: ^5.5.4 version: 5.5.4 webdriverio: - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 apps/builder-esm: dependencies: @@ -147,37 +150,37 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: ^26.0.1 - version: 26.0.1(rollup@4.21.0) + version: 26.0.1(rollup@4.21.2) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.21.0) + version: 6.1.0(rollup@4.21.2) '@rollup/plugin-node-resolve': specifier: ^15.2.1 - version: 15.2.3(rollup@4.21.0) + version: 15.2.3(rollup@4.21.2) '@types/node': specifier: ^20.16.1 version: 20.16.1 '@wdio/cli': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/globals': - specifier: ^9.0.7 - version: 9.0.7(@wdio/logger@9.0.4) + specifier: ^9.0.9 + version: 9.0.9(@wdio/logger@9.0.8) '@wdio/local-runner': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/mocha-framework': - specifier: ^9.0.6 - version: 9.0.6 + specifier: ^9.0.8 + version: 9.0.8 cross-env: specifier: ^7.0.3 version: 7.0.3 electron: - specifier: ^32.0.1 - version: 32.0.1 + specifier: ^32.0.2 + version: 32.0.2 electron-builder: - specifier: ^25.0.1 - version: 25.0.4(electron-builder-squirrel-windows@25.0.4(dmg-builder@25.0.4)) + specifier: ^25.0.5 + version: 25.0.5(electron-builder-squirrel-windows@25.0.5(dmg-builder@25.0.5)) global-jsdom: specifier: ^24.0.0 version: 24.0.0(jsdom@24.1.1) @@ -185,20 +188,20 @@ importers: specifier: ^24.1.1 version: 24.1.1 rollup: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.2 + version: 4.21.2 ts-loader: specifier: ^9.4.4 version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) tsx: - specifier: ^4.17.0 - version: 4.17.0 + specifier: ^4.19.0 + version: 4.19.0 typescript: specifier: ^5.5.4 version: 5.5.4 webdriverio: - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 apps/forge-cjs: dependencies: @@ -211,31 +214,31 @@ importers: version: 7.4.0(encoding@0.1.13) '@rollup/plugin-commonjs': specifier: ^26.0.1 - version: 26.0.1(rollup@4.21.0) + version: 26.0.1(rollup@4.21.2) '@rollup/plugin-node-resolve': specifier: ^15.2.1 - version: 15.2.3(rollup@4.21.0) + version: 15.2.3(rollup@4.21.2) '@types/node': specifier: ^20.16.1 version: 20.16.1 '@wdio/cli': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/globals': - specifier: ^9.0.7 - version: 9.0.7(@wdio/logger@9.0.4) + specifier: ^9.0.9 + version: 9.0.9(@wdio/logger@9.0.8) '@wdio/local-runner': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/mocha-framework': - specifier: ^9.0.6 - version: 9.0.6 + specifier: ^9.0.8 + version: 9.0.8 cross-env: specifier: ^7.0.3 version: 7.0.3 electron: - specifier: ^32.0.1 - version: 32.0.1 + specifier: ^32.0.2 + version: 32.0.2 global-jsdom: specifier: ^24.0.0 version: 24.0.0(jsdom@24.1.1) @@ -243,20 +246,20 @@ importers: specifier: ^24.1.1 version: 24.1.1 rollup: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.2 + version: 4.21.2 ts-loader: specifier: ^9.4.4 version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) tsx: - specifier: ^4.17.0 - version: 4.17.0 + specifier: ^4.19.0 + version: 4.19.0 typescript: specifier: ^5.5.4 version: 5.5.4 webdriverio: - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 apps/forge-esm: dependencies: @@ -269,31 +272,31 @@ importers: version: 7.4.0(encoding@0.1.13) '@rollup/plugin-commonjs': specifier: ^26.0.1 - version: 26.0.1(rollup@4.21.0) + version: 26.0.1(rollup@4.21.2) '@rollup/plugin-node-resolve': specifier: ^15.2.1 - version: 15.2.3(rollup@4.21.0) + version: 15.2.3(rollup@4.21.2) '@types/node': specifier: ^20.16.1 version: 20.16.1 '@wdio/cli': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/globals': - specifier: ^9.0.7 - version: 9.0.7(@wdio/logger@9.0.4) + specifier: ^9.0.9 + version: 9.0.9(@wdio/logger@9.0.8) '@wdio/local-runner': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/mocha-framework': - specifier: ^9.0.6 - version: 9.0.6 + specifier: ^9.0.8 + version: 9.0.8 cross-env: specifier: ^7.0.3 version: 7.0.3 electron: - specifier: ^32.0.1 - version: 32.0.1 + specifier: ^32.0.2 + version: 32.0.2 global-jsdom: specifier: ^24.0.0 version: 24.0.0(jsdom@24.1.1) @@ -301,20 +304,20 @@ importers: specifier: ^24.1.1 version: 24.1.1 rollup: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.2 + version: 4.21.2 ts-loader: specifier: ^9.4.4 version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) tsx: - specifier: ^4.17.0 - version: 4.17.0 + specifier: ^4.19.0 + version: 4.19.0 typescript: specifier: ^5.5.4 version: 5.5.4 webdriverio: - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 apps/no-binary-cjs: dependencies: @@ -324,31 +327,31 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: ^26.0.1 - version: 26.0.1(rollup@4.21.0) + version: 26.0.1(rollup@4.21.2) '@rollup/plugin-node-resolve': specifier: ^15.2.1 - version: 15.2.3(rollup@4.21.0) + version: 15.2.3(rollup@4.21.2) '@types/node': specifier: ^20.16.1 version: 20.16.1 '@wdio/cli': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/globals': - specifier: ^9.0.7 - version: 9.0.7(@wdio/logger@9.0.4) + specifier: ^9.0.9 + version: 9.0.9(@wdio/logger@9.0.8) '@wdio/local-runner': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/mocha-framework': - specifier: ^9.0.6 - version: 9.0.6 + specifier: ^9.0.8 + version: 9.0.8 cross-env: specifier: ^7.0.3 version: 7.0.3 electron: - specifier: ^32.0.1 - version: 32.0.1 + specifier: ^32.0.2 + version: 32.0.2 global-jsdom: specifier: ^24.0.0 version: 24.0.0(jsdom@24.1.1) @@ -356,20 +359,20 @@ importers: specifier: ^24.1.1 version: 24.1.1 rollup: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.2 + version: 4.21.2 ts-loader: specifier: ^9.4.4 version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) tsx: - specifier: ^4.17.0 - version: 4.17.0 + specifier: ^4.19.0 + version: 4.19.0 typescript: specifier: ^5.5.4 version: 5.5.4 webdriverio: - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 apps/no-binary-esm: dependencies: @@ -379,31 +382,31 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: ^26.0.1 - version: 26.0.1(rollup@4.21.0) + version: 26.0.1(rollup@4.21.2) '@rollup/plugin-node-resolve': specifier: ^15.2.1 - version: 15.2.3(rollup@4.21.0) + version: 15.2.3(rollup@4.21.2) '@types/node': specifier: ^20.16.1 version: 20.16.1 '@wdio/cli': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/globals': - specifier: ^9.0.7 - version: 9.0.7(@wdio/logger@9.0.4) + specifier: ^9.0.9 + version: 9.0.9(@wdio/logger@9.0.8) '@wdio/local-runner': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/mocha-framework': - specifier: ^9.0.6 - version: 9.0.6 + specifier: ^9.0.8 + version: 9.0.8 cross-env: specifier: ^7.0.3 version: 7.0.3 electron: - specifier: ^32.0.1 - version: 32.0.1 + specifier: ^32.0.2 + version: 32.0.2 global-jsdom: specifier: ^24.0.0 version: 24.0.0(jsdom@24.1.1) @@ -411,53 +414,53 @@ importers: specifier: ^24.1.1 version: 24.1.1 rollup: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.2 + version: 4.21.2 ts-loader: specifier: ^9.4.4 version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) tsx: - specifier: ^4.17.0 - version: 4.17.0 + specifier: ^4.19.0 + version: 4.19.0 typescript: specifier: ^5.5.4 version: 5.5.4 webdriverio: - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 e2e: dependencies: '@testing-library/webdriverio': specifier: ^3.2.1 - version: 3.2.1(webdriverio@9.0.7) + version: 3.2.1(webdriverio@9.0.9) '@wdio/cli': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/electron-utils': specifier: workspace:* version: link:../packages/@wdio_electron-utils '@wdio/globals': - specifier: ^9.0.7 - version: 9.0.7(@wdio/logger@9.0.4) + specifier: ^9.0.9 + version: 9.0.9(@wdio/logger@9.0.8) '@wdio/local-runner': - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 '@wdio/mocha-framework': - specifier: ^9.0.6 - version: 9.0.6 + specifier: ^9.0.8 + version: 9.0.8 electron: - specifier: ^32.0.1 - version: 32.0.1 + specifier: ^32.0.2 + version: 32.0.2 tsx: - specifier: ^4.17.0 - version: 4.17.0 + specifier: ^4.19.0 + version: 4.19.0 wdio-electron-service: specifier: workspace:* version: link:../packages/wdio-electron-service webdriverio: - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 xvfb-maybe: specifier: ^0.2.1 version: 0.2.1 @@ -475,8 +478,8 @@ importers: specifier: ^2.0.5 version: 2.0.5 '@wdio/types': - specifier: ^9.0.4 - version: 9.0.4 + specifier: ^9.0.8 + version: 9.0.8 global-jsdom: specifier: ^24.0.0 version: 24.0.0(jsdom@24.1.1) @@ -506,17 +509,17 @@ importers: specifier: ^18.3.4 version: 18.3.4 '@wdio/globals': - specifier: ^9.0.7 - version: 9.0.7(@wdio/logger@9.0.4) + specifier: ^9.0.9 + version: 9.0.9(@wdio/logger@9.0.8) '@wdio/types': - specifier: ^9.0.4 - version: 9.0.4 + specifier: ^9.0.8 + version: 9.0.8 builder-util: - specifier: 25.0.0-alpha.10 - version: 25.0.0-alpha.10 + specifier: 25.0.3 + version: 25.0.3 electron: - specifier: ^32.0.1 - version: 32.0.1 + specifier: ^32.0.2 + version: 32.0.2 read-package-up: specifier: ^11.0.0 version: 11.0.0 @@ -527,8 +530,8 @@ importers: specifier: ^5.5.4 version: 5.5.4 webdriverio: - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 packages/@wdio_electron-utils: dependencies: @@ -536,11 +539,11 @@ importers: specifier: ^18.3.4 version: 18.3.4 '@wdio/logger': - specifier: ^9.0.4 - version: 9.0.4 + specifier: ^9.0.8 + version: 9.0.8 debug: - specifier: ^4.3.6 - version: 4.3.6(supports-color@8.1.1) + specifier: ^4.3.7 + version: 4.3.7(supports-color@8.1.1) find-versions: specifier: ^6.0.0 version: 6.0.0 @@ -588,20 +591,20 @@ importers: specifier: workspace:* version: link:../@wdio_electron-utils '@wdio/globals': - specifier: ^9.0.7 - version: 9.0.7(@wdio/logger@9.0.4) + specifier: ^9.0.9 + version: 9.0.9(@wdio/logger@9.0.8) '@wdio/logger': - specifier: ^9.0.4 - version: 9.0.4 + specifier: ^9.0.8 + version: 9.0.8 compare-versions: specifier: ^6.1.1 version: 6.1.1 debug: - specifier: ^4.3.6 - version: 4.3.6(supports-color@8.1.1) + specifier: ^4.3.7 + version: 4.3.7(supports-color@8.1.1) electron-to-chromium: - specifier: ^1.5.13 - version: 1.5.13 + specifier: ^1.5.18 + version: 1.5.18 fast-copy: specifier: ^3.0.1 version: 3.0.2 @@ -612,18 +615,18 @@ importers: specifier: ^3.0.0 version: 3.0.0 webdriverio: - specifier: ^9.0.7 - version: 9.0.7 + specifier: ^9.0.9 + version: 9.0.9 devDependencies: '@electron-forge/shared-types': specifier: ^7.4.0 version: 7.4.0 '@rollup/plugin-node-resolve': specifier: ^15.2.1 - version: 15.2.3(rollup@4.21.0) + version: 15.2.3(rollup@4.21.2) '@testing-library/webdriverio': specifier: ^3.2.1 - version: 3.2.1(webdriverio@9.0.7) + version: 3.2.1(webdriverio@9.0.9) '@types/debug': specifier: ^4.1.12 version: 4.1.12 @@ -634,14 +637,14 @@ importers: specifier: ^2.0.5 version: 2.0.5(vitest@2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6)) '@wdio/types': - specifier: ^9.0.4 - version: 9.0.4 + specifier: ^9.0.8 + version: 9.0.8 builder-util: - specifier: 25.0.0-alpha.10 - version: 25.0.0-alpha.10 + specifier: 25.0.3 + version: 25.0.3 electron: - specifier: ^32.0.1 - version: 32.0.1 + specifier: ^32.0.2 + version: 32.0.2 jsdom: specifier: ^24.1.1 version: 24.1.1 @@ -652,8 +655,8 @@ importers: specifier: ^17.6.0 version: 17.6.0(typescript@5.5.4) rollup: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.2 + version: 4.21.2 shx: specifier: ^0.3.4 version: 0.3.4 @@ -1099,22 +1102,26 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.17.1': - resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.9.0': - resolution: {integrity: sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==} + '@eslint/js@9.10.0': + resolution: {integrity: sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.1.0': + resolution: {integrity: sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} @@ -1129,60 +1136,60 @@ packages: '@iarna/toml@2.2.5': resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} - '@inquirer/checkbox@2.4.7': - resolution: {integrity: sha512-5YwCySyV1UEgqzz34gNsC38eKxRBtlRDpJLlKcRtTjlYA/yDKuc1rfw+hjw+2WJxbAZtaDPsRl5Zk7J14SBoBw==} + '@inquirer/checkbox@2.5.0': + resolution: {integrity: sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA==} engines: {node: '>=18'} - '@inquirer/confirm@3.1.22': - resolution: {integrity: sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg==} + '@inquirer/confirm@3.2.0': + resolution: {integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==} engines: {node: '>=18'} - '@inquirer/core@9.0.10': - resolution: {integrity: sha512-TdESOKSVwf6+YWDz8GhS6nKscwzkIyakEzCLJ5Vh6O3Co2ClhCJ0A4MG909MUWfaWdpJm7DE45ii51/2Kat9tA==} + '@inquirer/core@9.1.0': + resolution: {integrity: sha512-RZVfH//2ytTjmaBIzeKT1zefcQZzuruwkpTwwbe/i2jTl4o9M+iML5ChULzz6iw1Ok8iUBBsRCjY2IEbD8Ft4w==} engines: {node: '>=18'} - '@inquirer/editor@2.1.22': - resolution: {integrity: sha512-K1QwTu7GCK+nKOVRBp5HY9jt3DXOfPGPr6WRDrPImkcJRelG9UTx2cAtK1liXmibRrzJlTWOwqgWT3k2XnS62w==} + '@inquirer/editor@2.2.0': + resolution: {integrity: sha512-9KHOpJ+dIL5SZli8lJ6xdaYLPPzB8xB9GZItg39MBybzhxA16vxmszmQFrRwbOA918WA2rvu8xhDEg/p6LXKbw==} engines: {node: '>=18'} - '@inquirer/expand@2.1.22': - resolution: {integrity: sha512-wTZOBkzH+ItPuZ3ZPa9lynBsdMp6kQ9zbjVPYEtSBG7UulGjg2kQiAnUjgyG4SlntpTce5bOmXAPvE4sguXjpA==} + '@inquirer/expand@2.3.0': + resolution: {integrity: sha512-qnJsUcOGCSG1e5DTOErmv2BPQqrtT6uzqn1vI/aYGiPKq+FgslGZmtdnXbhuI7IlT7OByDoEEqdnhUnVR2hhLw==} engines: {node: '>=18'} '@inquirer/figures@1.0.5': resolution: {integrity: sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==} engines: {node: '>=18'} - '@inquirer/input@2.2.9': - resolution: {integrity: sha512-7Z6N+uzkWM7+xsE+3rJdhdG/+mQgejOVqspoW+w0AbSZnL6nq5tGMEVASaYVWbkoSzecABWwmludO2evU3d31g==} + '@inquirer/input@2.3.0': + resolution: {integrity: sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==} engines: {node: '>=18'} - '@inquirer/number@1.0.10': - resolution: {integrity: sha512-kWTxRF8zHjQOn2TJs+XttLioBih6bdc5CcosXIzZsrTY383PXI35DuhIllZKu7CdXFi2rz2BWPN9l0dPsvrQOA==} + '@inquirer/number@1.1.0': + resolution: {integrity: sha512-ilUnia/GZUtfSZy3YEErXLJ2Sljo/mf9fiKc08n18DdwdmDbOzRcTv65H1jjDvlsAuvdFXf4Sa/aL7iw/NanVA==} engines: {node: '>=18'} - '@inquirer/password@2.1.22': - resolution: {integrity: sha512-5Fxt1L9vh3rAKqjYwqsjU4DZsEvY/2Gll+QkqR4yEpy6wvzLxdSgFhUcxfDAOtO4BEoTreWoznC0phagwLU5Kw==} + '@inquirer/password@2.2.0': + resolution: {integrity: sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg==} engines: {node: '>=18'} - '@inquirer/prompts@5.3.8': - resolution: {integrity: sha512-b2BudQY/Si4Y2a0PdZZL6BeJtl8llgeZa7U2j47aaJSCeAl1e4UI7y8a9bSkO3o/ZbZrgT5muy/34JbsjfIWxA==} + '@inquirer/prompts@5.5.0': + resolution: {integrity: sha512-BHDeL0catgHdcHbSFFUddNzvx/imzJMft+tWDPwTm3hfu8/tApk1HrooNngB2Mb4qY+KaRWF+iZqoVUPeslEog==} engines: {node: '>=18'} - '@inquirer/rawlist@2.2.4': - resolution: {integrity: sha512-pb6w9pWrm7EfnYDgQObOurh2d2YH07+eDo3xQBsNAM2GRhliz6wFXGi1thKQ4bN6B0xDd6C3tBsjdr3obsCl3Q==} + '@inquirer/rawlist@2.3.0': + resolution: {integrity: sha512-zzfNuINhFF7OLAtGHfhwOW2TlYJyli7lOUoJUXw/uyklcwalV6WRXBXtFIicN8rTRK1XTiPWB4UY+YuW8dsnLQ==} engines: {node: '>=18'} - '@inquirer/search@1.0.7': - resolution: {integrity: sha512-p1wpV+3gd1eST/o5N3yQpYEdFNCzSP0Klrl+5bfD3cTTz8BGG6nf4Z07aBW0xjlKIj1Rp0y3x/X4cZYi6TfcLw==} + '@inquirer/search@1.1.0': + resolution: {integrity: sha512-h+/5LSj51dx7hp5xOn4QFnUaKeARwUCLs6mIhtkJ0JYPBLmEYjdHSYh7I6GrLg9LwpJ3xeX0FZgAG1q0QdCpVQ==} engines: {node: '>=18'} - '@inquirer/select@2.4.7': - resolution: {integrity: sha512-JH7XqPEkBpNWp3gPCqWqY8ECbyMoFcCZANlL6pV9hf59qK6dGmkOlx1ydyhY+KZ0c5X74+W6Mtp+nm2QX0/MAQ==} + '@inquirer/select@2.5.0': + resolution: {integrity: sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==} engines: {node: '>=18'} - '@inquirer/type@1.5.2': - resolution: {integrity: sha512-w9qFkumYDCNyDZmNQjf/n6qQuvQ4dMC3BJesY4oF+yr0CxR5vxujflAVeIcS6U336uzi9GM0kAfZlLrZ9UTkpA==} + '@inquirer/type@1.5.3': + resolution: {integrity: sha512-xUQ14WQGR/HK5ei+2CvgcwoH9fQ4PgPGmVFSN0pc1+fVyDL3MREhyAY7nxEErSu6CkllBM3D7e3e+kOvtu+eIg==} engines: {node: '>=18'} '@isaacs/cliui@8.0.2': @@ -1250,6 +1257,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + '@npmcli/fs@2.1.2': resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -1336,11 +1347,11 @@ packages: resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} - '@promptbook/utils@0.67.0-1': - resolution: {integrity: sha512-3+wYtiuLPY3Nabaql9Xp9JG0uI/enE29TKtJda2KlACxt6Wp2ZHo+0f0QtF2xegC+cBP5nkrSEMswFuHJoFbng==} + '@promptbook/utils@0.70.0-1': + resolution: {integrity: sha512-qd2lLRRN+sE6UuNMi2tEeUUeb4zmXnxY5EMdfHVXNE+bqBDpUC7/aEfXgA3jnUXEr+xFjQ8PTFQgWvBMaKvw0g==} - '@puppeteer/browsers@2.3.1': - resolution: {integrity: sha512-uK7o3hHkK+naEobMSJ+2ySYyXtQkBxIH8Gn4MK9ciePjNV+Pf+PgY/W7iPzn2MTjl3stcYB5AlcTmPYw7AXDwA==} + '@puppeteer/browsers@2.4.0': + resolution: {integrity: sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==} engines: {node: '>=18'} hasBin: true @@ -1380,83 +1391,83 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.21.0': - resolution: {integrity: sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==} + '@rollup/rollup-android-arm-eabi@4.21.2': + resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.21.0': - resolution: {integrity: sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==} + '@rollup/rollup-android-arm64@4.21.2': + resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.21.0': - resolution: {integrity: sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==} + '@rollup/rollup-darwin-arm64@4.21.2': + resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.21.0': - resolution: {integrity: sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==} + '@rollup/rollup-darwin-x64@4.21.2': + resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.21.0': - resolution: {integrity: sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==} + '@rollup/rollup-linux-arm-gnueabihf@4.21.2': + resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.21.0': - resolution: {integrity: sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==} + '@rollup/rollup-linux-arm-musleabihf@4.21.2': + resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.21.0': - resolution: {integrity: sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==} + '@rollup/rollup-linux-arm64-gnu@4.21.2': + resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.21.0': - resolution: {integrity: sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==} + '@rollup/rollup-linux-arm64-musl@4.21.2': + resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': - resolution: {integrity: sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==} + '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': + resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.21.0': - resolution: {integrity: sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==} + '@rollup/rollup-linux-riscv64-gnu@4.21.2': + resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.21.0': - resolution: {integrity: sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==} + '@rollup/rollup-linux-s390x-gnu@4.21.2': + resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.21.0': - resolution: {integrity: sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==} + '@rollup/rollup-linux-x64-gnu@4.21.2': + resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.21.0': - resolution: {integrity: sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==} + '@rollup/rollup-linux-x64-musl@4.21.2': + resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.21.0': - resolution: {integrity: sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==} + '@rollup/rollup-win32-arm64-msvc@4.21.2': + resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.21.0': - resolution: {integrity: sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==} + '@rollup/rollup-win32-ia32-msvc@4.21.2': + resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.21.0': - resolution: {integrity: sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==} + '@rollup/rollup-win32-x64-msvc@4.21.2': + resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==} cpu: [x64] os: [win32] @@ -1560,8 +1571,11 @@ packages: '@types/node@20.16.1': resolution: {integrity: sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==} - '@types/node@22.5.0': - resolution: {integrity: sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==} + '@types/node@20.16.5': + resolution: {integrity: sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==} + + '@types/node@22.5.4': + resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1605,8 +1619,8 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.2.0': - resolution: {integrity: sha512-02tJIs655em7fvt9gps/+4k4OsKULYGtLBPJfOsmOq1+3cdClYiF0+d6mHu6qDnTcg88wJBkcPLpQhq7FyDz0A==} + '@typescript-eslint/eslint-plugin@8.4.0': + resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -1616,8 +1630,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.2.0': - resolution: {integrity: sha512-j3Di+o0lHgPrb7FxL3fdEy6LJ/j2NE8u+AP/5cQ9SKb+JLH6V6UHDqJ+e0hXBkHP1wn1YDFjYCS9LBQsZDlDEg==} + '@typescript-eslint/parser@8.4.0': + resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1626,16 +1640,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/scope-manager@8.2.0': - resolution: {integrity: sha512-OFn80B38yD6WwpoHU2Tz/fTz7CgFqInllBoC3WP+/jLbTb4gGPTy9HBSTsbDWkMdN55XlVU0mMDYAtgvlUspGw==} + '@typescript-eslint/scope-manager@8.4.0': + resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.2.0': - resolution: {integrity: sha512-g1CfXGFMQdT5S+0PSO0fvGXUaiSkl73U1n9LTK5aRAFnPlJ8dLKkXr4AaLFvPedW8lVDoMgLLE3JN98ZZfsj0w==} + '@typescript-eslint/type-utils@8.4.0': + resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1643,25 +1653,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/types@8.2.0': - resolution: {integrity: sha512-6a9QSK396YqmiBKPkJtxsgZZZVjYQ6wQ/TlI0C65z7vInaETuC6HAHD98AGLC8DyIPqHytvNuS8bBVvNLKyqvQ==} + '@typescript-eslint/types@8.4.0': + resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@8.2.0': - resolution: {integrity: sha512-kiG4EDUT4dImplOsbh47B1QnNmXSoUqOjWDvCJw/o8LgfD0yr7k2uy54D5Wm0j4t71Ge1NkynGhpWdS0dEIAUA==} + '@typescript-eslint/typescript-estree@8.4.0': + resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1669,24 +1666,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/utils@8.2.0': - resolution: {integrity: sha512-O46eaYKDlV3TvAVDNcoDzd5N550ckSe8G4phko++OCSC1dYIb9LTc3HDGYdWqWIAT5qDUKphO6sd9RrpIJJPfg==} + '@typescript-eslint/utils@8.4.0': + resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/visitor-keys@8.2.0': - resolution: {integrity: sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==} + '@typescript-eslint/visitor-keys@8.4.0': + resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitest/coverage-v8@2.0.5': @@ -1694,8 +1681,8 @@ packages: peerDependencies: vitest: 2.0.5 - '@vitest/eslint-plugin@1.0.3': - resolution: {integrity: sha512-7hTONh+lqN+TEimHy2aWVdHVqYohcxLGD4yYBwSVvhyiti/j9CqBNMQvOa6xLoVcEtaWAoCCDbYgvxwNqA4lsA==} + '@vitest/eslint-plugin@1.1.0': + resolution: {integrity: sha512-Ur80Y27Wbw8gFHJ3cv6vypcjXmrx6QHfw+q435h6Q2L+tf+h4Xf5pJTCL4YU/Jps9EVeggQxS85OcUZU7sdXRw==} peerDependencies: '@typescript-eslint/utils': '>= 8.0' eslint: '>= 8.57.0' @@ -1730,53 +1717,53 @@ packages: '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - '@wdio/cli@9.0.7': - resolution: {integrity: sha512-2f4gI5v+Xz3Bzed4OTeV9apLO0wQONWp/TTPOmNJ1I0I87fF/eDy7lQp6p6Cohw1Ytis+ItGDXdZQ1NOF+vatw==} - engines: {node: '>=18'} + '@wdio/cli@9.0.9': + resolution: {integrity: sha512-/sY0pMpLhsnhWpWovG81F/PqYmC7EluskrUhQ8/7BW1XDcNkUminCsd685HgAqPE3nX6Npx1oRhCbNDL/7Z7pw==} + engines: {node: '>=18.20.0'} hasBin: true - '@wdio/config@9.0.6': - resolution: {integrity: sha512-WsACM5QjT3ZsoPVqHroYt8pOkZx4/6PTdNKm45VL8NHhQe5w9IFbl1fKxFHQ7ZkPI3F+EFvFvubO8puJ0OcSmQ==} - engines: {node: '>=18'} + '@wdio/config@9.0.8': + resolution: {integrity: sha512-37L+hd+A1Nyehd/pgfTrLC6w+Ngbu0CIoFh9Vv6v8Cgu5Hih0TLofvlg+J1BNbcTd5eQ2tFKZBDeFMhQaIiTpg==} + engines: {node: '>=18.20.0'} - '@wdio/globals@9.0.7': - resolution: {integrity: sha512-3p/xKmK+TVN9k6zSULLP3GvlaF3Rl5Y5Ts/+ch1z7ZbKNDyXLnUTn0KxT78aIGmIASOxO/8Cby5Vd4K5byPzbA==} - engines: {node: '>=18'} + '@wdio/globals@9.0.9': + resolution: {integrity: sha512-Lmzf82NoNK+i+Z6slt/Ueu0iOfHMLMNxxWnvoC+en3g8A1xj2JxAinC4ymrc0iFC3uvG0SxMWlpVmGTk78wp2Q==} + engines: {node: '>=18.20.0'} - '@wdio/local-runner@9.0.7': - resolution: {integrity: sha512-0ptiSVE6sm+ct5sblX6b4Fah2AA7VSLslkVdxeSmYUbAGxalq9H9/fw2FKO07xDfFJDM8eolJAphHNnICX+5Uw==} - engines: {node: '>=18'} + '@wdio/local-runner@9.0.9': + resolution: {integrity: sha512-cqhCqHHO9PnH51+buvXd0ck3FB0HCnqPQLe/SLZuGI5tzywK1X7wFKlcAHkmqCPyu3xdV2mh8QZTEL4k8ayzsw==} + engines: {node: '>=18.20.0'} '@wdio/logger@8.38.0': resolution: {integrity: sha512-kcHL86RmNbcQP+Gq/vQUGlArfU6IIcbbnNp32rRIraitomZow+iEoc519rdQmSVusDozMS5DZthkgDdxK+vz6Q==} engines: {node: ^16.13 || >=18} - '@wdio/logger@9.0.4': - resolution: {integrity: sha512-b6gcu0PTVb3fgK4kyAH/k5UUWN5FOUdAfhA4PAY/IZvxZTMFYMqnrZb0WRWWWqL6nu9pcrOVtCOdPBvj0cb+Nw==} - engines: {node: '>=18'} + '@wdio/logger@9.0.8': + resolution: {integrity: sha512-uIyYIDBwLczmsp9JE5hN3ME8Xg+9WNBfSNXD69ICHrY9WPTzFf94UeTuavK7kwSKF3ro2eJbmNZItYOfnoovnw==} + engines: {node: '>=18.20.0'} - '@wdio/mocha-framework@9.0.6': - resolution: {integrity: sha512-V9VNRPlPOsnlU63CWmGFSSw2QcZii1YuXw//vlst4Adl91FMAmqr6ikZ7flmX/bYunQokJxcpow7irnSYYevGQ==} - engines: {node: '>=18'} + '@wdio/mocha-framework@9.0.8': + resolution: {integrity: sha512-0zwnyybxN8zxeOaFsjCpqdcvZIyzb8QglZorQ17VH9GR0/giMtcRbC4usYJgh4W37e1FCwvyvQyij93JYSSkNA==} + engines: {node: '>=18.20.0'} - '@wdio/protocols@9.0.4': - resolution: {integrity: sha512-T9v8Jkp94NxLLil5J7uJ/+YHk5/7fhOggzGcN+LvuCHS6jbJFZ/11c4SUEuXw27Yqk01fFXPBbF6TwcTTOuW/Q==} + '@wdio/protocols@9.0.8': + resolution: {integrity: sha512-xRH54byFf623/w/KW62xkf/C2mGyigSfMm+UT3tNEAd5ZA9X2VAWQWQBPzdcrsck7Fxk4zlQX8Kb34RSs7Cy4Q==} - '@wdio/repl@9.0.4': - resolution: {integrity: sha512-5Bc5ARjWA7t6MZNnVJ9WvO1iDsy6iOsrSDWiP7APWAdaF/SJCP3SFE2c+PdQJpJWhr2Kk0fRGuyDM+GdsmZhwg==} - engines: {node: '>=18'} + '@wdio/repl@9.0.8': + resolution: {integrity: sha512-3iubjl4JX5zD21aFxZwQghqC3lgu+mSs8c3NaiYYNCC+IT5cI/8QuKlgh9s59bu+N3gG988jqMJeCYlKuUv/iw==} + engines: {node: '>=18.20.0'} - '@wdio/runner@9.0.7': - resolution: {integrity: sha512-jIRY3GRJHMJ6cl/0ws9Nz1kq5YN/29+BpvHUTc2yNZz8KjEiz59hwFk+gzSj9HZDyYrhFV5O01BXEMxxgwJXeQ==} - engines: {node: '>=18'} + '@wdio/runner@9.0.9': + resolution: {integrity: sha512-DIyFSt/mF7EVyFvgKztVAzf7lfunXsMxfYm3Hqjxgh0IQXJfjvOFKmT+R/T61tTHyzHHsx0JBQTu12WqHkNQtA==} + engines: {node: '>=18.20.0'} - '@wdio/types@9.0.4': - resolution: {integrity: sha512-MN7O4Uk3zPWvkN8d6SNdIjd7qHUlTxS7j0QfRPu6TdlYbHu6BJJ8Rr84y7GcUzCnTAJ1nOIpvUyR8MY3hOaVKg==} - engines: {node: '>=18'} + '@wdio/types@9.0.8': + resolution: {integrity: sha512-pmz2iRWddTanrv8JC7v3wUGm17KRv2WyyJhQfklMSANn9V1ep6pw1RJG2WJnKq4NojMvH1nVv1sMZxXrYPhpYw==} + engines: {node: '>=18.20.0'} - '@wdio/utils@9.0.6': - resolution: {integrity: sha512-cnPXeW/sfqyKFuRRmADRZDNvFwEBMr7j7wwWLO6q5opoW++dwOdJW4WV0wDZbPcXTtGFCSrGCDLLdGcTAWMb3A==} - engines: {node: '>=18'} + '@wdio/utils@9.0.8': + resolution: {integrity: sha512-p3EgOdkhCvMxJFd3WTtSChqYFQu2mz69/5tOsljDaL+4QYwnRR7O8M9wFsL3/9XMVcHdnC4Ija2VRxQ/lb+hHQ==} + engines: {node: '>=18.20.0'} '@webassemblyjs/ast@1.12.1': resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} @@ -1833,8 +1820,8 @@ packages: '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - '@zip.js/zip.js@2.7.51': - resolution: {integrity: sha512-RKHaebzZZgQkUuzb49/qweN69e8Np9AUZ9QygydDIrbG1njypSAKwkeqIVeuf2JVGBDyB7Z9HKvzPgYrSlv9gw==} + '@zip.js/zip.js@2.7.52': + resolution: {integrity: sha512-+5g7FQswvrCHwYKNMd/KFxZSObctLSsQOgqBSi0LzwHo3li9Eh1w5cF5ndjQw9Zbr3ajVnd2+XyiX85gAetx1Q==} engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=16.5.0'} abbrev@1.1.1: @@ -1930,18 +1917,15 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - app-builder-bin@5.0.0-alpha.4: - resolution: {integrity: sha512-4MitKmOtfTdMONrtRoiaqJ6HtlVZXgrNX1PNdEzEHSAoXU85x7s+mo0IhAS9K9qgjyTVuLrM1E/HAMp5qGyoOA==} - app-builder-bin@5.0.0-alpha.7: resolution: {integrity: sha512-ww2mK4ITUvqisnqOuUWAeHzokpPidyZ7a0ZkwW+V7sF5/Pdi2OldkRjAWqEzn6Xtmj3SLVT84as4wB59A6jJ4g==} - app-builder-lib@25.0.4: - resolution: {integrity: sha512-dPskHgKtvg5Z9flycOY81Sjyn7Nmc3t8nKk4t1JsRxBwjGKTYVpXsJ/x/U86TACMQ9xJS0HsJLGYnHoJvR1vMw==} + app-builder-lib@25.0.5: + resolution: {integrity: sha512-rxgxMx1f7I4ZAP0jA5+5iB7X6x6MJvGF7GauRzQBnIVihwXX2HOiAE7yenyY9Ry5YAiH47MnCxdq413Wq6XOcQ==} engines: {node: '>=14.0.0'} peerDependencies: - dmg-builder: 25.0.4 - electron-builder-squirrel-windows: 25.0.4 + dmg-builder: 25.0.5 + electron-builder-squirrel-windows: 25.0.5 aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -1984,10 +1968,6 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} @@ -2038,17 +2018,17 @@ packages: bare-events@2.4.2: resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} - bare-fs@2.3.1: - resolution: {integrity: sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==} + bare-fs@2.3.3: + resolution: {integrity: sha512-7RYKL+vZVCyAsMLi5SPu7QGauGGT8avnP/HO571ndEuV4MYdGXvLhtW67FuLPeEI8EiIY7zbbRR9x7x7HU0kgw==} - bare-os@2.4.0: - resolution: {integrity: sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==} + bare-os@2.4.2: + resolution: {integrity: sha512-HZoJwzC+rZ9lqEemTMiO0luOePoGYNBgsLLgegKR/cljiJvcDNhDZQkzC+NC5Oh0aHbdBNSOHpghwMuB5tqhjg==} bare-path@2.1.3: resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} - bare-stream@2.1.3: - resolution: {integrity: sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==} + bare-stream@2.2.1: + resolution: {integrity: sha512-YTB47kHwBW9zSG8LD77MIBAAQXjU2WjAkMHeeb7hUplVs6+IoM5I7uEVQNPMB7lj9r8I76UMdoMkGnCodHOLqg==} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -2121,13 +2101,6 @@ packages: resolution: {integrity: sha512-HjIDfhvqx/8B3TDN4GbABQcgpewTU4LMRTQPkVpKYV3lsuxEJoIfvg09GyWTNmfVNSUAYf+fbTN//JX4TH20pg==} engines: {node: '>=12.0.0'} - builder-util-runtime@9.2.5-alpha.3: - resolution: {integrity: sha512-ugXSJSbYBpaYeXpk2Rxa2QZdT67oRz3FFu3Lud4XK0Ijqe+OXwyAyCM4pGXJEO3VSdUn43AOJ5bUZ3gsCdQAIw==} - engines: {node: '>=12.0.0'} - - builder-util@25.0.0-alpha.10: - resolution: {integrity: sha512-SrlawYIKu6UZOPWCGlbzVqbgv81jkeUPlrZbbdGb8ERIHuGR9HjnnQs7FV1QR2TKMjRsg/47I8UDtudj16qldg==} - builder-util@25.0.3: resolution: {integrity: sha512-eH5c1ukdY2xjtFQWQ6jlzEuXuqcuAVc3UQ6V6fdYu9Kg3CkDbCR82Mox42uaJDmee9WXSbP/88cOworFdOHPhw==} @@ -2179,8 +2152,8 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - caniuse-lite@1.0.30001651: - resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + caniuse-lite@1.0.30001658: + resolution: {integrity: sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==} chai@5.1.1: resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} @@ -2255,8 +2228,8 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - cli-spinners@3.1.0: - resolution: {integrity: sha512-2MH0N34TpDAs9ROPVkZJfBWFoYfv4zfkJF14PBHY4v/qRY75SLcm4WaEKNCLScsXieosa/tY/+slJ+BDswJxHQ==} + cli-spinners@3.2.0: + resolution: {integrity: sha512-pXftdQloMZzjCr3pCTIRniDcys6dDzgpgVhAHHk6TKBDbRuP1MkuetTF5KSv4YUutbOPa7+7ZrAJ2kVtbMqyXA==} engines: {node: '>=18.20'} cli-truncate@2.1.0: @@ -2475,6 +2448,15 @@ packages: supports-color: optional: true + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize@4.0.0: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} @@ -2576,12 +2558,8 @@ packages: dir-compare@4.2.0: resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - dmg-builder@25.0.4: - resolution: {integrity: sha512-BqQDX4vUEDlxEX+uD4CfNPLswXzMA1JPORU99oHGdyDU9j8+RsRf44WzkHp5KbI5FNwynlZbfCPdDCLubRPkeA==} + dmg-builder@25.0.5: + resolution: {integrity: sha512-ocnZV44ZqInoSFaY54fF7BlCtw+WtbrjyPrkBhaB+Ztn7GPKjmFgRbIKytifJ8h9Cib8jdFRMgjCUtkU45Y6DA==} dmg-license@1.0.11: resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} @@ -2637,22 +2615,22 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-builder-squirrel-windows@25.0.4: - resolution: {integrity: sha512-WKHq4iOGq+W4s/r+edbdO/tpkRuPXlsanEL0vl76kLLqW2aT7TIC09OoeCcfsFWRZLX3kpHOX/VycGJbsSCeGQ==} + electron-builder-squirrel-windows@25.0.5: + resolution: {integrity: sha512-N2U7LGSdt4hmEhjEeIV2XJbjj2YIrTL6enfsGKfOhGTpL6GEejUmT3gjdKUqKBS5+NBx0GWhnEwD3MpO2P6Nfg==} - electron-builder@25.0.4: - resolution: {integrity: sha512-+F3qRL0NpAH5WbFB6BHEo+/KZLS0M/t9awfUf7YqD64yZrWUAojvPtjERG3x/8loihuHEo407ak7RsN64LC4zA==} + electron-builder@25.0.5: + resolution: {integrity: sha512-Uj5LFRbUqNiVajsgqcwlKe+CHtwubK3hcoJsW5C2YiWodej2mmxM+LrTqga0rrWWHVMNmrcmGcS/WHpKwy6KEw==} engines: {node: '>=14.0.0'} hasBin: true electron-publish@25.0.3: resolution: {integrity: sha512-wSGm+TFK2lArswIFBPLuIRHbo945s3MCvG5y1xVC57zL/PsrElUkaGH2ERtRrcKNpaDNq77rDA9JnMJhAFJjUg==} - electron-to-chromium@1.5.13: - resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==} + electron-to-chromium@1.5.18: + resolution: {integrity: sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==} - electron@32.0.1: - resolution: {integrity: sha512-5Hd5Jaf9niYVR2hZxoRd3gOrcxPOxQV1XPV5WaoSfT9jLJHFadhlKtuSDIk3U6rQZke+aC7GqPPAv55nWFCMsA==} + electron@32.0.2: + resolution: {integrity: sha512-nmZblq8wW3HZ17MAyaUuiMI9Mb0Cgc7UR3To85h/rVopbfyF5s34NxtK4gvyRfYPxpDGP4k+HoQIPniPPrdE3w==} engines: {node: '>= 12.20.55'} hasBin: true @@ -2723,8 +2701,8 @@ packages: engines: {node: '>=18'} hasBin: true - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} escape-goat@4.0.0: @@ -2757,15 +2735,49 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-plugin-import-x@3.1.0: - resolution: {integrity: sha512-/UbPA+bYY7nIxcjL3kpcDY3UNdoLHFhyBFzHox2M0ypcUoueTn6woZUUmzzi5et/dXChksasYYFeKE2wshOrhg==} - engines: {node: '>=16'} + eslint-import-resolver-typescript@3.6.3: + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: ^8.56.0 || ^9.0.0-0 + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true - eslint-plugin-wdio@9.0.5: - resolution: {integrity: sha512-bt7DD7N6PlKs0O5keoKkSLiP/hP0RMh03J2b9k5SKyTs+9+QPaJ5PgYIkWSgW3tMln5CvEJrKRXzNSHHTWWwyA==} - engines: {node: '>=18'} + eslint-module-utils@2.11.0: + resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import-x@4.2.1: + resolution: {integrity: sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + eslint-plugin-wdio@9.0.8: + resolution: {integrity: sha512-aCWjI3p1H+AFpiJhcybGMSXqtBUkoVbpZcYhDawb4JWFhHAF8J8bdyanPYvDLoyOKVN4zJ3AFb8G4qxKXq8qXA==} + engines: {node: '>=18.20.0'} eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} @@ -2783,8 +2795,8 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.9.0: - resolution: {integrity: sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==} + eslint@9.10.0: + resolution: {integrity: sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2859,13 +2871,13 @@ packages: resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} engines: {node: '>=0.10.0'} - expect-webdriverio@5.0.1: - resolution: {integrity: sha512-tYJaXtu5qQr/oEXzDKoVzyA/g2wyeE1YsuVJQC8/bKnp1lX3I4NQ2Yb9u1rJ9vdpFha6pki8PzHlTk5PVZBQWQ==} + expect-webdriverio@5.0.2: + resolution: {integrity: sha512-vkUwoUvURH25pRClX1I5oCIObju8cT9kN5jQH4RN5QxKXK7hdowYd8dbDXD5JKOE/OutdYx67YtCl8vpZq/uSg==} engines: {node: '>=18 || >=20 || >=22'} peerDependencies: - '@wdio/globals': ^9.0.0-alpha.350 - '@wdio/logger': ^9.0.0-alpha.350 - webdriverio: ^9.0.0-alpha.350 + '@wdio/globals': ^9.0.0 + '@wdio/logger': ^9.0.0 + webdriverio: ^9.0.0 expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} @@ -2909,8 +2921,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-xml-parser@4.4.1: - resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + fast-xml-parser@4.5.0: + resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==} hasBin: true fastq@1.17.1: @@ -3058,8 +3070,8 @@ packages: resolution: {integrity: sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==} engines: {node: '>= 4.0.0'} - geckodriver@4.4.3: - resolution: {integrity: sha512-79rvaq8pvKVUtuM9XBjQApb04kOVkl3TFRX+zTt1wlmL+wqpt85ocWCdqiENU/3zIzg2Me21eClUcnE7F1kL2w==} + geckodriver@4.4.4: + resolution: {integrity: sha512-0zaw19tcmWeluqx7+Y559JGBtidu1D0Lb8ElYKiNEQu8r3sCfrLUf5V10xypl8u29ZLbgRV7WflxCJVTCkCMFA==} engines: {node: ^16.13 || >=18 || >=20} hasBin: true @@ -3109,8 +3121,8 @@ packages: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} - get-tsconfig@4.7.6: - resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} + get-tsconfig@4.8.0: + resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==} get-uri@6.0.3: resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} @@ -3184,10 +3196,6 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - globby@14.0.2: resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} engines: {node: '>=18'} @@ -3394,8 +3402,8 @@ packages: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - inquirer@10.1.8: - resolution: {integrity: sha512-syxGpOzLyqVeZi1KDBjRTnCn5PiGWySGHP0BbqXbqsEK0ckkZk3egAepEWslUjZXj0rhkUapVXM/IpADWe4D6w==} + inquirer@10.2.2: + resolution: {integrity: sha512-tyao/4Vo36XnUItZ7DnUXX4f1jVao2mSrleV/5IPtW/XAEA26hRVsbc68nuTEKWcr5vMP/1mVoT2O7u8H4v1Vg==} engines: {node: '>=18'} inquirer@9.3.2: @@ -3444,6 +3452,9 @@ packages: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} + is-bun-module@1.2.1: + resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -3793,8 +3804,8 @@ packages: resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lint-staged@15.2.9: - resolution: {integrity: sha512-BZAt8Lk3sEnxw7tfxM7jeZlPRuT4M68O0/CwZhhaw6eeWu0Lz5eERE3m386InivXB64fp/mDID452h48tvKlRQ==} + lint-staged@15.2.10: + resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==} engines: {node: '>=18.12.0'} hasBin: true @@ -3814,8 +3825,8 @@ packages: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} - locate-app@2.4.29: - resolution: {integrity: sha512-L5qRv+/CTfoIdcEuM4yogtkEVwrXgFBL9B5OLFaMOfXtwOcn5A4Q7CBBE7xolxEaNWJeW1W2ks0XuAcs+wv0/A==} + locate-app@2.4.39: + resolution: {integrity: sha512-hl7NwJrpGKLlmVgNrMRxFLRJTjve6IIav08bnv4MQSjahFRUPPVp+R02PSYpll6wY/YZqMrha68uScTmRJeMeA==} locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} @@ -3915,8 +3926,8 @@ packages: loglevel-plugin-prefix@0.8.4: resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} - loglevel@1.9.1: - resolution: {integrity: sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==} + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} engines: {node: '>= 0.6.0'} loupe@3.1.1: @@ -3986,6 +3997,10 @@ packages: resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -4441,10 +4456,6 @@ packages: resolution: {integrity: sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==} engines: {node: '>=4'} - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - path-type@5.0.0: resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} engines: {node: '>=12'} @@ -4470,6 +4481,9 @@ packages: picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -4776,8 +4790,8 @@ packages: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} - rollup@4.21.0: - resolution: {integrity: sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==} + rollup@4.21.2: + resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -5034,8 +5048,8 @@ packages: resolution: {integrity: sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==} engines: {node: '>= 0.10.0'} - streamx@2.19.0: - resolution: {integrity: sha512-5z6CNR4gtkPbwlxyEqoDGDmWIzoNJqCBt4Eac1ICP9YaIT08ct712cFj0u1rx4F8luAuL+3Qc+RFIdI4OX00kg==} + streamx@2.20.0: + resolution: {integrity: sha512-ZGd1LhDeGFucr1CUCTBOS58ZhEendd0ttpGT3usTvosS4ntIwKN9LJFp+OeCSprsCPL14BXVRZlHGRY1V9PVzQ==} strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} @@ -5262,43 +5276,46 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - tsx@4.17.0: - resolution: {integrity: sha512-eN4mnDA5UMKDt4YZixo9tBioibaMBpoxBkD+rIPAjVmYERSG0/dWEY1CEFuV89CgASlKL499q8AhmkMnnjtOJg==} + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + tsx@4.19.0: + resolution: {integrity: sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==} engines: {node: '>=18.0.0'} hasBin: true - turbo-darwin-64@2.0.14: - resolution: {integrity: sha512-kwfDmjNwlNfvtrvT29+ZBg5n1Wvxl891bFHchMJyzMoR0HOE9N1NSNdSZb9wG3e7sYNIu4uDkNk+VBEqJW0HzQ==} + turbo-darwin-64@2.1.1: + resolution: {integrity: sha512-aYNuJpZlCoi0Htd79fl/2DywpewGKijdXeOfg9KzNuPVKzSMYlAXuAlNGh0MKjiOcyqxQGL7Mq9LFhwA0VpDpQ==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.0.14: - resolution: {integrity: sha512-m3LXYEshCx3wc4ZClM6gb01KYpFmtjQ9IBF3A7ofjb6ahux3xlYZJZ3uFCLAGHuvGLuJ3htfiPbwlDPTdknqqw==} + turbo-darwin-arm64@2.1.1: + resolution: {integrity: sha512-tifJKD8yHY48rHXPMcM8o1jI/Jk2KCaXiNjTKvvy9Zsim61BZksNVLelIbrRoCGwAN6PUBZO2lGU5iL/TQJ5Pw==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.0.14: - resolution: {integrity: sha512-7vBzCPdoTtR92SNn2JMgj1FlMmyonGmpMaQdgAB1OVYtuQ6NVGoh7/lODfaILqXjpvmFSVbpBIDrKOT6EvcprQ==} + turbo-linux-64@2.1.1: + resolution: {integrity: sha512-Js6d/bSQe9DuV9c7ITXYpsU/ADzFHABdz1UIHa7Oqjj9VOEbFeA9WpAn0c+mdJrVD+IXJFbbDZUjN7VYssmtcg==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.0.14: - resolution: {integrity: sha512-jwH+c0bfjpBf26K/tdEFatmnYyXwGROjbr6bZmNcL8R+IkGAc/cglL+OToqJnQZTgZvH7uDGbeSyUo7IsHyjuA==} + turbo-linux-arm64@2.1.1: + resolution: {integrity: sha512-LidzTCq0yvQ+N8w8Qub9FmhQ/mmEIeoqFi7DSupekEV2EjvE9jw/zYc9Pk67X+g7dHVfgOnvVzmrjChdxpFePw==} cpu: [arm64] os: [linux] - turbo-windows-64@2.0.14: - resolution: {integrity: sha512-w9/XwkHSzvLjmioo6cl3S1yRfI6swxsV1j1eJwtl66JM4/pn0H2rBa855R0n7hZnmI6H5ywLt/nLt6Ae8RTDmw==} + turbo-windows-64@2.1.1: + resolution: {integrity: sha512-GKc9ZywKwy4xLDhwXd6H07yzl0TB52HjXMrFLyHGhCVnf/w0oq4sLJv2sjbvuarPjsyx4xnCBJ3m3oyL2XmFtA==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.0.14: - resolution: {integrity: sha512-XaQlyYk+Rf4xS5XWCo8XCMIpssgGGy8blzLfolN6YBp4baElIWMlkLZHDbGyiFmCbNf9I9gJI64XGRG+LVyyjA==} + turbo-windows-arm64@2.1.1: + resolution: {integrity: sha512-oFKkMj11KKUv3xSK9/fhAEQTxLUp1Ol1EOktwc32+SFtEU0uls7kosAz0b+qe8k3pJGEMFdDPdqoEjyJidbxtQ==} cpu: [arm64] os: [win32] - turbo@2.0.14: - resolution: {integrity: sha512-00JjdCMD/cpsjP0Izkjcm8Oaor5yUCfDwODtaLb+WyblyadkaDEisGhy3Dbd5az9n+5iLSPiUgf+WjPbns6MRg==} + turbo@2.1.1: + resolution: {integrity: sha512-u9gUDkmR9dFS8b5kAYqIETK4OnzsS4l2ragJ0+soSMHh6VEeNHjTfSjk1tKxCqLyziCrPogadxP680J+v6yGHw==} hasBin: true type-check@0.4.0: @@ -5333,6 +5350,10 @@ packages: resolution: {integrity: sha512-bRkIGlXsnGBRBQRAY56UXBm//9qH4bmJfFvq83gSz41N282df+fjy8ofcEgc1sM8geNt5cl6mC2g9Fht1cs8Aw==} engines: {node: '>=16'} + type-fest@4.26.1: + resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} + engines: {node: '>=16'} + typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} @@ -5507,13 +5528,13 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - webdriver@9.0.7: - resolution: {integrity: sha512-0PN4omqCGlgi3RG0LyrQXr0RUmlDCenNtpN+dfzikfYoV+CHiCw2GMnZp2XCuYUnU01MaCKgRQxLuGobyZov+A==} - engines: {node: '>=18'} + webdriver@9.0.8: + resolution: {integrity: sha512-UnV0ANriSTUgypGk0pz8lApeQuHt+72WEDQG5hFwkkSvggtKLyWdT7+PQkNoXvDajTmiLIqUOq8XPI/Pm71rtw==} + engines: {node: '>=18.20.0'} - webdriverio@9.0.7: - resolution: {integrity: sha512-/6CvJkKpUWYbX/59PNJCHXGLPwulQ/bXZwlIUrsF6MWKdf8Eb6yTaXkMJBaBy5x496b50PQcXkbe+qpfsnqXsg==} - engines: {node: '>=18'} + webdriverio@9.0.9: + resolution: {integrity: sha512-IwvKzhcJ9NjOL55xwj27uTTKkfxsg77dmAfqoKFSP5dQ70JzU+NgxiALEjjWQDybtt1yGIkHk7wjjxjboMU1uw==} + engines: {node: '>=18.20.0'} peerDependencies: puppeteer-core: ^22.3.0 peerDependenciesMeta: @@ -5667,8 +5688,8 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.5.0: - resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} engines: {node: '>= 14'} hasBin: true @@ -5777,7 +5798,7 @@ snapshots: '@electron/get': 3.1.0 chalk: 4.1.2 commander: 4.1.1 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.6 fs-extra: 10.1.0 listr2: 7.0.2 semver: 7.6.3 @@ -5792,7 +5813,7 @@ snapshots: '@electron/rebuild': 3.6.0 '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) find-up: 5.0.0 fs-extra: 10.1.0 log-symbols: 4.1.0 @@ -5820,7 +5841,7 @@ snapshots: '@electron/rebuild': 3.6.0 '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) fast-glob: 3.3.2 filenamify: 4.3.0 find-up: 5.0.0 @@ -5881,7 +5902,7 @@ snapshots: dependencies: '@electron-forge/shared-types': 7.4.0 '@malept/cross-spawn-promise': 2.0.0 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) fs-extra: 10.1.0 username: 5.1.0 transitivePeerDependencies: @@ -5936,7 +5957,7 @@ snapshots: '@electron/get@2.0.3': dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) env-paths: 2.2.1 fs-extra: 8.1.0 got: 11.8.6 @@ -5950,7 +5971,7 @@ snapshots: '@electron/get@3.1.0': dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.6 env-paths: 2.2.1 fs-extra: 8.1.0 got: 11.8.6 @@ -5964,7 +5985,7 @@ snapshots: '@electron/notarize@2.3.2': dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) fs-extra: 9.1.0 promise-retry: 2.0.1 transitivePeerDependencies: @@ -5972,7 +5993,7 @@ snapshots: '@electron/notarize@2.4.0': dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.6 fs-extra: 9.1.0 promise-retry: 2.0.1 transitivePeerDependencies: @@ -5981,7 +6002,7 @@ snapshots: '@electron/osx-sign@1.3.1': dependencies: compare-version: 0.1.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.6 fs-extra: 10.1.0 isbinaryfile: 4.0.10 minimist: 1.2.8 @@ -5997,7 +6018,7 @@ snapshots: '@electron/osx-sign': 1.3.1 '@electron/universal': 2.0.1 '@electron/windows-sign': 1.1.3 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.6 extract-zip: 2.0.1 filenamify: 4.3.0 fs-extra: 11.2.0 @@ -6017,7 +6038,7 @@ snapshots: dependencies: '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) detect-libc: 2.0.3 fs-extra: 10.1.0 got: 11.8.6 @@ -6037,7 +6058,7 @@ snapshots: dependencies: '@electron/asar': 3.2.10 '@malept/cross-spawn-promise': 2.0.0 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.6 dir-compare: 4.2.0 fs-extra: 11.2.0 minimatch: 9.0.5 @@ -6048,7 +6069,7 @@ snapshots: '@electron/windows-sign@1.1.3': dependencies: cross-dirname: 0.1.0 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.6 fs-extra: 11.2.0 minimist: 1.2.8 postject: 1.0.0-alpha.6 @@ -6196,17 +6217,17 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.9.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.10.0)': dependencies: - eslint: 9.9.0 + eslint: 9.10.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} - '@eslint/config-array@0.17.1': + '@eslint/config-array@0.18.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -6214,7 +6235,7 @@ snapshots: '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) espree: 10.1.0 globals: 14.0.0 ignore: 5.3.2 @@ -6225,10 +6246,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.9.0': {} + '@eslint/js@9.10.0': {} '@eslint/object-schema@2.1.4': {} + '@eslint/plugin-kit@0.1.0': + dependencies: + levn: 0.4.1 + '@gar/promisify@1.1.3': {} '@humanwhocodes/module-importer@1.0.1': {} @@ -6237,25 +6262,25 @@ snapshots: '@iarna/toml@2.2.5': {} - '@inquirer/checkbox@2.4.7': + '@inquirer/checkbox@2.5.0': dependencies: - '@inquirer/core': 9.0.10 + '@inquirer/core': 9.1.0 '@inquirer/figures': 1.0.5 - '@inquirer/type': 1.5.2 + '@inquirer/type': 1.5.3 ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 - '@inquirer/confirm@3.1.22': + '@inquirer/confirm@3.2.0': dependencies: - '@inquirer/core': 9.0.10 - '@inquirer/type': 1.5.2 + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 - '@inquirer/core@9.0.10': + '@inquirer/core@9.1.0': dependencies: '@inquirer/figures': 1.0.5 - '@inquirer/type': 1.5.2 + '@inquirer/type': 1.5.3 '@types/mute-stream': 0.0.4 - '@types/node': 22.5.0 + '@types/node': 22.5.4 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 cli-spinners: 2.9.2 @@ -6266,71 +6291,71 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 - '@inquirer/editor@2.1.22': + '@inquirer/editor@2.2.0': dependencies: - '@inquirer/core': 9.0.10 - '@inquirer/type': 1.5.2 + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 external-editor: 3.1.0 - '@inquirer/expand@2.1.22': + '@inquirer/expand@2.3.0': dependencies: - '@inquirer/core': 9.0.10 - '@inquirer/type': 1.5.2 + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 yoctocolors-cjs: 2.1.2 '@inquirer/figures@1.0.5': {} - '@inquirer/input@2.2.9': + '@inquirer/input@2.3.0': dependencies: - '@inquirer/core': 9.0.10 - '@inquirer/type': 1.5.2 + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 - '@inquirer/number@1.0.10': + '@inquirer/number@1.1.0': dependencies: - '@inquirer/core': 9.0.10 - '@inquirer/type': 1.5.2 + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 - '@inquirer/password@2.1.22': + '@inquirer/password@2.2.0': dependencies: - '@inquirer/core': 9.0.10 - '@inquirer/type': 1.5.2 + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 ansi-escapes: 4.3.2 - '@inquirer/prompts@5.3.8': + '@inquirer/prompts@5.5.0': dependencies: - '@inquirer/checkbox': 2.4.7 - '@inquirer/confirm': 3.1.22 - '@inquirer/editor': 2.1.22 - '@inquirer/expand': 2.1.22 - '@inquirer/input': 2.2.9 - '@inquirer/number': 1.0.10 - '@inquirer/password': 2.1.22 - '@inquirer/rawlist': 2.2.4 - '@inquirer/search': 1.0.7 - '@inquirer/select': 2.4.7 + '@inquirer/checkbox': 2.5.0 + '@inquirer/confirm': 3.2.0 + '@inquirer/editor': 2.2.0 + '@inquirer/expand': 2.3.0 + '@inquirer/input': 2.3.0 + '@inquirer/number': 1.1.0 + '@inquirer/password': 2.2.0 + '@inquirer/rawlist': 2.3.0 + '@inquirer/search': 1.1.0 + '@inquirer/select': 2.5.0 - '@inquirer/rawlist@2.2.4': + '@inquirer/rawlist@2.3.0': dependencies: - '@inquirer/core': 9.0.10 - '@inquirer/type': 1.5.2 + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 yoctocolors-cjs: 2.1.2 - '@inquirer/search@1.0.7': + '@inquirer/search@1.1.0': dependencies: - '@inquirer/core': 9.0.10 + '@inquirer/core': 9.1.0 '@inquirer/figures': 1.0.5 - '@inquirer/type': 1.5.2 + '@inquirer/type': 1.5.3 yoctocolors-cjs: 2.1.2 - '@inquirer/select@2.4.7': + '@inquirer/select@2.5.0': dependencies: - '@inquirer/core': 9.0.10 + '@inquirer/core': 9.1.0 '@inquirer/figures': 1.0.5 - '@inquirer/type': 1.5.2 + '@inquirer/type': 1.5.3 ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 - '@inquirer/type@1.5.2': + '@inquirer/type@1.5.3': dependencies: mute-stream: 1.0.0 @@ -6390,7 +6415,7 @@ snapshots: '@malept/flatpak-bundler@0.4.0': dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) fs-extra: 9.1.0 lodash: 4.17.21 tmp-promise: 3.0.3 @@ -6418,6 +6443,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@nolyfill/is-core-module@1.0.39': {} + '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 @@ -6515,13 +6542,13 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@promptbook/utils@0.67.0-1': + '@promptbook/utils@0.70.0-1': dependencies: spacetrim: 0.11.39 - '@puppeteer/browsers@2.3.1': + '@puppeteer/browsers@2.4.0': dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.4.0 @@ -6532,88 +6559,88 @@ snapshots: transitivePeerDependencies: - supports-color - '@rollup/plugin-commonjs@26.0.1(rollup@4.21.0)': + '@rollup/plugin-commonjs@26.0.1(rollup@4.21.2)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) commondir: 1.0.1 estree-walker: 2.0.2 glob: 10.4.5 is-reference: 1.2.1 magic-string: 0.30.11 optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.2 - '@rollup/plugin-json@6.1.0(rollup@4.21.0)': + '@rollup/plugin-json@6.1.0(rollup@4.21.2)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.2 - '@rollup/plugin-node-resolve@15.2.3(rollup@4.21.0)': + '@rollup/plugin-node-resolve@15.2.3(rollup@4.21.2)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.2 - '@rollup/pluginutils@5.1.0(rollup@4.21.0)': + '@rollup/pluginutils@5.1.0(rollup@4.21.2)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.2 - '@rollup/rollup-android-arm-eabi@4.21.0': + '@rollup/rollup-android-arm-eabi@4.21.2': optional: true - '@rollup/rollup-android-arm64@4.21.0': + '@rollup/rollup-android-arm64@4.21.2': optional: true - '@rollup/rollup-darwin-arm64@4.21.0': + '@rollup/rollup-darwin-arm64@4.21.2': optional: true - '@rollup/rollup-darwin-x64@4.21.0': + '@rollup/rollup-darwin-x64@4.21.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.21.0': + '@rollup/rollup-linux-arm-gnueabihf@4.21.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.21.0': + '@rollup/rollup-linux-arm-musleabihf@4.21.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.21.0': + '@rollup/rollup-linux-arm64-gnu@4.21.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.21.0': + '@rollup/rollup-linux-arm64-musl@4.21.2': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.21.0': + '@rollup/rollup-linux-riscv64-gnu@4.21.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.21.0': + '@rollup/rollup-linux-s390x-gnu@4.21.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.21.0': + '@rollup/rollup-linux-x64-gnu@4.21.2': optional: true - '@rollup/rollup-linux-x64-musl@4.21.0': + '@rollup/rollup-linux-x64-musl@4.21.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.21.0': + '@rollup/rollup-win32-arm64-msvc@4.21.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.21.0': + '@rollup/rollup-win32-ia32-msvc@4.21.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.21.0': + '@rollup/rollup-win32-x64-msvc@4.21.2': optional: true '@sec-ant/readable-stream@0.4.1': {} @@ -6647,12 +6674,12 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/webdriverio@3.2.1(webdriverio@9.0.7)': + '@testing-library/webdriverio@3.2.1(webdriverio@9.0.9)': dependencies: '@babel/runtime': 7.25.4 '@testing-library/dom': 8.20.1 simmerjs: 0.5.6 - webdriverio: 9.0.7 + webdriverio: 9.0.9 '@tootallnate/once@2.0.0': {} @@ -6716,7 +6743,11 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@22.5.0': + '@types/node@20.16.5': + dependencies: + undici-types: 6.19.8 + + '@types/node@22.5.4': dependencies: undici-types: 6.19.8 @@ -6765,15 +6796,15 @@ snapshots: '@types/node': 20.16.1 optional: true - '@typescript-eslint/eslint-plugin@8.2.0(@typescript-eslint/parser@8.2.0(eslint@9.9.0)(typescript@5.5.4))(eslint@9.9.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.2.0(eslint@9.9.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.2.0 - '@typescript-eslint/type-utils': 8.2.0(eslint@9.9.0)(typescript@5.5.4) - '@typescript-eslint/utils': 8.2.0(eslint@9.9.0)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.2.0 - eslint: 9.9.0 + '@typescript-eslint/parser': 8.4.0(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/type-utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.4.0 + eslint: 9.10.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -6783,34 +6814,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.2.0(eslint@9.9.0)(typescript@5.5.4)': + '@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 8.2.0 - '@typescript-eslint/types': 8.2.0 - '@typescript-eslint/typescript-estree': 8.2.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.2.0 - debug: 4.3.6(supports-color@8.1.1) - eslint: 9.9.0 + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.4.0 + debug: 4.3.7(supports-color@8.1.1) + eslint: 9.10.0 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.18.0': + '@typescript-eslint/scope-manager@8.4.0': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/visitor-keys': 8.4.0 - '@typescript-eslint/scope-manager@8.2.0': + '@typescript-eslint/type-utils@8.4.0(eslint@9.10.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 8.2.0 - '@typescript-eslint/visitor-keys': 8.2.0 - - '@typescript-eslint/type-utils@8.2.0(eslint@9.9.0)(typescript@5.5.4)': - dependencies: - '@typescript-eslint/typescript-estree': 8.2.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.2.0(eslint@9.9.0)(typescript@5.5.4) - debug: 4.3.6(supports-color@8.1.1) + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) + debug: 4.3.7(supports-color@8.1.1) ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 @@ -6818,31 +6844,14 @@ snapshots: - eslint - supports-color - '@typescript-eslint/types@7.18.0': {} - - '@typescript-eslint/types@8.2.0': {} + '@typescript-eslint/types@8.4.0': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.4.0(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.6(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.2.0(typescript@5.5.4)': - dependencies: - '@typescript-eslint/types': 8.2.0 - '@typescript-eslint/visitor-keys': 8.2.0 - debug: 4.3.6(supports-color@8.1.1) - globby: 11.1.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/visitor-keys': 8.4.0 + debug: 4.3.7(supports-color@8.1.1) + fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 @@ -6852,43 +6861,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@9.9.0)(typescript@5.5.4)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - eslint: 9.9.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@8.2.0(eslint@9.9.0)(typescript@5.5.4)': + '@typescript-eslint/utils@8.4.0(eslint@9.10.0)(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0) - '@typescript-eslint/scope-manager': 8.2.0 - '@typescript-eslint/types': 8.2.0 - '@typescript-eslint/typescript-estree': 8.2.0(typescript@5.5.4) - eslint: 9.9.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + eslint: 9.10.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.18.0': + '@typescript-eslint/visitor-keys@8.4.0': dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@8.2.0': - dependencies: - '@typescript-eslint/types': 8.2.0 + '@typescript-eslint/types': 8.4.0 eslint-visitor-keys: 3.4.3 '@vitest/coverage-v8@2.0.5(vitest@2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 @@ -6902,11 +6895,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.0.3(@typescript-eslint/utils@8.2.0(eslint@9.9.0)(typescript@5.5.4))(eslint@9.9.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6))': + '@vitest/eslint-plugin@1.1.0(@typescript-eslint/utils@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6))': dependencies: - eslint: 9.9.0 + eslint: 9.10.0 optionalDependencies: - '@typescript-eslint/utils': 8.2.0(eslint@9.9.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) typescript: 5.5.4 vitest: 2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6) @@ -6949,32 +6942,32 @@ snapshots: loupe: 3.1.1 tinyrainbow: 1.2.0 - '@wdio/cli@9.0.7': + '@wdio/cli@9.0.9': dependencies: '@types/node': 20.16.1 '@vitest/snapshot': 1.6.0 - '@wdio/config': 9.0.6 - '@wdio/globals': 9.0.7(@wdio/logger@9.0.4) - '@wdio/logger': 9.0.4 - '@wdio/protocols': 9.0.4 - '@wdio/types': 9.0.4 - '@wdio/utils': 9.0.6 + '@wdio/config': 9.0.8 + '@wdio/globals': 9.0.9(@wdio/logger@9.0.8) + '@wdio/logger': 9.0.8 + '@wdio/protocols': 9.0.8 + '@wdio/types': 9.0.8 + '@wdio/utils': 9.0.8 async-exit-hook: 2.0.1 chalk: 5.3.0 chokidar: 3.6.0 - cli-spinners: 3.1.0 + cli-spinners: 3.2.0 dotenv: 16.4.5 ejs: 3.1.10 execa: 9.3.1 import-meta-resolve: 4.1.0 - inquirer: 10.1.8 + inquirer: 10.2.2 lodash.flattendeep: 4.4.0 lodash.pickby: 4.6.0 lodash.union: 4.6.0 read-pkg-up: 10.1.0 recursive-readdir: 2.2.3 - tsx: 4.17.0 - webdriverio: 9.0.7 + tsx: 4.19.0 + webdriverio: 9.0.9 yargs: 17.7.2 transitivePeerDependencies: - bufferutil @@ -6982,11 +6975,11 @@ snapshots: - supports-color - utf-8-validate - '@wdio/config@9.0.6': + '@wdio/config@9.0.8': dependencies: - '@wdio/logger': 9.0.4 - '@wdio/types': 9.0.4 - '@wdio/utils': 9.0.6 + '@wdio/logger': 9.0.8 + '@wdio/types': 9.0.8 + '@wdio/utils': 9.0.8 decamelize: 6.0.0 deepmerge-ts: 7.1.0 glob: 10.4.5 @@ -6994,10 +6987,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@wdio/globals@9.0.7(@wdio/logger@9.0.4)': + '@wdio/globals@9.0.9(@wdio/logger@9.0.8)': optionalDependencies: - expect-webdriverio: 5.0.1(@wdio/globals@9.0.7(@wdio/logger@9.0.4))(@wdio/logger@9.0.4)(webdriverio@9.0.7) - webdriverio: 9.0.7 + expect-webdriverio: 5.0.2(@wdio/globals@9.0.9(@wdio/logger@9.0.8))(@wdio/logger@9.0.8)(webdriverio@9.0.9) + webdriverio: 9.0.9 transitivePeerDependencies: - '@wdio/logger' - bufferutil @@ -7005,13 +6998,13 @@ snapshots: - supports-color - utf-8-validate - '@wdio/local-runner@9.0.7': + '@wdio/local-runner@9.0.9': dependencies: '@types/node': 20.16.1 - '@wdio/logger': 9.0.4 - '@wdio/repl': 9.0.4 - '@wdio/runner': 9.0.7 - '@wdio/types': 9.0.4 + '@wdio/logger': 9.0.8 + '@wdio/repl': 9.0.8 + '@wdio/runner': 9.0.9 + '@wdio/types': 9.0.8 async-exit-hook: 2.0.1 split2: 4.2.0 stream-buffers: 3.0.3 @@ -7024,69 +7017,69 @@ snapshots: '@wdio/logger@8.38.0': dependencies: chalk: 5.3.0 - loglevel: 1.9.1 + loglevel: 1.9.2 loglevel-plugin-prefix: 0.8.4 strip-ansi: 7.1.0 - '@wdio/logger@9.0.4': + '@wdio/logger@9.0.8': dependencies: chalk: 5.3.0 - loglevel: 1.9.1 + loglevel: 1.9.2 loglevel-plugin-prefix: 0.8.4 strip-ansi: 7.1.0 - '@wdio/mocha-framework@9.0.6': + '@wdio/mocha-framework@9.0.8': dependencies: '@types/mocha': 10.0.7 '@types/node': 20.16.1 - '@wdio/logger': 9.0.4 - '@wdio/types': 9.0.4 - '@wdio/utils': 9.0.6 + '@wdio/logger': 9.0.8 + '@wdio/types': 9.0.8 + '@wdio/utils': 9.0.8 mocha: 10.7.3 transitivePeerDependencies: - supports-color - '@wdio/protocols@9.0.4': {} + '@wdio/protocols@9.0.8': {} - '@wdio/repl@9.0.4': + '@wdio/repl@9.0.8': dependencies: '@types/node': 20.16.1 - '@wdio/runner@9.0.7': + '@wdio/runner@9.0.9': dependencies: '@types/node': 20.16.1 - '@wdio/config': 9.0.6 - '@wdio/globals': 9.0.7(@wdio/logger@9.0.4) - '@wdio/logger': 9.0.4 - '@wdio/types': 9.0.4 - '@wdio/utils': 9.0.6 + '@wdio/config': 9.0.8 + '@wdio/globals': 9.0.9(@wdio/logger@9.0.8) + '@wdio/logger': 9.0.8 + '@wdio/types': 9.0.8 + '@wdio/utils': 9.0.8 deepmerge-ts: 7.1.0 - expect-webdriverio: 5.0.1(@wdio/globals@9.0.7(@wdio/logger@9.0.4))(@wdio/logger@9.0.4)(webdriverio@9.0.7) + expect-webdriverio: 5.0.2(@wdio/globals@9.0.9(@wdio/logger@9.0.8))(@wdio/logger@9.0.8)(webdriverio@9.0.9) gaze: 1.1.3 - webdriver: 9.0.7 - webdriverio: 9.0.7 + webdriver: 9.0.8 + webdriverio: 9.0.9 transitivePeerDependencies: - bufferutil - puppeteer-core - supports-color - utf-8-validate - '@wdio/types@9.0.4': + '@wdio/types@9.0.8': dependencies: '@types/node': 20.16.1 - '@wdio/utils@9.0.6': + '@wdio/utils@9.0.8': dependencies: - '@puppeteer/browsers': 2.3.1 - '@wdio/logger': 9.0.4 - '@wdio/types': 9.0.4 + '@puppeteer/browsers': 2.4.0 + '@wdio/logger': 9.0.8 + '@wdio/types': 9.0.8 decamelize: 6.0.0 deepmerge-ts: 7.1.0 edgedriver: 5.6.1 - geckodriver: 4.4.3 + geckodriver: 4.4.4 get-port: 7.1.0 import-meta-resolve: 4.1.0 - locate-app: 2.4.29 + locate-app: 2.4.39 safaridriver: 0.1.2 split2: 4.2.0 wait-port: 1.1.0 @@ -7175,7 +7168,7 @@ snapshots: '@xtuc/long@4.2.2': {} - '@zip.js/zip.js@2.7.51': {} + '@zip.js/zip.js@2.7.52': {} abbrev@1.1.1: {} @@ -7195,13 +7188,13 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color agent-base@7.1.1: dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -7264,11 +7257,9 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - app-builder-bin@5.0.0-alpha.4: {} - app-builder-bin@5.0.0-alpha.7: {} - app-builder-lib@25.0.4(dmg-builder@25.0.4(electron-builder-squirrel-windows@25.0.4))(electron-builder-squirrel-windows@25.0.4(dmg-builder@25.0.4)): + app-builder-lib@25.0.5(dmg-builder@25.0.5(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@25.0.5)): dependencies: '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.3.2 @@ -7282,10 +7273,10 @@ snapshots: builder-util: 25.0.3 builder-util-runtime: 9.2.5 chromium-pickle-js: 0.2.0 - debug: 4.3.6(supports-color@8.1.1) - dmg-builder: 25.0.4(electron-builder-squirrel-windows@25.0.4) + debug: 4.3.7(supports-color@8.1.1) + dmg-builder: 25.0.5(electron-builder-squirrel-windows@25.0.5) ejs: 3.1.10 - electron-builder-squirrel-windows: 25.0.4(dmg-builder@25.0.4) + electron-builder-squirrel-windows: 25.0.5(dmg-builder@25.0.5) electron-publish: 25.0.3 form-data: 4.0.0 fs-extra: 10.1.0 @@ -7383,8 +7374,6 @@ snapshots: call-bind: 1.0.7 is-array-buffer: 3.0.4 - array-union@2.1.0: {} - assert-plus@1.0.0: optional: true @@ -7392,7 +7381,7 @@ snapshots: ast-types@0.13.4: dependencies: - tslib: 2.6.3 + tslib: 2.7.0 astral-regex@2.0.0: optional: true @@ -7422,24 +7411,25 @@ snapshots: bare-events@2.4.2: optional: true - bare-fs@2.3.1: + bare-fs@2.3.3: dependencies: bare-events: 2.4.2 bare-path: 2.1.3 - bare-stream: 2.1.3 + bare-stream: 2.2.1 optional: true - bare-os@2.4.0: + bare-os@2.4.2: optional: true bare-path@2.1.3: dependencies: - bare-os: 2.4.0 + bare-os: 2.4.2 optional: true - bare-stream@2.1.3: + bare-stream@2.2.1: dependencies: - streamx: 2.19.0 + b4a: 1.6.6 + streamx: 2.20.0 optional: true base64-js@1.5.1: {} @@ -7495,8 +7485,8 @@ snapshots: browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001651 - electron-to-chromium: 1.5.13 + caniuse-lite: 1.0.30001658 + electron-to-chromium: 1.5.18 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -7518,39 +7508,11 @@ snapshots: builder-util-runtime@9.2.5: dependencies: - debug: 4.3.6(supports-color@8.1.1) - sax: 1.4.1 - transitivePeerDependencies: - - supports-color - - builder-util-runtime@9.2.5-alpha.3: - dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) sax: 1.4.1 transitivePeerDependencies: - supports-color - builder-util@25.0.0-alpha.10: - dependencies: - 7zip-bin: 5.2.0 - '@types/debug': 4.1.12 - app-builder-bin: 5.0.0-alpha.4 - bluebird-lst: 1.0.9 - builder-util-runtime: 9.2.5-alpha.3 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.6(supports-color@8.1.1) - fs-extra: 10.1.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-ci: 3.0.1 - js-yaml: 4.1.0 - source-map-support: 0.5.21 - stat-mode: 1.0.0 - temp-file: 3.4.0 - transitivePeerDependencies: - - supports-color - builder-util@25.0.3: dependencies: 7zip-bin: 5.2.0 @@ -7560,7 +7522,7 @@ snapshots: builder-util-runtime: 9.2.5 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) fs-extra: 10.1.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 @@ -7641,7 +7603,7 @@ snapshots: camelcase@7.0.1: {} - caniuse-lite@1.0.30001651: {} + caniuse-lite@1.0.30001658: {} chai@5.1.1: dependencies: @@ -7729,7 +7691,7 @@ snapshots: cli-spinners@2.9.2: {} - cli-spinners@3.1.0: {} + cli-spinners@3.2.0: {} cli-truncate@2.1.0: dependencies: @@ -7932,9 +7894,13 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.6(supports-color@8.1.1): + debug@4.3.6: dependencies: ms: 2.1.2 + + debug@4.3.7(supports-color@8.1.1): + dependencies: + ms: 2.1.3 optionalDependencies: supports-color: 8.1.1 @@ -8034,13 +8000,9 @@ snapshots: minimatch: 3.1.2 p-limit: 3.1.0 - dir-glob@3.0.1: + dmg-builder@25.0.5(electron-builder-squirrel-windows@25.0.5): dependencies: - path-type: 4.0.0 - - dmg-builder@25.0.4(electron-builder-squirrel-windows@25.0.4): - dependencies: - app-builder-lib: 25.0.4(dmg-builder@25.0.4(electron-builder-squirrel-windows@25.0.4))(electron-builder-squirrel-windows@25.0.4(dmg-builder@25.0.4)) + app-builder-lib: 25.0.5(dmg-builder@25.0.5(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@25.0.5)) builder-util: 25.0.3 builder-util-runtime: 9.2.5 fs-extra: 10.1.0 @@ -8109,10 +8071,10 @@ snapshots: edgedriver@5.6.1: dependencies: '@wdio/logger': 8.38.0 - '@zip.js/zip.js': 2.7.51 + '@zip.js/zip.js': 2.7.52 decamelize: 6.0.0 edge-paths: 3.0.5 - fast-xml-parser: 4.4.1 + fast-xml-parser: 4.5.0 node-fetch: 3.3.2 which: 4.0.0 @@ -8120,9 +8082,9 @@ snapshots: dependencies: jake: 10.9.2 - electron-builder-squirrel-windows@25.0.4(dmg-builder@25.0.4): + electron-builder-squirrel-windows@25.0.5(dmg-builder@25.0.5): dependencies: - app-builder-lib: 25.0.4(dmg-builder@25.0.4(electron-builder-squirrel-windows@25.0.4))(electron-builder-squirrel-windows@25.0.4(dmg-builder@25.0.4)) + app-builder-lib: 25.0.5(dmg-builder@25.0.5(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@25.0.5)) archiver: 5.3.2 builder-util: 25.0.3 fs-extra: 10.1.0 @@ -8131,13 +8093,13 @@ snapshots: - dmg-builder - supports-color - electron-builder@25.0.4(electron-builder-squirrel-windows@25.0.4(dmg-builder@25.0.4)): + electron-builder@25.0.5(electron-builder-squirrel-windows@25.0.5(dmg-builder@25.0.5)): dependencies: - app-builder-lib: 25.0.4(dmg-builder@25.0.4(electron-builder-squirrel-windows@25.0.4))(electron-builder-squirrel-windows@25.0.4(dmg-builder@25.0.4)) + app-builder-lib: 25.0.5(dmg-builder@25.0.5(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@25.0.5)) builder-util: 25.0.3 builder-util-runtime: 9.2.5 chalk: 4.1.2 - dmg-builder: 25.0.4(electron-builder-squirrel-windows@25.0.4) + dmg-builder: 25.0.5(electron-builder-squirrel-windows@25.0.5) fs-extra: 10.1.0 is-ci: 3.0.1 lazy-val: 1.0.5 @@ -8161,9 +8123,9 @@ snapshots: transitivePeerDependencies: - supports-color - electron-to-chromium@1.5.13: {} + electron-to-chromium@1.5.18: {} - electron@32.0.1: + electron@32.0.2: dependencies: '@electron/get': 2.0.3 '@types/node': 20.16.1 @@ -8284,7 +8246,7 @@ snapshots: '@esbuild/win32-ia32': 0.23.1 '@esbuild/win32-x64': 0.23.1 - escalade@3.1.2: {} + escalade@3.2.0: {} escape-goat@4.0.0: {} @@ -8302,9 +8264,9 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@9.1.0(eslint@9.9.0): + eslint-config-prettier@9.1.0(eslint@9.10.0): dependencies: - eslint: 9.9.0 + eslint: 9.10.0 eslint-import-resolver-node@0.3.9: dependencies: @@ -8314,24 +8276,53 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import-x@3.1.0(eslint@9.9.0)(typescript@5.5.4): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.3.7(supports-color@8.1.1) + enhanced-resolve: 5.17.1 + eslint: 9.10.0 + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0))(eslint@9.10.0) + fast-glob: 3.3.2 + get-tsconfig: 4.8.0 + is-bun-module: 1.2.1 + is-glob: 4.0.3 + optionalDependencies: + eslint-plugin-import-x: 4.2.1(eslint@9.10.0)(typescript@5.5.4) + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0))(eslint@9.10.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.4.0(eslint@9.10.0)(typescript@5.5.4) + eslint: 9.10.0 + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.5.4): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@9.9.0)(typescript@5.5.4) - debug: 4.3.6(supports-color@8.1.1) + '@typescript-eslint/utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) + debug: 4.3.7(supports-color@8.1.1) doctrine: 3.0.0 - eslint: 9.9.0 + eslint: 9.10.0 eslint-import-resolver-node: 0.3.9 - get-tsconfig: 4.7.6 + get-tsconfig: 4.8.0 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 stable-hash: 0.0.4 - tslib: 2.6.3 + tslib: 2.7.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-wdio@9.0.5: {} + eslint-plugin-wdio@9.0.8: {} eslint-scope@5.1.1: dependencies: @@ -8347,20 +8338,21 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.9.0: + eslint@9.10.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) '@eslint-community/regexpp': 4.11.0 - '@eslint/config-array': 0.17.1 + '@eslint/config-array': 0.18.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.9.0 + '@eslint/js': 9.10.0 + '@eslint/plugin-kit': 0.1.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 @@ -8376,7 +8368,6 @@ snapshots: is-glob: 4.0.3 is-path-inside: 3.0.3 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 @@ -8473,15 +8464,15 @@ snapshots: dependencies: homedir-polyfill: 1.0.3 - expect-webdriverio@5.0.1(@wdio/globals@9.0.7(@wdio/logger@9.0.4))(@wdio/logger@9.0.4)(webdriverio@9.0.7): + expect-webdriverio@5.0.2(@wdio/globals@9.0.9(@wdio/logger@9.0.8))(@wdio/logger@9.0.8)(webdriverio@9.0.9): dependencies: '@vitest/snapshot': 2.0.5 - '@wdio/globals': 9.0.7(@wdio/logger@9.0.4) - '@wdio/logger': 9.0.4 + '@wdio/globals': 9.0.9(@wdio/logger@9.0.8) + '@wdio/logger': 9.0.8 expect: 29.7.0 jest-matcher-utils: 29.7.0 lodash.isequal: 4.5.0 - webdriverio: 9.0.7 + webdriverio: 9.0.9 expect@29.7.0: dependencies: @@ -8501,7 +8492,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.6 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -8526,13 +8517,13 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.7 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} - fast-xml-parser@4.4.1: + fast-xml-parser@4.5.0: dependencies: strnum: 1.0.5 @@ -8610,7 +8601,7 @@ snapshots: flora-colossus@2.0.0: dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) fs-extra: 10.1.0 transitivePeerDependencies: - supports-color @@ -8680,7 +8671,7 @@ snapshots: galactus@1.0.0: dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.6 flora-colossus: 2.0.0 fs-extra: 10.1.0 transitivePeerDependencies: @@ -8701,10 +8692,10 @@ snapshots: dependencies: globule: 1.3.4 - geckodriver@4.4.3: + geckodriver@4.4.4: dependencies: - '@wdio/logger': 9.0.4 - '@zip.js/zip.js': 2.7.51 + '@wdio/logger': 9.0.8 + '@zip.js/zip.js': 2.7.52 decamelize: 6.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.5 @@ -8760,7 +8751,7 @@ snapshots: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 - get-tsconfig@4.7.6: + get-tsconfig@4.8.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -8768,7 +8759,7 @@ snapshots: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) fs-extra: 11.2.0 transitivePeerDependencies: - supports-color @@ -8869,15 +8860,6 @@ snapshots: gopd: 1.0.1 optional: true - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - globby@14.0.2: dependencies: '@sindresorhus/merge-streams': 2.3.0 @@ -8994,14 +8976,14 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -9018,14 +9000,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -9089,10 +9071,11 @@ snapshots: ini@4.1.1: {} - inquirer@10.1.8: + inquirer@10.2.2: dependencies: - '@inquirer/prompts': 5.3.8 - '@inquirer/type': 1.5.2 + '@inquirer/core': 9.1.0 + '@inquirer/prompts': 5.5.0 + '@inquirer/type': 1.5.3 '@types/mute-stream': 0.0.4 ansi-escapes: 4.3.2 mute-stream: 1.0.0 @@ -9158,6 +9141,10 @@ snapshots: dependencies: builtin-modules: 3.3.0 + is-bun-module@1.2.1: + dependencies: + semver: 7.6.3 + is-callable@1.2.7: {} is-ci@3.0.1: @@ -9318,7 +9305,7 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -9364,7 +9351,7 @@ snapshots: '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.7 + micromatch: 4.0.8 pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 @@ -9380,7 +9367,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.5 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -9484,18 +9471,18 @@ snapshots: lines-and-columns@2.0.4: {} - lint-staged@15.2.9: + lint-staged@15.2.10: dependencies: chalk: 5.3.0 commander: 12.1.0 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) execa: 8.0.1 lilconfig: 3.1.2 listr2: 8.2.4 - micromatch: 4.0.7 + micromatch: 4.0.8 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.5.0 + yaml: 2.5.1 transitivePeerDependencies: - supports-color @@ -9526,9 +9513,9 @@ snapshots: loader-runner@4.3.0: {} - locate-app@2.4.29: + locate-app@2.4.39: dependencies: - '@promptbook/utils': 0.67.0-1 + '@promptbook/utils': 0.70.0-1 type-fest: 2.13.0 userhome: 1.0.0 @@ -9619,7 +9606,7 @@ snapshots: loglevel-plugin-prefix@0.8.4: {} - loglevel@1.9.1: {} + loglevel@1.9.2: {} loupe@3.1.1: dependencies: @@ -9701,6 +9688,11 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + mime-db@1.52.0: {} mime-types@2.1.35: @@ -9787,7 +9779,7 @@ snapshots: ansi-colors: 4.1.3 browser-stdout: 1.3.1 chokidar: 3.6.0 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) diff: 5.2.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 @@ -10062,7 +10054,7 @@ snapshots: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.1 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) get-uri: 6.0.3 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.5 @@ -10083,7 +10075,7 @@ snapshots: ky: 1.7.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.6.2 + semver: 7.6.3 pako@1.0.11: {} @@ -10170,8 +10162,6 @@ snapshots: dependencies: pify: 2.3.0 - path-type@4.0.0: {} - path-type@5.0.0: {} pathe@1.1.2: {} @@ -10186,6 +10176,8 @@ snapshots: picocolors@1.0.1: {} + picocolors@1.1.0: {} + picomatch@2.3.1: {} pidtree@0.6.0: {} @@ -10256,7 +10248,7 @@ snapshots: proxy-agent@6.4.0: dependencies: agent-base: 7.1.1 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.5 lru-cache: 7.18.3 @@ -10308,7 +10300,7 @@ snapshots: read-binary-file-arch@1.0.6: dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -10331,7 +10323,7 @@ snapshots: dependencies: find-up: 6.3.0 read-pkg: 8.1.0 - type-fest: 4.25.0 + type-fest: 4.26.1 read-pkg-up@2.0.0: dependencies: @@ -10349,7 +10341,7 @@ snapshots: '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.2 parse-json: 7.1.1 - type-fest: 4.25.0 + type-fest: 4.26.1 read-pkg@9.0.1: dependencies: @@ -10536,26 +10528,26 @@ snapshots: sprintf-js: 1.1.3 optional: true - rollup@4.21.0: + rollup@4.21.2: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.21.0 - '@rollup/rollup-android-arm64': 4.21.0 - '@rollup/rollup-darwin-arm64': 4.21.0 - '@rollup/rollup-darwin-x64': 4.21.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.21.0 - '@rollup/rollup-linux-arm-musleabihf': 4.21.0 - '@rollup/rollup-linux-arm64-gnu': 4.21.0 - '@rollup/rollup-linux-arm64-musl': 4.21.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.21.0 - '@rollup/rollup-linux-riscv64-gnu': 4.21.0 - '@rollup/rollup-linux-s390x-gnu': 4.21.0 - '@rollup/rollup-linux-x64-gnu': 4.21.0 - '@rollup/rollup-linux-x64-musl': 4.21.0 - '@rollup/rollup-win32-arm64-msvc': 4.21.0 - '@rollup/rollup-win32-ia32-msvc': 4.21.0 - '@rollup/rollup-win32-x64-msvc': 4.21.0 + '@rollup/rollup-android-arm-eabi': 4.21.2 + '@rollup/rollup-android-arm64': 4.21.2 + '@rollup/rollup-darwin-arm64': 4.21.2 + '@rollup/rollup-darwin-x64': 4.21.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.2 + '@rollup/rollup-linux-arm-musleabihf': 4.21.2 + '@rollup/rollup-linux-arm64-gnu': 4.21.2 + '@rollup/rollup-linux-arm64-musl': 4.21.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2 + '@rollup/rollup-linux-riscv64-gnu': 4.21.2 + '@rollup/rollup-linux-s390x-gnu': 4.21.2 + '@rollup/rollup-linux-x64-gnu': 4.21.2 + '@rollup/rollup-linux-x64-musl': 4.21.2 + '@rollup/rollup-win32-arm64-msvc': 4.21.2 + '@rollup/rollup-win32-ia32-msvc': 4.21.2 + '@rollup/rollup-win32-x64-msvc': 4.21.2 fsevents: 2.3.3 rrweb-cssom@0.6.0: {} @@ -10722,7 +10714,7 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -10730,7 +10722,7 @@ snapshots: socks-proxy-agent@8.0.4: dependencies: agent-base: 7.1.1 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -10795,7 +10787,7 @@ snapshots: stream-buffers@3.0.3: {} - streamx@2.19.0: + streamx@2.20.0: dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 @@ -10865,7 +10857,7 @@ snapshots: sumchecker@3.0.1: dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -10897,7 +10889,7 @@ snapshots: pump: 3.0.0 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 2.3.1 + bare-fs: 2.3.3 bare-path: 2.1.3 tar-stream@2.2.0: @@ -10912,7 +10904,7 @@ snapshots: dependencies: b4a: 1.6.6 fast-fifo: 1.3.2 - streamx: 2.19.0 + streamx: 2.20.0 tar@6.2.1: dependencies: @@ -11023,39 +11015,41 @@ snapshots: tslib@2.6.3: {} - tsx@4.17.0: + tslib@2.7.0: {} + + tsx@4.19.0: dependencies: esbuild: 0.23.1 - get-tsconfig: 4.7.6 + get-tsconfig: 4.8.0 optionalDependencies: fsevents: 2.3.3 - turbo-darwin-64@2.0.14: + turbo-darwin-64@2.1.1: optional: true - turbo-darwin-arm64@2.0.14: + turbo-darwin-arm64@2.1.1: optional: true - turbo-linux-64@2.0.14: + turbo-linux-64@2.1.1: optional: true - turbo-linux-arm64@2.0.14: + turbo-linux-arm64@2.1.1: optional: true - turbo-windows-64@2.0.14: + turbo-windows-64@2.1.1: optional: true - turbo-windows-arm64@2.0.14: + turbo-windows-arm64@2.1.1: optional: true - turbo@2.0.14: + turbo@2.1.1: optionalDependencies: - turbo-darwin-64: 2.0.14 - turbo-darwin-arm64: 2.0.14 - turbo-linux-64: 2.0.14 - turbo-linux-arm64: 2.0.14 - turbo-windows-64: 2.0.14 - turbo-windows-arm64: 2.0.14 + turbo-darwin-64: 2.1.1 + turbo-darwin-arm64: 2.1.1 + turbo-linux-64: 2.1.1 + turbo-linux-arm64: 2.1.1 + turbo-windows-64: 2.1.1 + turbo-windows-arm64: 2.1.1 type-check@0.4.0: dependencies: @@ -11076,6 +11070,8 @@ snapshots: type-fest@4.25.0: {} + type-fest@4.26.1: {} + typedarray-to-buffer@3.1.5: dependencies: is-typedarray: 1.0.0 @@ -11116,8 +11112,8 @@ snapshots: update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: browserslist: 4.23.3 - escalade: 3.1.2 - picocolors: 1.0.1 + escalade: 3.2.0 + picocolors: 1.1.0 update-notifier@7.1.0: dependencies: @@ -11173,7 +11169,7 @@ snapshots: vite-node@2.0.5(@types/node@20.16.1)(terser@5.31.6): dependencies: cac: 6.7.14 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) pathe: 1.1.2 tinyrainbow: 1.2.0 vite: 5.4.2(@types/node@20.16.1)(terser@5.31.6) @@ -11192,7 +11188,7 @@ snapshots: dependencies: esbuild: 0.21.5 postcss: 8.4.41 - rollup: 4.21.0 + rollup: 4.21.2 optionalDependencies: '@types/node': 20.16.1 fsevents: 2.3.3 @@ -11208,7 +11204,7 @@ snapshots: '@vitest/spy': 2.0.5 '@vitest/utils': 2.0.5 chai: 5.1.1 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) execa: 8.0.1 magic-string: 0.30.11 pathe: 1.1.2 @@ -11240,7 +11236,7 @@ snapshots: dependencies: chalk: 4.1.2 commander: 9.5.0 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -11255,15 +11251,15 @@ snapshots: web-streams-polyfill@3.3.3: {} - webdriver@9.0.7: + webdriver@9.0.8: dependencies: '@types/node': 20.16.1 '@types/ws': 8.5.12 - '@wdio/config': 9.0.6 - '@wdio/logger': 9.0.4 - '@wdio/protocols': 9.0.4 - '@wdio/types': 9.0.4 - '@wdio/utils': 9.0.6 + '@wdio/config': 9.0.8 + '@wdio/logger': 9.0.8 + '@wdio/protocols': 9.0.8 + '@wdio/types': 9.0.8 + '@wdio/utils': 9.0.8 deepmerge-ts: 7.1.0 ws: 8.18.0 transitivePeerDependencies: @@ -11271,16 +11267,16 @@ snapshots: - supports-color - utf-8-validate - webdriverio@9.0.7: + webdriverio@9.0.9: dependencies: '@types/node': 20.16.1 '@types/sinonjs__fake-timers': 8.1.5 - '@wdio/config': 9.0.6 - '@wdio/logger': 9.0.4 - '@wdio/protocols': 9.0.4 - '@wdio/repl': 9.0.4 - '@wdio/types': 9.0.4 - '@wdio/utils': 9.0.6 + '@wdio/config': 9.0.8 + '@wdio/logger': 9.0.8 + '@wdio/protocols': 9.0.8 + '@wdio/repl': 9.0.8 + '@wdio/types': 9.0.8 + '@wdio/utils': 9.0.8 archiver: 7.0.1 aria-query: 5.3.0 cheerio: 1.0.0 @@ -11299,7 +11295,7 @@ snapshots: rgb2hex: 0.2.5 serialize-error: 11.0.3 urlpattern-polyfill: 10.0.0 - webdriver: 9.0.7 + webdriver: 9.0.8 transitivePeerDependencies: - bufferutil - supports-color @@ -11469,7 +11465,7 @@ snapshots: yallist@4.0.0: {} - yaml@2.5.0: {} + yaml@2.5.1: {} yargs-parser@20.2.9: {} @@ -11485,7 +11481,7 @@ snapshots: yargs@16.2.0: dependencies: cliui: 7.0.4 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -11495,7 +11491,7 @@ snapshots: yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 From df0f5d7db9e81124fc813af64e670655a0859208 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Sun, 8 Sep 2024 23:17:29 +0100 Subject: [PATCH 03/52] test: add regular func test --- e2e/api.spec.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/e2e/api.spec.ts b/e2e/api.spec.ts index 0b87b67e..cd31ee96 100644 --- a/e2e/api.spec.ts +++ b/e2e/api.spec.ts @@ -282,6 +282,17 @@ describe('execute', () => { }); it('should handle executing a function which declares a function', async () => { + expect( + await browser.execute(() => { + function newFunc() { + return 'boom!'; + } + return newFunc(); + }), + ).toEqual('boom!'); + }); + + it('should handle executing a function which declares a fat arrow function', async () => { expect( await browser.execute(() => { const newFunc = () => 'boom!'; From 45f62708d7bbdc6ab2eb6c54f3a1a2a62e124e6c Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Sun, 8 Sep 2024 23:22:59 +0100 Subject: [PATCH 04/52] chore: delete override --- package.json | 5 ----- pnpm-lock.yaml | 3 --- 2 files changed, 8 deletions(-) diff --git a/package.json b/package.json index 05663944..d2ca13d3 100644 --- a/package.json +++ b/package.json @@ -70,11 +70,6 @@ "tsx": "^4.19.0", "turbo": "^2.1.1" }, - "pnpm": { - "overrides": { - "expect-webdriverio": "^5.0.1" - } - }, "lint-staged": { "**/*.{yml,json,md,ts,js}": [ "prettier --write" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1458d97f..858cb58b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,9 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - expect-webdriverio: ^5.0.1 - importers: .: From 8876f0f38b4158f99aa44b923de920186481aa7c Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 00:02:18 +0100 Subject: [PATCH 05/52] chore(linting): fix import-x issues --- eslint.config.js | 10 +++++----- packages/@wdio_electron-utils/src/index.ts | 2 +- packages/wdio-electron-service/src/index.ts | 1 - packages/wdio-electron-service/src/service.ts | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index ef26c732..581aa40d 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -25,7 +25,7 @@ export default [ ...globals.es2021, }, parserOptions: { - ...importX.configs.recommended.parserOptions, + ...importX.flatConfigs.recommended.parserOptions, }, }, plugins: { @@ -33,7 +33,7 @@ export default [ }, rules: { ...eslint.configs.recommended.rules, - ...importX.configs.recommended.rules, + ...importX.flatConfigs.recommended.rules, 'import-x/no-named-as-default': 'off', 'import-x/no-unresolved': 'off', }, @@ -51,7 +51,7 @@ export default [ }, }, settings: { - ...importX.configs.electron.settings, + ...importX.flatConfigs.electron.settings, }, }, // Electron renderer process files @@ -63,7 +63,7 @@ export default [ }, }, settings: { - ...importX.configs.electron.settings, + ...importX.flatConfigs.electron.settings, }, }, // TS files @@ -87,7 +87,7 @@ export default [ rules: { ...ts.configs['eslint-recommended'].rules, ...ts.configs.recommended.rules, - ...importX.configs.typescript.rules, + ...importX.flatConfigs.typescript.rules, 'no-undef': 'off', // redundant - TS will fail to compile with undefined vars 'no-redeclare': 'off', // redundant - TS will fail to compile with duplicate declarations '@typescript-eslint/no-empty-interface': [ diff --git a/packages/@wdio_electron-utils/src/index.ts b/packages/@wdio_electron-utils/src/index.ts index ea4c7b04..a9394bf1 100644 --- a/packages/@wdio_electron-utils/src/index.ts +++ b/packages/@wdio_electron-utils/src/index.ts @@ -8,7 +8,7 @@ import type { NormalizedReadResult } from 'read-package-up'; import log from './log.js'; import { APP_NAME_DETECTION_ERROR, BUILD_TOOL_DETECTION_ERROR } from './constants.js'; -import { +import type { AppBuildInfo, BuilderArch, BuilderConfig, diff --git a/packages/wdio-electron-service/src/index.ts b/packages/wdio-electron-service/src/index.ts index bd904569..e96e40d6 100644 --- a/packages/wdio-electron-service/src/index.ts +++ b/packages/wdio-electron-service/src/index.ts @@ -11,4 +11,3 @@ export default ElectronWorkerService; export const browser: WebdriverIO.Browser = wdioBrowser; export const startElectron: (opts: ElectronServiceOptions) => Promise<WebdriverIO.Browser> = initSession; -export * from '@wdio/electron-types'; diff --git a/packages/wdio-electron-service/src/service.ts b/packages/wdio-electron-service/src/service.ts index 51e7cdd2..e20fea92 100644 --- a/packages/wdio-electron-service/src/service.ts +++ b/packages/wdio-electron-service/src/service.ts @@ -1,4 +1,5 @@ import type { Capabilities, Services } from '@wdio/types'; +import type { AbstractFn, BrowserExtension, ElectronServiceOptions, ExecuteOpts } from '@wdio/electron-types'; import log from '@wdio/electron-utils/log'; import mockStore from './mockStore.js'; @@ -10,7 +11,6 @@ import { isMockFunction } from './commands/isMockFunction.js'; import { resetAllMocks } from './commands/resetAllMocks.js'; import { restoreAllMocks } from './commands/restoreAllMocks.js'; import { mockAll } from './commands/mockAll.js'; -import type { AbstractFn, BrowserExtension, ElectronServiceOptions, ExecuteOpts } from './index.js'; const waitUntilWindowAvailable = async (browser: WebdriverIO.Browser) => await browser.waitUntil(async () => { From a3ad311e28f5746e461d13e0d7de484c57681496 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 00:03:26 +0100 Subject: [PATCH 06/52] chore: reorder imports --- packages/wdio-electron-service/src/service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/wdio-electron-service/src/service.ts b/packages/wdio-electron-service/src/service.ts index e20fea92..34203154 100644 --- a/packages/wdio-electron-service/src/service.ts +++ b/packages/wdio-electron-service/src/service.ts @@ -1,7 +1,7 @@ -import type { Capabilities, Services } from '@wdio/types'; +import log from '@wdio/electron-utils/log'; import type { AbstractFn, BrowserExtension, ElectronServiceOptions, ExecuteOpts } from '@wdio/electron-types'; +import type { Capabilities, Services } from '@wdio/types'; -import log from '@wdio/electron-utils/log'; import mockStore from './mockStore.js'; import { CUSTOM_CAPABILITY_NAME } from './constants.js'; import { execute } from './commands/execute.js'; From f3d866cd1d60a894cbf61f035d11da412c024750 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 15:21:55 +0100 Subject: [PATCH 07/52] test(e2e): add JS specs --- e2e/js/api.spec.js | 748 +++++++++++++++++++++++++++++++++++++ e2e/js/application.spec.js | 18 + e2e/js/dom.spec.js | 35 ++ e2e/js/interaction.spec.js | 62 +++ e2e/package.json | 6 +- e2e/wdio.conf.js | 43 +++ e2e/wdio.no-binary.conf.js | 43 +++ 7 files changed, 953 insertions(+), 2 deletions(-) create mode 100644 e2e/js/api.spec.js create mode 100644 e2e/js/application.spec.js create mode 100644 e2e/js/dom.spec.js create mode 100644 e2e/js/interaction.spec.js create mode 100644 e2e/wdio.conf.js create mode 100644 e2e/wdio.no-binary.conf.js diff --git a/e2e/js/api.spec.js b/e2e/js/api.spec.js new file mode 100644 index 00000000..648fbc03 --- /dev/null +++ b/e2e/js/api.spec.js @@ -0,0 +1,748 @@ +import { expect } from '@wdio/globals'; +import { browser } from 'wdio-electron-service'; + +const { name: pkgAppName, version: pkgAppVersion } = globalThis.packageJson; + +describe('mock', () => { + it('should mock an electron API function', async () => { + const mockShowOpenDialog = await browser.electron.mock('dialog', 'showOpenDialog'); + await browser.electron.execute(async (electron) => { + await electron.dialog.showOpenDialog({ + title: 'my dialog', + properties: ['openFile', 'openDirectory'], + }); + return electron.dialog.showOpenDialog.mock.calls; + }); + + expect(mockShowOpenDialog).toHaveBeenCalledTimes(1); + expect(mockShowOpenDialog).toHaveBeenCalledWith({ + title: 'my dialog', + properties: ['openFile', 'openDirectory'], + }); + }); + + it('should mock a synchronous electron API function', async () => { + const mockShowOpenDialogSync = await browser.electron.mock('dialog', 'showOpenDialogSync'); + await browser.electron.execute((electron) => + electron.dialog.showOpenDialogSync({ + title: 'my dialog', + properties: ['openFile', 'openDirectory'], + }), + ); + + expect(mockShowOpenDialogSync).toHaveBeenCalledTimes(1); + expect(mockShowOpenDialogSync).toHaveBeenCalledWith({ + title: 'my dialog', + properties: ['openFile', 'openDirectory'], + }); + }); +}); + +describe('mockAll', () => { + it('should mock all functions on an API', async () => { + const mockedDialog = await browser.electron.mockAll('dialog'); + await browser.electron.execute( + async (electron) => + await electron.dialog.showOpenDialog({ + title: 'my dialog', + }), + ); + await browser.electron.execute((electron) => + electron.dialog.showOpenDialogSync({ + title: 'my dialog', + }), + ); + + expect(mockedDialog.showOpenDialog).toHaveBeenCalledTimes(1); + expect(mockedDialog.showOpenDialog).toHaveBeenCalledWith({ + title: 'my dialog', + }); + expect(mockedDialog.showOpenDialogSync).toHaveBeenCalledTimes(1); + expect(mockedDialog.showOpenDialogSync).toHaveBeenCalledWith({ + title: 'my dialog', + }); + }); +}); + +describe('clearAllMocks', () => { + it('should clear existing mocks', async () => { + const mockSetName = await browser.electron.mock('app', 'setName'); + const mockWriteText = await browser.electron.mock('clipboard', 'writeText'); + + await browser.electron.execute((electron) => electron.app.setName('new app name')); + await browser.electron.execute((electron) => electron.clipboard.writeText('text to be written')); + + await browser.electron.clearAllMocks(); + + expect(mockSetName.mock.calls).toStrictEqual([]); + expect(mockSetName.mock.invocationCallOrder).toStrictEqual([]); + expect(mockSetName.mock.lastCall).toBeUndefined(); + expect(mockSetName.mock.results).toStrictEqual([]); + + expect(mockWriteText.mock.calls).toStrictEqual([]); + expect(mockWriteText.mock.invocationCallOrder).toStrictEqual([]); + expect(mockWriteText.mock.lastCall).toBeUndefined(); + expect(mockWriteText.mock.results).toStrictEqual([]); + }); + + it('should clear existing mocks on an API', async () => { + const mockSetName = await browser.electron.mock('app', 'setName'); + const mockWriteText = await browser.electron.mock('clipboard', 'writeText'); + + await browser.electron.execute((electron) => electron.app.setName('new app name')); + await browser.electron.execute((electron) => electron.clipboard.writeText('text to be written')); + + await browser.electron.clearAllMocks('app'); + + expect(mockSetName.mock.calls).toStrictEqual([]); + expect(mockSetName.mock.invocationCallOrder).toStrictEqual([]); + expect(mockSetName.mock.lastCall).toBeUndefined(); + expect(mockSetName.mock.results).toStrictEqual([]); + + expect(mockWriteText.mock.calls).toStrictEqual([['text to be written']]); + expect(mockWriteText.mock.invocationCallOrder).toStrictEqual([expect.any(Number)]); + expect(mockWriteText.mock.lastCall).toStrictEqual(['text to be written']); + expect(mockWriteText.mock.results).toStrictEqual([{ type: 'return', value: undefined }]); + }); + + it('should not reset existing mocks', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + const mockReadText = await browser.electron.mock('clipboard', 'readText'); + await mockGetName.mockReturnValue('mocked appName'); + await mockReadText.mockReturnValue('mocked clipboardText'); + + await browser.electron.clearAllMocks(); + + const appName = await browser.electron.execute((electron) => electron.app.getName()); + const clipboardText = await browser.electron.execute((electron) => electron.clipboard.readText()); + expect(appName).toBe('mocked appName'); + expect(clipboardText).toBe('mocked clipboardText'); + }); + + it('should not reset existing mocks on an API', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + const mockReadText = await browser.electron.mock('clipboard', 'readText'); + await mockGetName.mockReturnValue('mocked appName'); + await mockReadText.mockReturnValue('mocked clipboardText'); + + await browser.electron.clearAllMocks('app'); + + const appName = await browser.electron.execute((electron) => electron.app.getName()); + const clipboardText = await browser.electron.execute((electron) => electron.clipboard.readText()); + expect(appName).toBe('mocked appName'); + expect(clipboardText).toBe('mocked clipboardText'); + }); +}); + +describe('resetAllMocks', () => { + it('should clear existing mocks', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + const mockReadText = await browser.electron.mock('clipboard', 'readText'); + await mockGetName.mockReturnValue('mocked appName'); + await mockReadText.mockReturnValue('mocked clipboardText'); + + await browser.electron.execute((electron) => electron.app.getName()); + await browser.electron.execute((electron) => electron.clipboard.readText()); + + await browser.electron.resetAllMocks(); + + expect(mockGetName.mock.calls).toStrictEqual([]); + expect(mockGetName.mock.invocationCallOrder).toStrictEqual([]); + expect(mockGetName.mock.lastCall).toBeUndefined(); + expect(mockGetName.mock.results).toStrictEqual([]); + + expect(mockReadText.mock.calls).toStrictEqual([]); + expect(mockReadText.mock.invocationCallOrder).toStrictEqual([]); + expect(mockReadText.mock.lastCall).toBeUndefined(); + expect(mockReadText.mock.results).toStrictEqual([]); + }); + + it('should clear existing mocks on an API', async () => { + const mockSetName = await browser.electron.mock('app', 'setName'); + const mockWriteText = await browser.electron.mock('clipboard', 'writeText'); + + await browser.electron.execute((electron) => electron.app.setName('new app name')); + await browser.electron.execute((electron) => electron.clipboard.writeText('text to be written')); + + await browser.electron.resetAllMocks('app'); + + expect(mockSetName.mock.calls).toStrictEqual([]); + expect(mockSetName.mock.invocationCallOrder).toStrictEqual([]); + expect(mockSetName.mock.lastCall).toBeUndefined(); + expect(mockSetName.mock.results).toStrictEqual([]); + + expect(mockWriteText.mock.calls).toStrictEqual([['text to be written']]); + expect(mockWriteText.mock.invocationCallOrder).toStrictEqual([expect.any(Number)]); + expect(mockWriteText.mock.lastCall).toStrictEqual(['text to be written']); + expect(mockWriteText.mock.results).toStrictEqual([{ type: 'return', value: undefined }]); + }); + + it('should reset existing mocks', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + const mockReadText = await browser.electron.mock('clipboard', 'readText'); + await mockGetName.mockReturnValue('mocked appName'); + await mockReadText.mockReturnValue('mocked clipboardText'); + + await browser.electron.resetAllMocks(); + + const appName = await browser.electron.execute((electron) => electron.app.getName()); + const clipboardText = await browser.electron.execute((electron) => electron.clipboard.readText()); + expect(appName).toBeUndefined(); + expect(clipboardText).toBeUndefined(); + }); + + it('should reset existing mocks on an API', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + const mockReadText = await browser.electron.mock('clipboard', 'readText'); + await mockGetName.mockReturnValue('mocked appName'); + await mockReadText.mockReturnValue('mocked clipboardText'); + + await browser.electron.resetAllMocks('app'); + + const appName = await browser.electron.execute((electron) => electron.app.getName()); + const clipboardText = await browser.electron.execute((electron) => electron.clipboard.readText()); + expect(appName).toBeUndefined(); + expect(clipboardText).toBe('mocked clipboardText'); + }); +}); + +describe('restoreAllMocks', () => { + beforeEach(async () => { + await browser.electron.execute((electron) => { + electron.clipboard.clear(); + electron.clipboard.writeText('some real clipboard text'); + }); + }); + + it('should restore existing mocks', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + const mockReadText = await browser.electron.mock('clipboard', 'readText'); + await mockGetName.mockReturnValue('mocked appName'); + await mockReadText.mockReturnValue('mocked clipboardText'); + + await browser.electron.restoreAllMocks(); + + const appName = await browser.electron.execute((electron) => electron.app.getName()); + const clipboardText = await browser.electron.execute((electron) => electron.clipboard.readText()); + expect(appName).toBe(pkgAppName); + expect(clipboardText).toBe('some real clipboard text'); + }); + + it('should restore existing mocks on an API', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + const mockReadText = await browser.electron.mock('clipboard', 'readText'); + await mockGetName.mockReturnValue('mocked appName'); + await mockReadText.mockReturnValue('mocked clipboardText'); + + await browser.electron.restoreAllMocks('app'); + + const appName = await browser.electron.execute((electron) => electron.app.getName()); + const clipboardText = await browser.electron.execute((electron) => electron.clipboard.readText()); + expect(appName).toBe(pkgAppName); + expect(clipboardText).toBe('mocked clipboardText'); + }); +}); + +describe('isMockFunction', () => { + it('should return true when provided with an electron mock', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + + expect(browser.electron.isMockFunction(mockGetName)).toBe(true); + }); + + it('should return false when provided with a function', async () => { + expect(browser.electron.isMockFunction(() => {})).toBe(false); + }); + + it('should return false when provided with a vitest mock', async () => { + // We have to dynamic import `@vitest/spy` due to it being an ESM only module + const spy = await import('@vitest/spy'); + expect(browser.electron.isMockFunction(spy.fn())).toBe(false); + }); +}); + +describe('execute', () => { + it('should execute an arbitrary function in the electron main process', async () => { + expect( + await browser.electron.execute( + (electron, a, b, c) => { + const version = electron.app.getVersion(); + return [version, a + b + c]; + }, + 1, + 2, + 3, + ), + ).toEqual([pkgAppVersion, 6]); + }); + + it('should execute a string-based function in the electron main process', async () => { + await expect(browser.electron.execute('return 1 + 2 + 3')).resolves.toEqual(6); + }); + + it('should handle executing a function which declares a function', async () => { + expect( + await browser.execute(() => { + function newFunc() { + return 'boom!'; + } + return newFunc(); + }), + ).toEqual('boom!'); + }); + + it('should handle executing a function which declares a fat arrow function', async () => { + expect( + await browser.execute(() => { + const newFunc = () => 'boom!'; + return newFunc(); + }), + ).toEqual('boom!'); + }); +}); + +describe('mock object functionality', () => { + describe('mockImplementation', () => { + it('should use the specified implementation for an existing mock', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + let callsCount = 0; + await mockGetName.mockImplementation(() => { + // callsCount is not accessible in the electron context so we need to guard it + if (typeof callsCount !== 'undefined') { + callsCount++; + } + + return 'mocked value'; + }); + const result = await browser.electron.execute(async (electron) => await electron.app.getName()); + + expect(callsCount).toBe(1); + expect(result).toBe('mocked value'); + }); + }); + + describe('mockImplementationOnce', () => { + it('should use the specified implementation for an existing mock once', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + + await mockGetName.mockImplementation(() => 'default mocked name'); + await mockGetName.mockImplementationOnce(() => 'first mocked name'); + await mockGetName.mockImplementationOnce(() => 'second mocked name'); + await mockGetName.mockImplementationOnce(() => 'third mocked name'); + + let name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBe('first mocked name'); + name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBe('second mocked name'); + name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBe('third mocked name'); + name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBe('default mocked name'); + name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBe('default mocked name'); + }); + }); + + describe('mockReturnValue', () => { + it('should return the specified value from an existing mock', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + await mockGetName.mockReturnValue('This is a mock'); + + const electronName = await browser.electron.execute((electron) => electron.app.getName()); + + expect(electronName).toBe('This is a mock'); + }); + }); + + describe('mockReturnValueOnce', () => { + it('should return the specified value from an existing mock once', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + + await mockGetName.mockReturnValue('default mocked name'); + await mockGetName.mockReturnValueOnce('first mocked name'); + await mockGetName.mockReturnValueOnce('second mocked name'); + await mockGetName.mockReturnValueOnce('third mocked name'); + + let name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBe('first mocked name'); + name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBe('second mocked name'); + name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBe('third mocked name'); + name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBe('default mocked name'); + name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBe('default mocked name'); + }); + }); + + describe('mockResolvedValue', () => { + it('should resolve with the specified value from an existing mock', async () => { + const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); + await mockGetFileIcon.mockResolvedValue('This is a mock'); + + const fileIcon = await browser.electron.execute( + async (electron) => await electron.app.getFileIcon('/path/to/icon'), + ); + + expect(fileIcon).toBe('This is a mock'); + }); + }); + + describe('mockResolvedValueOnce', () => { + it('should resolve with the specified value from an existing mock once', async () => { + const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); + + await mockGetFileIcon.mockResolvedValue('default mocked icon'); + await mockGetFileIcon.mockResolvedValueOnce('first mocked icon'); + await mockGetFileIcon.mockResolvedValueOnce('second mocked icon'); + await mockGetFileIcon.mockResolvedValueOnce('third mocked icon'); + + let fileIcon = await browser.electron.execute( + async (electron) => await electron.app.getFileIcon('/path/to/icon'), + ); + expect(fileIcon).toBe('first mocked icon'); + fileIcon = await browser.electron.execute(async (electron) => await electron.app.getFileIcon('/path/to/icon')); + expect(fileIcon).toBe('second mocked icon'); + fileIcon = await browser.electron.execute(async (electron) => await electron.app.getFileIcon('/path/to/icon')); + expect(fileIcon).toBe('third mocked icon'); + fileIcon = await browser.electron.execute(async (electron) => await electron.app.getFileIcon('/path/to/icon')); + expect(fileIcon).toBe('default mocked icon'); + fileIcon = await browser.electron.execute(async (electron) => await electron.app.getFileIcon('/path/to/icon')); + expect(fileIcon).toBe('default mocked icon'); + }); + }); + + describe('mockRejectedValue', () => { + it('should reject with the specified value from an existing mock', async () => { + const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); + await mockGetFileIcon.mockRejectedValue('This is a mock error'); + + const fileIconError = await browser.electron.execute(async (electron) => { + try { + await electron.app.getFileIcon('/path/to/icon'); + } catch (e) { + return e; + } + }); + + expect(fileIconError).toBe('This is a mock error'); + }); + }); + + describe('mockRejectedValueOnce', () => { + it('should reject with the specified value from an existing mock once', async () => { + const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); + + await mockGetFileIcon.mockRejectedValue('default mocked icon error'); + await mockGetFileIcon.mockRejectedValueOnce('first mocked icon error'); + await mockGetFileIcon.mockRejectedValueOnce('second mocked icon error'); + await mockGetFileIcon.mockRejectedValueOnce('third mocked icon error'); + + const getFileIcon = async () => + await browser.electron.execute(async (electron) => { + try { + await electron.app.getFileIcon('/path/to/icon'); + } catch (e) { + return e; + } + }); + + let fileIcon = await getFileIcon(); + expect(fileIcon).toBe('first mocked icon error'); + fileIcon = await getFileIcon(); + expect(fileIcon).toBe('second mocked icon error'); + fileIcon = await getFileIcon(); + expect(fileIcon).toBe('third mocked icon error'); + fileIcon = await getFileIcon(); + expect(fileIcon).toBe('default mocked icon error'); + fileIcon = await getFileIcon(); + expect(fileIcon).toBe('default mocked icon error'); + }); + }); + + describe('mockClear', () => { + it('should clear an existing mock', async () => { + const mockShowOpenDialog = await browser.electron.mock('dialog', 'showOpenDialog'); + await mockShowOpenDialog.mockReturnValue('mocked name'); + + await browser.electron.execute((electron) => electron.dialog.showOpenDialog({})); + await browser.electron.execute((electron) => + electron.dialog.showOpenDialog({ + title: 'my dialog', + }), + ); + await browser.electron.execute((electron) => + electron.dialog.showOpenDialog({ + title: 'another dialog', + }), + ); + + await mockShowOpenDialog.mockClear(); + + expect(mockShowOpenDialog.mock.calls).toStrictEqual([]); + expect(mockShowOpenDialog.mock.invocationCallOrder).toStrictEqual([]); + expect(mockShowOpenDialog.mock.lastCall).toBeUndefined(); + expect(mockShowOpenDialog.mock.results).toStrictEqual([]); + }); + }); + + describe('mockReset', () => { + it('should reset the implementation of an existing mock', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + await mockGetName.mockReturnValue('mocked name'); + + await mockGetName.mockReset(); + + const name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBeUndefined(); + }); + + it('should reset mockReturnValueOnce implementations of an existing mock', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + await mockGetName.mockReturnValueOnce('first mocked name'); + await mockGetName.mockReturnValueOnce('second mocked name'); + await mockGetName.mockReturnValueOnce('third mocked name'); + + await mockGetName.mockReset(); + + const name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBeUndefined(); + }); + + it('should reset mockImplementationOnce implementations of an existing mock', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + await mockGetName.mockImplementationOnce(() => 'first mocked name'); + await mockGetName.mockImplementationOnce(() => 'second mocked name'); + await mockGetName.mockImplementationOnce(() => 'third mocked name'); + + await mockGetName.mockReset(); + + const name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBeUndefined(); + }); + + it('should clear the history of an existing mock', async () => { + const mockShowOpenDialog = await browser.electron.mock('dialog', 'showOpenDialog'); + await mockShowOpenDialog.mockReturnValue('mocked name'); + + await browser.electron.execute((electron) => electron.dialog.showOpenDialog({})); + await browser.electron.execute((electron) => + electron.dialog.showOpenDialog({ + title: 'my dialog', + }), + ); + await browser.electron.execute((electron) => + electron.dialog.showOpenDialog({ + title: 'another dialog', + }), + ); + + await mockShowOpenDialog.mockReset(); + + expect(mockShowOpenDialog.mock.calls).toStrictEqual([]); + expect(mockShowOpenDialog.mock.invocationCallOrder).toStrictEqual([]); + expect(mockShowOpenDialog.mock.lastCall).toBeUndefined(); + expect(mockShowOpenDialog.mock.results).toStrictEqual([]); + }); + }); + + describe('mockRestore', () => { + it('should restore an existing mock', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + await mockGetName.mockReturnValue('mocked name'); + + let name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBe('mocked name'); + + await mockGetName.mockRestore(); + + name = await browser.electron.execute((electron) => electron.app.getName()); + expect(name).toBe(pkgAppName); + }); + }); + + describe('getMockName', () => { + it('should retrieve the mock name', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + + expect(mockGetName.getMockName()).toBe('electron.app.getName'); + }); + }); + + describe('mockName', () => { + it('should set the mock name', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + mockGetName.mockName('my first mock'); + + expect(mockGetName.getMockName()).toBe('my first mock'); + }); + }); + + describe('getMockImplementation', () => { + it('should retrieve the mock implementation', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + await mockGetName.mockImplementation(() => 'mocked name'); + const mockImpl = mockGetName.getMockImplementation(); + + expect(mockImpl()).toBe('mocked name'); + }); + + it('should retrieve an empty mock implementation', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + const mockImpl = mockGetName.getMockImplementation(); + + expect(mockImpl()).toBeUndefined(); + }); + }); + + describe('mockReturnThis', () => { + it('should allow chaining', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + const mockGetVersion = await browser.electron.mock('app', 'getVersion'); + await mockGetName.mockReturnThis(); + await browser.electron.execute((electron) => electron.app.getName().getVersion()); + + expect(mockGetVersion).toHaveBeenCalled(); + }); + }); + + describe('withImplementation', () => { + it('should temporarily override mock implementation', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + await mockGetName.mockImplementation(() => 'default mock name'); + await mockGetName.mockImplementationOnce(() => 'first mock name'); + await mockGetName.mockImplementationOnce(() => 'second mock name'); + const withImplementationResult = await mockGetName.withImplementation( + () => 'temporary mock name', + (electron) => electron.app.getName(), + ); + + expect(withImplementationResult).toBe('temporary mock name'); + const firstName = await browser.electron.execute((electron) => electron.app.getName()); + expect(firstName).toBe('first mock name'); + const secondName = await browser.electron.execute((electron) => electron.app.getName()); + expect(secondName).toBe('second mock name'); + const thirdName = await browser.electron.execute((electron) => electron.app.getName()); + expect(thirdName).toBe('default mock name'); + }); + + it('should handle promises', async () => { + const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); + await mockGetFileIcon.mockResolvedValue('default mock icon'); + await mockGetFileIcon.mockResolvedValueOnce('first mock icon'); + await mockGetFileIcon.mockResolvedValueOnce('second mock icon'); + const withImplementationResult = await mockGetFileIcon.withImplementation( + () => Promise.resolve('temporary mock icon'), + async (electron) => await electron.app.getFileIcon('/path/to/icon'), + ); + + expect(withImplementationResult).toBe('temporary mock icon'); + const firstIcon = await browser.electron.execute((electron) => electron.app.getFileIcon('/path/to/icon')); + expect(firstIcon).toBe('first mock icon'); + const secondIcon = await browser.electron.execute((electron) => electron.app.getFileIcon('/path/to/icon')); + expect(secondIcon).toBe('second mock icon'); + const thirdIcon = await browser.electron.execute((electron) => electron.app.getFileIcon('/path/to/icon')); + expect(thirdIcon).toBe('default mock icon'); + }); + }); + + describe('mock.calls', () => { + it('should return the calls of the mock execution', async () => { + const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); + + await browser.electron.execute((electron) => electron.app.getFileIcon('/path/to/icon')); + await browser.electron.execute((electron) => + electron.app.getFileIcon('/path/to/another/icon', { size: 'small' }), + ); + + expect(mockGetFileIcon.mock.calls).toStrictEqual([ + ['/path/to/icon'], // first call + ['/path/to/another/icon', { size: 'small' }], // second call + ]); + }); + + it('should return an empty array when the mock was never invoked', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + + expect(mockGetName.mock.calls).toStrictEqual([]); + }); + }); + + describe('mock.lastCall', () => { + it('should return the last call of the mock execution', async () => { + const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); + + await browser.electron.execute((electron) => electron.app.getFileIcon('/path/to/icon')); + expect(mockGetFileIcon.mock.lastCall).toStrictEqual(['/path/to/icon']); + await browser.electron.execute((electron) => + electron.app.getFileIcon('/path/to/another/icon', { size: 'small' }), + ); + expect(mockGetFileIcon.mock.lastCall).toStrictEqual(['/path/to/another/icon', { size: 'small' }]); + await browser.electron.execute((electron) => + electron.app.getFileIcon('/path/to/a/massive/icon', { size: 'large' }), + ); + expect(mockGetFileIcon.mock.lastCall).toStrictEqual(['/path/to/a/massive/icon', { size: 'large' }]); + }); + + it('should return undefined when the mock was never invoked', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + + expect(mockGetName.mock.lastCall).toBeUndefined(); + }); + }); + + describe('mock.results', () => { + it('should return the results of the mock execution', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + + // TODO: why does `mockReturnValueOnce` not work for returning 'result' here? + await mockGetName.mockImplementationOnce(() => 'result'); + await mockGetName.mockImplementation(() => { + throw new Error('thrown error'); + }); + + await expect(browser.electron.execute((electron) => electron.app.getName())).resolves.toBe('result'); + await expect(browser.electron.execute((electron) => electron.app.getName())).rejects.toThrow('thrown error'); + + expect(mockGetName.mock.results).toStrictEqual([ + { + type: 'return', + value: 'result', + }, + { + type: 'throw', + value: new Error('thrown error'), + }, + ]); + }); + + it('should return an empty array when the mock was never invoked', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + + expect(mockGetName.mock.results).toStrictEqual([]); + }); + }); + + describe('mock.invocationCallOrder', () => { + it('should return the order of execution', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + const mockGetVersion = await browser.electron.mock('app', 'getVersion'); + + await browser.electron.execute((electron) => electron.app.getName()); + await browser.electron.execute((electron) => electron.app.getVersion()); + await browser.electron.execute((electron) => electron.app.getName()); + + const firstInvocationIndex = mockGetName.mock.invocationCallOrder[0]; + + expect(mockGetName.mock.invocationCallOrder).toStrictEqual([firstInvocationIndex, firstInvocationIndex + 2]); + expect(mockGetVersion.mock.invocationCallOrder).toStrictEqual([firstInvocationIndex + 1]); + }); + + it('should return an empty array when the mock was never invoked', async () => { + const mockGetName = await browser.electron.mock('app', 'getName'); + + expect(mockGetName.mock.invocationCallOrder).toStrictEqual([]); + }); + }); +}); diff --git a/e2e/js/application.spec.js b/e2e/js/application.spec.js new file mode 100644 index 00000000..2112f44b --- /dev/null +++ b/e2e/js/application.spec.js @@ -0,0 +1,18 @@ +import { expect } from '@wdio/globals'; +import { browser } from 'wdio-electron-service'; + +describe('application loading', () => { + describe('App', () => { + it('should launch the application', async () => { + const title = await browser.getTitle(); + expect(title).toEqual('Test'); + }); + + it('should pass args through to the launched application', async () => { + // custom args are set in the wdio.conf.js file as they need to be set before WDIO starts + const argv = await browser.electron.execute(() => process.argv); + expect(argv).toContain('--foo'); + expect(argv).toContain('--bar=baz'); + }); + }); +}); diff --git a/e2e/js/dom.spec.js b/e2e/js/dom.spec.js new file mode 100644 index 00000000..876e65e7 --- /dev/null +++ b/e2e/js/dom.spec.js @@ -0,0 +1,35 @@ +import { expect } from '@wdio/globals'; +import { browser } from 'wdio-electron-service'; +import { setupBrowser } from '@testing-library/webdriverio'; + +describe('application loading', () => { + let screen; + + before(() => { + screen = setupBrowser(browser); + }); + + describe('DOM', () => { + it('should determine when an element is in the document', async () => { + await expect(await screen.getByTestId('disabled-checkbox')).toExist(); + }); + + it('should determine when an element is not in the document', async () => { + await expect(await screen.queryByTestId('not-there')).not.toExist(); + }); + + it('should determine when an element is visible', async () => { + await expect(await screen.getByTestId('disabled-checkbox')).toBeDisplayed(); + }); + + it('should determine when an element is not visible', async () => { + await expect(await screen.getByTestId('hidden-textarea')).not.toBeDisplayed(); + }); + }); + + describe('WDIO Matchers', () => { + it('should be able to use WebdriverIO matchers', async () => { + await expect(await $('#disabled-checkbox')).toBePresent(); + }); + }); +}); diff --git a/e2e/js/interaction.spec.js b/e2e/js/interaction.spec.js new file mode 100644 index 00000000..1eecbe60 --- /dev/null +++ b/e2e/js/interaction.spec.js @@ -0,0 +1,62 @@ +import { expect } from '@wdio/globals'; +import { browser } from 'wdio-electron-service'; +import { setupBrowser } from '@testing-library/webdriverio'; + +describe('application loading', () => { + let screen; + + before(() => { + screen = setupBrowser(browser); + }); + + describe('keyboard input', () => { + it('should detect keyboard input', async () => { + await browser.keys(['y', 'o']); + expect(await (await screen.getByTestId('keypress-count')).getText()).toEqual('YO'); + }); + }); + + describe('click events', () => { + describe('when the make larger button is clicked', () => { + it('should increase the window height and width by 10 pixels', async () => { + let bounds = await browser.electron.execute((electron) => { + const browserWindow = electron.BrowserWindow.getAllWindows()[0]; + return browserWindow.getBounds(); + }); + expect(bounds.width).toEqual(200); + expect(bounds.height).toEqual(300); + let biggerClickCount = await browser.$('.click-count .bigger').getText(); + expect(biggerClickCount).toEqual('0'); + const elem = await browser.$('.make-bigger'); + await elem.click(); + biggerClickCount = await browser.$('.click-count .bigger').getText(); + expect(biggerClickCount).toEqual('1'); + bounds = await browser.electron.execute((electron) => { + const browserWindow = electron.BrowserWindow.getAllWindows()[0]; + return browserWindow.getBounds(); + }); + expect(bounds.width).toEqual(210); + expect(bounds.height).toEqual(310); + }); + }); + + describe('when the make smaller button is clicked', () => { + it('should decrease the window height and width by 10 pixels', async () => { + let bounds = await browser.electron.execute((electron) => { + const browserWindow = electron.BrowserWindow.getAllWindows()[0]; + return browserWindow.getBounds(); + }); + expect(bounds.width).toEqual(210); + expect(bounds.height).toEqual(310); + const elem = await browser.$('.make-smaller'); + await elem.click(); + bounds = await browser.electron.execute((electron) => { + const browserWindow = electron.BrowserWindow.getAllWindows()[0]; + return browserWindow.getBounds(); + }); + expect(bounds.width).toEqual(200); + expect(bounds.height).toEqual(300); + }); + }); + }); +}); diff --git a/e2e/package.json b/e2e/package.json index 1ee34093..71827545 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -17,11 +17,13 @@ "test:e2e-mac-universal:builder-esm": "cross-env EXAMPLE_DIR=builder-esm pnpm run exec", "test:e2e:no-binary-cjs": "cross-env DEBUG=wdio-electron-service EXAMPLE_DIR=no-binary-cjs pnpm run exec-no-binary", "test:e2e:no-binary-esm": "cross-env DEBUG=wdio-electron-service EXAMPLE_DIR=no-binary-esm pnpm run exec-no-binary", - "exec": "pnpm run exec:main && pnpm run exec:multiremote && pnpm run exec:standalone", - "exec-no-binary": "pnpm run exec-no-binary:main && pnpm run exec-no-binary:multiremote && pnpm run exec-no-binary:standalone", + "exec": "pnpm run exec:main && pnpm run exec:js && pnpm run exec:multiremote && pnpm run exec:standalone", + "exec-no-binary": "pnpm run exec-no-binary:main && pnpm run exec-no-binary:js && pnpm run exec-no-binary:multiremote && pnpm run exec-no-binary:standalone", + "exec-no-binary:js": "xvfb-maybe wdio run ./wdio.no-binary.conf.js", "exec-no-binary:main": "xvfb-maybe wdio run ./wdio.no-binary.conf.ts", "exec-no-binary:multiremote": "xvfb-maybe wdio run ./wdio.no-binary.multiremote.conf.ts", "exec-no-binary:standalone": "xvfb-maybe tsx ./standalone/api.no-binary.spec.ts", + "exec:js": "xvfb-maybe wdio run ./wdio.conf.js", "exec:main": "xvfb-maybe wdio run ./wdio.conf.ts", "exec:multiremote": "xvfb-maybe wdio run ./wdio.multiremote.conf.ts", "exec:standalone": "xvfb-maybe tsx ./standalone/api.spec.ts", diff --git a/e2e/wdio.conf.js b/e2e/wdio.conf.js new file mode 100644 index 00000000..2a6d99b8 --- /dev/null +++ b/e2e/wdio.conf.js @@ -0,0 +1,43 @@ +import url from 'node:url'; +import path from 'node:path'; +import fs from 'node:fs'; + +import { getAppBuildInfo, getBinaryPath, getElectronVersion } from '@wdio/electron-utils'; + +const exampleDir = process.env.EXAMPLE_DIR || 'forge-esm'; +const __dirname = path.dirname(url.fileURLToPath(import.meta.url)); +const packageJsonPath = path.join(__dirname, '..', 'apps', exampleDir, 'package.json'); +const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, { encoding: 'utf-8' })); +const pkg = { packageJson, path: packageJsonPath }; +const electronVersion = getElectronVersion(pkg); +const appBuildInfo = await getAppBuildInfo(pkg); +const appBinaryPath = await getBinaryPath(packageJsonPath, appBuildInfo, electronVersion); + +globalThis.packageJson = packageJson; +process.env.TEST = 'true'; + +export const config = { + services: ['electron'], + capabilities: [ + { + 'browserName': 'electron', + 'wdio:electronServiceOptions': { + appBinaryPath, + appArgs: ['foo', 'bar=baz'], + restoreMocks: true, + }, + }, + ], + waitforTimeout: 5000, + connectionRetryCount: 10, + connectionRetryTimeout: 30000, + logLevel: 'debug', + runner: 'local', + outputDir: `wdio-logs-${exampleDir}`, + specs: [`./js/*.spec.js`], + framework: 'mocha', + mochaOpts: { + ui: 'bdd', + timeout: 30000, + }, +}; diff --git a/e2e/wdio.no-binary.conf.js b/e2e/wdio.no-binary.conf.js new file mode 100644 index 00000000..8f3cbaec --- /dev/null +++ b/e2e/wdio.no-binary.conf.js @@ -0,0 +1,43 @@ +import url from 'node:url'; +import path from 'node:path'; +import fs from 'node:fs'; + +import { getElectronVersion } from '@wdio/electron-utils'; + +const exampleDir = process.env.EXAMPLE_DIR || 'forge-esm'; +const __dirname = path.dirname(url.fileURLToPath(import.meta.url)); +const packageJsonPath = path.join(__dirname, '..', 'apps', exampleDir, 'package.json'); +const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, { encoding: 'utf-8' })); +const appEntryPoint = path.join(__dirname, '..', 'apps', exampleDir, 'dist', 'main.bundle.js'); + +globalThis.packageJson = { + name: 'Electron', + version: getElectronVersion({ packageJson, path: packageJsonPath }), +}; +process.env.TEST = 'true'; + +export const config = { + services: ['electron'], + capabilities: [ + { + 'browserName': 'electron', + 'wdio:electronServiceOptions': { + appEntryPoint, + appArgs: ['foo', 'bar=baz'], + restoreMocks: true, + }, + }, + ], + waitforTimeout: 5000, + connectionRetryCount: 10, + connectionRetryTimeout: 30000, + logLevel: 'debug', + runner: 'local', + outputDir: `wdio-logs-${exampleDir}`, + specs: [`./js/*.spec.js`], + framework: 'mocha', + mochaOpts: { + ui: 'bdd', + timeout: 30000, + }, +}; From 4e5b240bf7ce6ffb1b6020a11c39be78b871e264 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 15:23:06 +0100 Subject: [PATCH 08/52] debug: run js specs first --- e2e/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/package.json b/e2e/package.json index 71827545..77472a8c 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -17,8 +17,8 @@ "test:e2e-mac-universal:builder-esm": "cross-env EXAMPLE_DIR=builder-esm pnpm run exec", "test:e2e:no-binary-cjs": "cross-env DEBUG=wdio-electron-service EXAMPLE_DIR=no-binary-cjs pnpm run exec-no-binary", "test:e2e:no-binary-esm": "cross-env DEBUG=wdio-electron-service EXAMPLE_DIR=no-binary-esm pnpm run exec-no-binary", - "exec": "pnpm run exec:main && pnpm run exec:js && pnpm run exec:multiremote && pnpm run exec:standalone", - "exec-no-binary": "pnpm run exec-no-binary:main && pnpm run exec-no-binary:js && pnpm run exec-no-binary:multiremote && pnpm run exec-no-binary:standalone", + "exec": "pnpm run exec:js && pnpm run exec:main && pnpm run exec:multiremote && pnpm run exec:standalone", + "exec-no-binary": "pnpm run exec-no-binary:js && pnpm run exec-no-binary:main && pnpm run exec-no-binary:multiremote && pnpm run exec-no-binary:standalone", "exec-no-binary:js": "xvfb-maybe wdio run ./wdio.no-binary.conf.js", "exec-no-binary:main": "xvfb-maybe wdio run ./wdio.no-binary.conf.ts", "exec-no-binary:multiremote": "xvfb-maybe wdio run ./wdio.no-binary.multiremote.conf.ts", From 81fbdd79a00b579af39ae6f55f3eea4f705610c7 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 15:28:35 +0100 Subject: [PATCH 09/52] chore(linting): exempt JS E2E files for now --- eslint.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eslint.config.js b/eslint.config.js index 581aa40d..6763b43b 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -14,7 +14,7 @@ export default [ }, // Ignored files { - ignores: ['**/*.config.js'], + ignores: ['**/*.config.js', 'e2e/**/*.js'], }, // All files { From 3d616fb44af9dbee29d0799e757ce7bec069daac Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 17:36:24 +0100 Subject: [PATCH 10/52] fix: update type imports --- packages/wdio-electron-service/test/launcher.spec.ts | 2 +- packages/wdio-electron-service/test/mock.spec.ts | 2 +- packages/wdio-electron-service/test/mockStore.spec.ts | 2 +- packages/wdio-electron-service/test/service.spec.ts | 9 ++++++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/wdio-electron-service/test/launcher.spec.ts b/packages/wdio-electron-service/test/launcher.spec.ts index 18d334b5..c32bcfbd 100644 --- a/packages/wdio-electron-service/test/launcher.spec.ts +++ b/packages/wdio-electron-service/test/launcher.spec.ts @@ -3,11 +3,11 @@ import path from 'node:path'; import { describe, beforeEach, afterEach, it, expect, vi, Mock } from 'vitest'; import nock from 'nock'; import type { Capabilities, Options } from '@wdio/types'; +import type { ElectronServiceOptions } from '@wdio/electron-types'; import ElectronLaunchService from '../src/launcher.js'; import { getAppBuildInfo, getBinaryPath } from '@wdio/electron-utils'; import { mockProcessProperty, revertProcessProperty } from './helpers.js'; -import type { ElectronServiceOptions } from '../src/index.js'; let LaunchService: typeof ElectronLaunchService; let instance: ElectronLaunchService | undefined; diff --git a/packages/wdio-electron-service/test/mock.spec.ts b/packages/wdio-electron-service/test/mock.spec.ts index c50fafad..1e63b563 100644 --- a/packages/wdio-electron-service/test/mock.spec.ts +++ b/packages/wdio-electron-service/test/mock.spec.ts @@ -3,7 +3,7 @@ import { isAsyncFunction } from 'node:util/types'; import { describe, it, expect, beforeEach, vi, Mock } from 'vitest'; import { createMock } from '../src/mock.js'; -import { ElectronInterface, ElectronType } from '@wdio/electron-types'; +import type { ElectronInterface, ElectronType } from '@wdio/electron-types'; let mockFn: Mock; diff --git a/packages/wdio-electron-service/test/mockStore.spec.ts b/packages/wdio-electron-service/test/mockStore.spec.ts index 6a7c68be..823d8a62 100644 --- a/packages/wdio-electron-service/test/mockStore.spec.ts +++ b/packages/wdio-electron-service/test/mockStore.spec.ts @@ -1,6 +1,6 @@ import { vi, describe, beforeEach, afterEach, it, expect } from 'vitest'; import { ElectronServiceMockStore } from '../src/mockStore.js'; -import { ElectronMock } from '@wdio/electron-types'; +import type { ElectronMock } from '@wdio/electron-types'; let mockStore: ElectronServiceMockStore; diff --git a/packages/wdio-electron-service/test/service.spec.ts b/packages/wdio-electron-service/test/service.spec.ts index 5aa33ec6..82bd3952 100644 --- a/packages/wdio-electron-service/test/service.spec.ts +++ b/packages/wdio-electron-service/test/service.spec.ts @@ -1,12 +1,12 @@ import { vi, describe, beforeEach, it, expect, Mock } from 'vitest'; +import type { BrowserExtension, ElectronMock } from '@wdio/electron-types'; import { mockProcessProperty } from './helpers.js'; import { clearAllMocks } from '../src/commands/clearAllMocks.js'; import { resetAllMocks } from '../src/commands/resetAllMocks.js'; import { restoreAllMocks } from '../src/commands/restoreAllMocks.js'; -import type { BrowserExtension, ElectronMock } from '../src/index.js'; -import type ElectronWorkerService from '../src/service.js'; import mockStore from '../src/mockStore.js'; +import type ElectronWorkerService from '../src/service.js'; let WorkerService: typeof ElectronWorkerService; let instance: ElectronWorkerService | undefined; @@ -41,7 +41,10 @@ describe('before', () => { requestedCapabilities: { 'wdio:electronServiceOptions': {} }, waitUntil: vi.fn().mockResolvedValue(true), }, - firefox: { requestedCapabilities: {}, waitUntil: vi.fn().mockResolvedValue(true) }, + firefox: { + requestedCapabilities: {}, + waitUntil: vi.fn().mockResolvedValue(true), + }, }, isMultiremote: true, instances: ['electron', 'firefox'], From 72c4535ddcbc1da8cae83e1e9d53533d61ef84e6 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 17:38:06 +0100 Subject: [PATCH 11/52] fix: add `__name` to preload --- packages/wdio-electron-service/src/preload.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/wdio-electron-service/src/preload.ts b/packages/wdio-electron-service/src/preload.ts index 681921a7..12c25e16 100644 --- a/packages/wdio-electron-service/src/preload.ts +++ b/packages/wdio-electron-service/src/preload.ts @@ -6,3 +6,5 @@ const invoke = async (channel: Channel, ...data: unknown[]) => ipcRenderer.invok contextBridge.exposeInMainWorld('wdioElectron', { execute: (script: string, args: unknown[]) => invoke(Channel.Execute, script, args), }); + +contextBridge.exposeInMainWorld('__name', (func: (...args: unknown[]) => unknown) => func); From d30314c97608412cd0d99a1a25d5346e89180aab Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 19:23:12 +0100 Subject: [PATCH 12/52] refactor: convert TS files using rollup --- e2e/api.spec.ts | 4 +- e2e/js/api.spec.js | 748 ------------------------------------- e2e/js/application.spec.js | 18 - e2e/js/dom.spec.js | 35 -- e2e/js/interaction.spec.js | 62 --- e2e/package.json | 5 +- e2e/rollup.config.js | 10 + pnpm-lock.yaml | 28 ++ turbo.json | 23 +- 9 files changed, 57 insertions(+), 876 deletions(-) delete mode 100644 e2e/js/api.spec.js delete mode 100644 e2e/js/application.spec.js delete mode 100644 e2e/js/dom.spec.js delete mode 100644 e2e/js/interaction.spec.js create mode 100644 e2e/rollup.config.js diff --git a/e2e/api.spec.ts b/e2e/api.spec.ts index cd31ee96..7955d270 100644 --- a/e2e/api.spec.ts +++ b/e2e/api.spec.ts @@ -421,7 +421,7 @@ describe('mock object functionality', () => { const fileIconError = await browser.electron.execute(async (electron) => { try { - await electron.app.getFileIcon('/path/to/icon'); + return await electron.app.getFileIcon('/path/to/icon'); } catch (e) { return e; } @@ -443,7 +443,7 @@ describe('mock object functionality', () => { const getFileIcon = async () => await browser.electron.execute(async (electron) => { try { - await electron.app.getFileIcon('/path/to/icon'); + return await electron.app.getFileIcon('/path/to/icon'); } catch (e) { return e; } diff --git a/e2e/js/api.spec.js b/e2e/js/api.spec.js deleted file mode 100644 index 648fbc03..00000000 --- a/e2e/js/api.spec.js +++ /dev/null @@ -1,748 +0,0 @@ -import { expect } from '@wdio/globals'; -import { browser } from 'wdio-electron-service'; - -const { name: pkgAppName, version: pkgAppVersion } = globalThis.packageJson; - -describe('mock', () => { - it('should mock an electron API function', async () => { - const mockShowOpenDialog = await browser.electron.mock('dialog', 'showOpenDialog'); - await browser.electron.execute(async (electron) => { - await electron.dialog.showOpenDialog({ - title: 'my dialog', - properties: ['openFile', 'openDirectory'], - }); - return electron.dialog.showOpenDialog.mock.calls; - }); - - expect(mockShowOpenDialog).toHaveBeenCalledTimes(1); - expect(mockShowOpenDialog).toHaveBeenCalledWith({ - title: 'my dialog', - properties: ['openFile', 'openDirectory'], - }); - }); - - it('should mock a synchronous electron API function', async () => { - const mockShowOpenDialogSync = await browser.electron.mock('dialog', 'showOpenDialogSync'); - await browser.electron.execute((electron) => - electron.dialog.showOpenDialogSync({ - title: 'my dialog', - properties: ['openFile', 'openDirectory'], - }), - ); - - expect(mockShowOpenDialogSync).toHaveBeenCalledTimes(1); - expect(mockShowOpenDialogSync).toHaveBeenCalledWith({ - title: 'my dialog', - properties: ['openFile', 'openDirectory'], - }); - }); -}); - -describe('mockAll', () => { - it('should mock all functions on an API', async () => { - const mockedDialog = await browser.electron.mockAll('dialog'); - await browser.electron.execute( - async (electron) => - await electron.dialog.showOpenDialog({ - title: 'my dialog', - }), - ); - await browser.electron.execute((electron) => - electron.dialog.showOpenDialogSync({ - title: 'my dialog', - }), - ); - - expect(mockedDialog.showOpenDialog).toHaveBeenCalledTimes(1); - expect(mockedDialog.showOpenDialog).toHaveBeenCalledWith({ - title: 'my dialog', - }); - expect(mockedDialog.showOpenDialogSync).toHaveBeenCalledTimes(1); - expect(mockedDialog.showOpenDialogSync).toHaveBeenCalledWith({ - title: 'my dialog', - }); - }); -}); - -describe('clearAllMocks', () => { - it('should clear existing mocks', async () => { - const mockSetName = await browser.electron.mock('app', 'setName'); - const mockWriteText = await browser.electron.mock('clipboard', 'writeText'); - - await browser.electron.execute((electron) => electron.app.setName('new app name')); - await browser.electron.execute((electron) => electron.clipboard.writeText('text to be written')); - - await browser.electron.clearAllMocks(); - - expect(mockSetName.mock.calls).toStrictEqual([]); - expect(mockSetName.mock.invocationCallOrder).toStrictEqual([]); - expect(mockSetName.mock.lastCall).toBeUndefined(); - expect(mockSetName.mock.results).toStrictEqual([]); - - expect(mockWriteText.mock.calls).toStrictEqual([]); - expect(mockWriteText.mock.invocationCallOrder).toStrictEqual([]); - expect(mockWriteText.mock.lastCall).toBeUndefined(); - expect(mockWriteText.mock.results).toStrictEqual([]); - }); - - it('should clear existing mocks on an API', async () => { - const mockSetName = await browser.electron.mock('app', 'setName'); - const mockWriteText = await browser.electron.mock('clipboard', 'writeText'); - - await browser.electron.execute((electron) => electron.app.setName('new app name')); - await browser.electron.execute((electron) => electron.clipboard.writeText('text to be written')); - - await browser.electron.clearAllMocks('app'); - - expect(mockSetName.mock.calls).toStrictEqual([]); - expect(mockSetName.mock.invocationCallOrder).toStrictEqual([]); - expect(mockSetName.mock.lastCall).toBeUndefined(); - expect(mockSetName.mock.results).toStrictEqual([]); - - expect(mockWriteText.mock.calls).toStrictEqual([['text to be written']]); - expect(mockWriteText.mock.invocationCallOrder).toStrictEqual([expect.any(Number)]); - expect(mockWriteText.mock.lastCall).toStrictEqual(['text to be written']); - expect(mockWriteText.mock.results).toStrictEqual([{ type: 'return', value: undefined }]); - }); - - it('should not reset existing mocks', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - const mockReadText = await browser.electron.mock('clipboard', 'readText'); - await mockGetName.mockReturnValue('mocked appName'); - await mockReadText.mockReturnValue('mocked clipboardText'); - - await browser.electron.clearAllMocks(); - - const appName = await browser.electron.execute((electron) => electron.app.getName()); - const clipboardText = await browser.electron.execute((electron) => electron.clipboard.readText()); - expect(appName).toBe('mocked appName'); - expect(clipboardText).toBe('mocked clipboardText'); - }); - - it('should not reset existing mocks on an API', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - const mockReadText = await browser.electron.mock('clipboard', 'readText'); - await mockGetName.mockReturnValue('mocked appName'); - await mockReadText.mockReturnValue('mocked clipboardText'); - - await browser.electron.clearAllMocks('app'); - - const appName = await browser.electron.execute((electron) => electron.app.getName()); - const clipboardText = await browser.electron.execute((electron) => electron.clipboard.readText()); - expect(appName).toBe('mocked appName'); - expect(clipboardText).toBe('mocked clipboardText'); - }); -}); - -describe('resetAllMocks', () => { - it('should clear existing mocks', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - const mockReadText = await browser.electron.mock('clipboard', 'readText'); - await mockGetName.mockReturnValue('mocked appName'); - await mockReadText.mockReturnValue('mocked clipboardText'); - - await browser.electron.execute((electron) => electron.app.getName()); - await browser.electron.execute((electron) => electron.clipboard.readText()); - - await browser.electron.resetAllMocks(); - - expect(mockGetName.mock.calls).toStrictEqual([]); - expect(mockGetName.mock.invocationCallOrder).toStrictEqual([]); - expect(mockGetName.mock.lastCall).toBeUndefined(); - expect(mockGetName.mock.results).toStrictEqual([]); - - expect(mockReadText.mock.calls).toStrictEqual([]); - expect(mockReadText.mock.invocationCallOrder).toStrictEqual([]); - expect(mockReadText.mock.lastCall).toBeUndefined(); - expect(mockReadText.mock.results).toStrictEqual([]); - }); - - it('should clear existing mocks on an API', async () => { - const mockSetName = await browser.electron.mock('app', 'setName'); - const mockWriteText = await browser.electron.mock('clipboard', 'writeText'); - - await browser.electron.execute((electron) => electron.app.setName('new app name')); - await browser.electron.execute((electron) => electron.clipboard.writeText('text to be written')); - - await browser.electron.resetAllMocks('app'); - - expect(mockSetName.mock.calls).toStrictEqual([]); - expect(mockSetName.mock.invocationCallOrder).toStrictEqual([]); - expect(mockSetName.mock.lastCall).toBeUndefined(); - expect(mockSetName.mock.results).toStrictEqual([]); - - expect(mockWriteText.mock.calls).toStrictEqual([['text to be written']]); - expect(mockWriteText.mock.invocationCallOrder).toStrictEqual([expect.any(Number)]); - expect(mockWriteText.mock.lastCall).toStrictEqual(['text to be written']); - expect(mockWriteText.mock.results).toStrictEqual([{ type: 'return', value: undefined }]); - }); - - it('should reset existing mocks', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - const mockReadText = await browser.electron.mock('clipboard', 'readText'); - await mockGetName.mockReturnValue('mocked appName'); - await mockReadText.mockReturnValue('mocked clipboardText'); - - await browser.electron.resetAllMocks(); - - const appName = await browser.electron.execute((electron) => electron.app.getName()); - const clipboardText = await browser.electron.execute((electron) => electron.clipboard.readText()); - expect(appName).toBeUndefined(); - expect(clipboardText).toBeUndefined(); - }); - - it('should reset existing mocks on an API', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - const mockReadText = await browser.electron.mock('clipboard', 'readText'); - await mockGetName.mockReturnValue('mocked appName'); - await mockReadText.mockReturnValue('mocked clipboardText'); - - await browser.electron.resetAllMocks('app'); - - const appName = await browser.electron.execute((electron) => electron.app.getName()); - const clipboardText = await browser.electron.execute((electron) => electron.clipboard.readText()); - expect(appName).toBeUndefined(); - expect(clipboardText).toBe('mocked clipboardText'); - }); -}); - -describe('restoreAllMocks', () => { - beforeEach(async () => { - await browser.electron.execute((electron) => { - electron.clipboard.clear(); - electron.clipboard.writeText('some real clipboard text'); - }); - }); - - it('should restore existing mocks', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - const mockReadText = await browser.electron.mock('clipboard', 'readText'); - await mockGetName.mockReturnValue('mocked appName'); - await mockReadText.mockReturnValue('mocked clipboardText'); - - await browser.electron.restoreAllMocks(); - - const appName = await browser.electron.execute((electron) => electron.app.getName()); - const clipboardText = await browser.electron.execute((electron) => electron.clipboard.readText()); - expect(appName).toBe(pkgAppName); - expect(clipboardText).toBe('some real clipboard text'); - }); - - it('should restore existing mocks on an API', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - const mockReadText = await browser.electron.mock('clipboard', 'readText'); - await mockGetName.mockReturnValue('mocked appName'); - await mockReadText.mockReturnValue('mocked clipboardText'); - - await browser.electron.restoreAllMocks('app'); - - const appName = await browser.electron.execute((electron) => electron.app.getName()); - const clipboardText = await browser.electron.execute((electron) => electron.clipboard.readText()); - expect(appName).toBe(pkgAppName); - expect(clipboardText).toBe('mocked clipboardText'); - }); -}); - -describe('isMockFunction', () => { - it('should return true when provided with an electron mock', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - - expect(browser.electron.isMockFunction(mockGetName)).toBe(true); - }); - - it('should return false when provided with a function', async () => { - expect(browser.electron.isMockFunction(() => {})).toBe(false); - }); - - it('should return false when provided with a vitest mock', async () => { - // We have to dynamic import `@vitest/spy` due to it being an ESM only module - const spy = await import('@vitest/spy'); - expect(browser.electron.isMockFunction(spy.fn())).toBe(false); - }); -}); - -describe('execute', () => { - it('should execute an arbitrary function in the electron main process', async () => { - expect( - await browser.electron.execute( - (electron, a, b, c) => { - const version = electron.app.getVersion(); - return [version, a + b + c]; - }, - 1, - 2, - 3, - ), - ).toEqual([pkgAppVersion, 6]); - }); - - it('should execute a string-based function in the electron main process', async () => { - await expect(browser.electron.execute('return 1 + 2 + 3')).resolves.toEqual(6); - }); - - it('should handle executing a function which declares a function', async () => { - expect( - await browser.execute(() => { - function newFunc() { - return 'boom!'; - } - return newFunc(); - }), - ).toEqual('boom!'); - }); - - it('should handle executing a function which declares a fat arrow function', async () => { - expect( - await browser.execute(() => { - const newFunc = () => 'boom!'; - return newFunc(); - }), - ).toEqual('boom!'); - }); -}); - -describe('mock object functionality', () => { - describe('mockImplementation', () => { - it('should use the specified implementation for an existing mock', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - let callsCount = 0; - await mockGetName.mockImplementation(() => { - // callsCount is not accessible in the electron context so we need to guard it - if (typeof callsCount !== 'undefined') { - callsCount++; - } - - return 'mocked value'; - }); - const result = await browser.electron.execute(async (electron) => await electron.app.getName()); - - expect(callsCount).toBe(1); - expect(result).toBe('mocked value'); - }); - }); - - describe('mockImplementationOnce', () => { - it('should use the specified implementation for an existing mock once', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - - await mockGetName.mockImplementation(() => 'default mocked name'); - await mockGetName.mockImplementationOnce(() => 'first mocked name'); - await mockGetName.mockImplementationOnce(() => 'second mocked name'); - await mockGetName.mockImplementationOnce(() => 'third mocked name'); - - let name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBe('first mocked name'); - name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBe('second mocked name'); - name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBe('third mocked name'); - name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBe('default mocked name'); - name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBe('default mocked name'); - }); - }); - - describe('mockReturnValue', () => { - it('should return the specified value from an existing mock', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - await mockGetName.mockReturnValue('This is a mock'); - - const electronName = await browser.electron.execute((electron) => electron.app.getName()); - - expect(electronName).toBe('This is a mock'); - }); - }); - - describe('mockReturnValueOnce', () => { - it('should return the specified value from an existing mock once', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - - await mockGetName.mockReturnValue('default mocked name'); - await mockGetName.mockReturnValueOnce('first mocked name'); - await mockGetName.mockReturnValueOnce('second mocked name'); - await mockGetName.mockReturnValueOnce('third mocked name'); - - let name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBe('first mocked name'); - name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBe('second mocked name'); - name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBe('third mocked name'); - name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBe('default mocked name'); - name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBe('default mocked name'); - }); - }); - - describe('mockResolvedValue', () => { - it('should resolve with the specified value from an existing mock', async () => { - const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); - await mockGetFileIcon.mockResolvedValue('This is a mock'); - - const fileIcon = await browser.electron.execute( - async (electron) => await electron.app.getFileIcon('/path/to/icon'), - ); - - expect(fileIcon).toBe('This is a mock'); - }); - }); - - describe('mockResolvedValueOnce', () => { - it('should resolve with the specified value from an existing mock once', async () => { - const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); - - await mockGetFileIcon.mockResolvedValue('default mocked icon'); - await mockGetFileIcon.mockResolvedValueOnce('first mocked icon'); - await mockGetFileIcon.mockResolvedValueOnce('second mocked icon'); - await mockGetFileIcon.mockResolvedValueOnce('third mocked icon'); - - let fileIcon = await browser.electron.execute( - async (electron) => await electron.app.getFileIcon('/path/to/icon'), - ); - expect(fileIcon).toBe('first mocked icon'); - fileIcon = await browser.electron.execute(async (electron) => await electron.app.getFileIcon('/path/to/icon')); - expect(fileIcon).toBe('second mocked icon'); - fileIcon = await browser.electron.execute(async (electron) => await electron.app.getFileIcon('/path/to/icon')); - expect(fileIcon).toBe('third mocked icon'); - fileIcon = await browser.electron.execute(async (electron) => await electron.app.getFileIcon('/path/to/icon')); - expect(fileIcon).toBe('default mocked icon'); - fileIcon = await browser.electron.execute(async (electron) => await electron.app.getFileIcon('/path/to/icon')); - expect(fileIcon).toBe('default mocked icon'); - }); - }); - - describe('mockRejectedValue', () => { - it('should reject with the specified value from an existing mock', async () => { - const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); - await mockGetFileIcon.mockRejectedValue('This is a mock error'); - - const fileIconError = await browser.electron.execute(async (electron) => { - try { - await electron.app.getFileIcon('/path/to/icon'); - } catch (e) { - return e; - } - }); - - expect(fileIconError).toBe('This is a mock error'); - }); - }); - - describe('mockRejectedValueOnce', () => { - it('should reject with the specified value from an existing mock once', async () => { - const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); - - await mockGetFileIcon.mockRejectedValue('default mocked icon error'); - await mockGetFileIcon.mockRejectedValueOnce('first mocked icon error'); - await mockGetFileIcon.mockRejectedValueOnce('second mocked icon error'); - await mockGetFileIcon.mockRejectedValueOnce('third mocked icon error'); - - const getFileIcon = async () => - await browser.electron.execute(async (electron) => { - try { - await electron.app.getFileIcon('/path/to/icon'); - } catch (e) { - return e; - } - }); - - let fileIcon = await getFileIcon(); - expect(fileIcon).toBe('first mocked icon error'); - fileIcon = await getFileIcon(); - expect(fileIcon).toBe('second mocked icon error'); - fileIcon = await getFileIcon(); - expect(fileIcon).toBe('third mocked icon error'); - fileIcon = await getFileIcon(); - expect(fileIcon).toBe('default mocked icon error'); - fileIcon = await getFileIcon(); - expect(fileIcon).toBe('default mocked icon error'); - }); - }); - - describe('mockClear', () => { - it('should clear an existing mock', async () => { - const mockShowOpenDialog = await browser.electron.mock('dialog', 'showOpenDialog'); - await mockShowOpenDialog.mockReturnValue('mocked name'); - - await browser.electron.execute((electron) => electron.dialog.showOpenDialog({})); - await browser.electron.execute((electron) => - electron.dialog.showOpenDialog({ - title: 'my dialog', - }), - ); - await browser.electron.execute((electron) => - electron.dialog.showOpenDialog({ - title: 'another dialog', - }), - ); - - await mockShowOpenDialog.mockClear(); - - expect(mockShowOpenDialog.mock.calls).toStrictEqual([]); - expect(mockShowOpenDialog.mock.invocationCallOrder).toStrictEqual([]); - expect(mockShowOpenDialog.mock.lastCall).toBeUndefined(); - expect(mockShowOpenDialog.mock.results).toStrictEqual([]); - }); - }); - - describe('mockReset', () => { - it('should reset the implementation of an existing mock', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - await mockGetName.mockReturnValue('mocked name'); - - await mockGetName.mockReset(); - - const name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBeUndefined(); - }); - - it('should reset mockReturnValueOnce implementations of an existing mock', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - await mockGetName.mockReturnValueOnce('first mocked name'); - await mockGetName.mockReturnValueOnce('second mocked name'); - await mockGetName.mockReturnValueOnce('third mocked name'); - - await mockGetName.mockReset(); - - const name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBeUndefined(); - }); - - it('should reset mockImplementationOnce implementations of an existing mock', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - await mockGetName.mockImplementationOnce(() => 'first mocked name'); - await mockGetName.mockImplementationOnce(() => 'second mocked name'); - await mockGetName.mockImplementationOnce(() => 'third mocked name'); - - await mockGetName.mockReset(); - - const name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBeUndefined(); - }); - - it('should clear the history of an existing mock', async () => { - const mockShowOpenDialog = await browser.electron.mock('dialog', 'showOpenDialog'); - await mockShowOpenDialog.mockReturnValue('mocked name'); - - await browser.electron.execute((electron) => electron.dialog.showOpenDialog({})); - await browser.electron.execute((electron) => - electron.dialog.showOpenDialog({ - title: 'my dialog', - }), - ); - await browser.electron.execute((electron) => - electron.dialog.showOpenDialog({ - title: 'another dialog', - }), - ); - - await mockShowOpenDialog.mockReset(); - - expect(mockShowOpenDialog.mock.calls).toStrictEqual([]); - expect(mockShowOpenDialog.mock.invocationCallOrder).toStrictEqual([]); - expect(mockShowOpenDialog.mock.lastCall).toBeUndefined(); - expect(mockShowOpenDialog.mock.results).toStrictEqual([]); - }); - }); - - describe('mockRestore', () => { - it('should restore an existing mock', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - await mockGetName.mockReturnValue('mocked name'); - - let name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBe('mocked name'); - - await mockGetName.mockRestore(); - - name = await browser.electron.execute((electron) => electron.app.getName()); - expect(name).toBe(pkgAppName); - }); - }); - - describe('getMockName', () => { - it('should retrieve the mock name', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - - expect(mockGetName.getMockName()).toBe('electron.app.getName'); - }); - }); - - describe('mockName', () => { - it('should set the mock name', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - mockGetName.mockName('my first mock'); - - expect(mockGetName.getMockName()).toBe('my first mock'); - }); - }); - - describe('getMockImplementation', () => { - it('should retrieve the mock implementation', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - await mockGetName.mockImplementation(() => 'mocked name'); - const mockImpl = mockGetName.getMockImplementation(); - - expect(mockImpl()).toBe('mocked name'); - }); - - it('should retrieve an empty mock implementation', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - const mockImpl = mockGetName.getMockImplementation(); - - expect(mockImpl()).toBeUndefined(); - }); - }); - - describe('mockReturnThis', () => { - it('should allow chaining', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - const mockGetVersion = await browser.electron.mock('app', 'getVersion'); - await mockGetName.mockReturnThis(); - await browser.electron.execute((electron) => electron.app.getName().getVersion()); - - expect(mockGetVersion).toHaveBeenCalled(); - }); - }); - - describe('withImplementation', () => { - it('should temporarily override mock implementation', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - await mockGetName.mockImplementation(() => 'default mock name'); - await mockGetName.mockImplementationOnce(() => 'first mock name'); - await mockGetName.mockImplementationOnce(() => 'second mock name'); - const withImplementationResult = await mockGetName.withImplementation( - () => 'temporary mock name', - (electron) => electron.app.getName(), - ); - - expect(withImplementationResult).toBe('temporary mock name'); - const firstName = await browser.electron.execute((electron) => electron.app.getName()); - expect(firstName).toBe('first mock name'); - const secondName = await browser.electron.execute((electron) => electron.app.getName()); - expect(secondName).toBe('second mock name'); - const thirdName = await browser.electron.execute((electron) => electron.app.getName()); - expect(thirdName).toBe('default mock name'); - }); - - it('should handle promises', async () => { - const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); - await mockGetFileIcon.mockResolvedValue('default mock icon'); - await mockGetFileIcon.mockResolvedValueOnce('first mock icon'); - await mockGetFileIcon.mockResolvedValueOnce('second mock icon'); - const withImplementationResult = await mockGetFileIcon.withImplementation( - () => Promise.resolve('temporary mock icon'), - async (electron) => await electron.app.getFileIcon('/path/to/icon'), - ); - - expect(withImplementationResult).toBe('temporary mock icon'); - const firstIcon = await browser.electron.execute((electron) => electron.app.getFileIcon('/path/to/icon')); - expect(firstIcon).toBe('first mock icon'); - const secondIcon = await browser.electron.execute((electron) => electron.app.getFileIcon('/path/to/icon')); - expect(secondIcon).toBe('second mock icon'); - const thirdIcon = await browser.electron.execute((electron) => electron.app.getFileIcon('/path/to/icon')); - expect(thirdIcon).toBe('default mock icon'); - }); - }); - - describe('mock.calls', () => { - it('should return the calls of the mock execution', async () => { - const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); - - await browser.electron.execute((electron) => electron.app.getFileIcon('/path/to/icon')); - await browser.electron.execute((electron) => - electron.app.getFileIcon('/path/to/another/icon', { size: 'small' }), - ); - - expect(mockGetFileIcon.mock.calls).toStrictEqual([ - ['/path/to/icon'], // first call - ['/path/to/another/icon', { size: 'small' }], // second call - ]); - }); - - it('should return an empty array when the mock was never invoked', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - - expect(mockGetName.mock.calls).toStrictEqual([]); - }); - }); - - describe('mock.lastCall', () => { - it('should return the last call of the mock execution', async () => { - const mockGetFileIcon = await browser.electron.mock('app', 'getFileIcon'); - - await browser.electron.execute((electron) => electron.app.getFileIcon('/path/to/icon')); - expect(mockGetFileIcon.mock.lastCall).toStrictEqual(['/path/to/icon']); - await browser.electron.execute((electron) => - electron.app.getFileIcon('/path/to/another/icon', { size: 'small' }), - ); - expect(mockGetFileIcon.mock.lastCall).toStrictEqual(['/path/to/another/icon', { size: 'small' }]); - await browser.electron.execute((electron) => - electron.app.getFileIcon('/path/to/a/massive/icon', { size: 'large' }), - ); - expect(mockGetFileIcon.mock.lastCall).toStrictEqual(['/path/to/a/massive/icon', { size: 'large' }]); - }); - - it('should return undefined when the mock was never invoked', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - - expect(mockGetName.mock.lastCall).toBeUndefined(); - }); - }); - - describe('mock.results', () => { - it('should return the results of the mock execution', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - - // TODO: why does `mockReturnValueOnce` not work for returning 'result' here? - await mockGetName.mockImplementationOnce(() => 'result'); - await mockGetName.mockImplementation(() => { - throw new Error('thrown error'); - }); - - await expect(browser.electron.execute((electron) => electron.app.getName())).resolves.toBe('result'); - await expect(browser.electron.execute((electron) => electron.app.getName())).rejects.toThrow('thrown error'); - - expect(mockGetName.mock.results).toStrictEqual([ - { - type: 'return', - value: 'result', - }, - { - type: 'throw', - value: new Error('thrown error'), - }, - ]); - }); - - it('should return an empty array when the mock was never invoked', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - - expect(mockGetName.mock.results).toStrictEqual([]); - }); - }); - - describe('mock.invocationCallOrder', () => { - it('should return the order of execution', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - const mockGetVersion = await browser.electron.mock('app', 'getVersion'); - - await browser.electron.execute((electron) => electron.app.getName()); - await browser.electron.execute((electron) => electron.app.getVersion()); - await browser.electron.execute((electron) => electron.app.getName()); - - const firstInvocationIndex = mockGetName.mock.invocationCallOrder[0]; - - expect(mockGetName.mock.invocationCallOrder).toStrictEqual([firstInvocationIndex, firstInvocationIndex + 2]); - expect(mockGetVersion.mock.invocationCallOrder).toStrictEqual([firstInvocationIndex + 1]); - }); - - it('should return an empty array when the mock was never invoked', async () => { - const mockGetName = await browser.electron.mock('app', 'getName'); - - expect(mockGetName.mock.invocationCallOrder).toStrictEqual([]); - }); - }); -}); diff --git a/e2e/js/application.spec.js b/e2e/js/application.spec.js deleted file mode 100644 index 2112f44b..00000000 --- a/e2e/js/application.spec.js +++ /dev/null @@ -1,18 +0,0 @@ -import { expect } from '@wdio/globals'; -import { browser } from 'wdio-electron-service'; - -describe('application loading', () => { - describe('App', () => { - it('should launch the application', async () => { - const title = await browser.getTitle(); - expect(title).toEqual('Test'); - }); - - it('should pass args through to the launched application', async () => { - // custom args are set in the wdio.conf.js file as they need to be set before WDIO starts - const argv = await browser.electron.execute(() => process.argv); - expect(argv).toContain('--foo'); - expect(argv).toContain('--bar=baz'); - }); - }); -}); diff --git a/e2e/js/dom.spec.js b/e2e/js/dom.spec.js deleted file mode 100644 index 876e65e7..00000000 --- a/e2e/js/dom.spec.js +++ /dev/null @@ -1,35 +0,0 @@ -import { expect } from '@wdio/globals'; -import { browser } from 'wdio-electron-service'; -import { setupBrowser } from '@testing-library/webdriverio'; - -describe('application loading', () => { - let screen; - - before(() => { - screen = setupBrowser(browser); - }); - - describe('DOM', () => { - it('should determine when an element is in the document', async () => { - await expect(await screen.getByTestId('disabled-checkbox')).toExist(); - }); - - it('should determine when an element is not in the document', async () => { - await expect(await screen.queryByTestId('not-there')).not.toExist(); - }); - - it('should determine when an element is visible', async () => { - await expect(await screen.getByTestId('disabled-checkbox')).toBeDisplayed(); - }); - - it('should determine when an element is not visible', async () => { - await expect(await screen.getByTestId('hidden-textarea')).not.toBeDisplayed(); - }); - }); - - describe('WDIO Matchers', () => { - it('should be able to use WebdriverIO matchers', async () => { - await expect(await $('#disabled-checkbox')).toBePresent(); - }); - }); -}); diff --git a/e2e/js/interaction.spec.js b/e2e/js/interaction.spec.js deleted file mode 100644 index 1eecbe60..00000000 --- a/e2e/js/interaction.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -import { expect } from '@wdio/globals'; -import { browser } from 'wdio-electron-service'; -import { setupBrowser } from '@testing-library/webdriverio'; - -describe('application loading', () => { - let screen; - - before(() => { - screen = setupBrowser(browser); - }); - - describe('keyboard input', () => { - it('should detect keyboard input', async () => { - await browser.keys(['y', 'o']); - expect(await (await screen.getByTestId('keypress-count')).getText()).toEqual('YO'); - }); - }); - - describe('click events', () => { - describe('when the make larger button is clicked', () => { - it('should increase the window height and width by 10 pixels', async () => { - let bounds = await browser.electron.execute((electron) => { - const browserWindow = electron.BrowserWindow.getAllWindows()[0]; - return browserWindow.getBounds(); - }); - expect(bounds.width).toEqual(200); - expect(bounds.height).toEqual(300); - let biggerClickCount = await browser.$('.click-count .bigger').getText(); - expect(biggerClickCount).toEqual('0'); - const elem = await browser.$('.make-bigger'); - await elem.click(); - biggerClickCount = await browser.$('.click-count .bigger').getText(); - expect(biggerClickCount).toEqual('1'); - bounds = await browser.electron.execute((electron) => { - const browserWindow = electron.BrowserWindow.getAllWindows()[0]; - return browserWindow.getBounds(); - }); - expect(bounds.width).toEqual(210); - expect(bounds.height).toEqual(310); - }); - }); - - describe('when the make smaller button is clicked', () => { - it('should decrease the window height and width by 10 pixels', async () => { - let bounds = await browser.electron.execute((electron) => { - const browserWindow = electron.BrowserWindow.getAllWindows()[0]; - return browserWindow.getBounds(); - }); - expect(bounds.width).toEqual(210); - expect(bounds.height).toEqual(310); - const elem = await browser.$('.make-smaller'); - await elem.click(); - bounds = await browser.electron.execute((electron) => { - const browserWindow = electron.BrowserWindow.getAllWindows()[0]; - return browserWindow.getBounds(); - }); - expect(bounds.width).toEqual(200); - expect(bounds.height).toEqual(300); - }); - }); - }); -}); diff --git a/e2e/package.json b/e2e/package.json index 77472a8c..bfdd38b6 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -5,7 +5,8 @@ "private": "true", "scripts": { "ci": "pnpm i && pnpm test", - "clean": "pnpm dlx shx rm -rf ./node_modules pnpm-lock.yaml ./wdio-logs* ./out", + "clean": "pnpm dlx shx rm -rf ./js ./node_modules pnpm-lock.yaml ./wdio-logs* ./out", + "init": "pnpm dlx shx mkdir -p ./js && rollup -c", "logs": "pnpm dlx shx cat ./wdio-logs*/*.log", "test:e2e:forge-cjs": "cross-env EXAMPLE_DIR=forge-cjs pnpm run exec", "test:e2e:forge-esm": "cross-env EXAMPLE_DIR=forge-esm pnpm run exec", @@ -44,6 +45,7 @@ }, "devDependencies": { "@electron-forge/cli": "^7.2.0", + "@rollup/plugin-typescript": "^11.1.6", "@types/mocha": "^10.0.6", "@types/node": "^20.16.1", "@vitest/spy": "^2.0.5", @@ -51,6 +53,7 @@ "global-jsdom": "^24.0.0", "jsdom": "^24.1.1", "read-package-up": "^11.0.0", + "rollup": "^4.21.2", "ts-loader": "^9.4.4", "typescript": "^5.5.4" } diff --git a/e2e/rollup.config.js b/e2e/rollup.config.js new file mode 100644 index 00000000..0faa3758 --- /dev/null +++ b/e2e/rollup.config.js @@ -0,0 +1,10 @@ +import typescript from '@rollup/plugin-typescript'; + +export default { + input: '*.spec.ts', + output: { + dir: 'js', + format: 'esm', + }, + plugins: [typescript()], +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 858cb58b..d512a46d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -465,6 +465,9 @@ importers: '@electron-forge/cli': specifier: ^7.2.0 version: 7.4.0(encoding@0.1.13) + '@rollup/plugin-typescript': + specifier: ^11.1.6 + version: 11.1.6(rollup@4.21.2)(tslib@2.7.0)(typescript@5.5.4) '@types/mocha': specifier: ^10.0.6 version: 10.0.7 @@ -486,6 +489,9 @@ importers: read-package-up: specifier: ^11.0.0 version: 11.0.0 + rollup: + specifier: ^4.21.2 + version: 4.21.2 ts-loader: specifier: ^9.4.4 version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) @@ -1379,6 +1385,19 @@ packages: rollup: optional: true + '@rollup/plugin-typescript@11.1.6': + resolution: {integrity: sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0||^4.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -6584,6 +6603,15 @@ snapshots: optionalDependencies: rollup: 4.21.2 + '@rollup/plugin-typescript@11.1.6(rollup@4.21.2)(tslib@2.7.0)(typescript@5.5.4)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + resolve: 1.22.8 + typescript: 5.5.4 + optionalDependencies: + rollup: 4.21.2 + tslib: 2.7.0 + '@rollup/pluginutils@5.1.0(rollup@4.21.2)': dependencies: '@types/estree': 1.0.5 diff --git a/turbo.json b/turbo.json index f9a960e0..5da2689e 100644 --- a/turbo.json +++ b/turbo.json @@ -20,43 +20,46 @@ "//#lint": { "inputs": ["**/*.{j,mj,cj,t}s"] }, + "@repo/e2e#init": { + "dependsOn": ["wdio-electron-service#build"] + }, "@repo/e2e#test:e2e:builder-cjs": { - "dependsOn": ["example-builder-cjs#build", "wdio-electron-service#build", "@repo/e2e#test:e2e:builder-esm"] + "dependsOn": ["example-builder-cjs#build", "@repo/e2e#init", "@repo/e2e#test:e2e:builder-esm"] }, "@repo/e2e#test:e2e:builder-esm": { - "dependsOn": ["example-builder-esm#build", "wdio-electron-service#build"] + "dependsOn": ["example-builder-esm#build", "@repo/e2e#init"] }, "@repo/e2e#test:e2e:forge-cjs": { - "dependsOn": ["example-forge-cjs#build", "wdio-electron-service#build", "@repo/e2e#test:e2e:forge-esm"] + "dependsOn": ["example-forge-cjs#build", "@repo/e2e#init", "@repo/e2e#test:e2e:forge-esm"] }, "@repo/e2e#test:e2e:forge-esm": { - "dependsOn": ["example-forge-esm#build", "wdio-electron-service#build"] + "dependsOn": ["example-forge-esm#build", "@repo/e2e#init"] }, "@repo/e2e#test:e2e:no-binary-cjs": { - "dependsOn": ["example-no-binary-cjs#build", "wdio-electron-service#build", "@repo/e2e#test:e2e:no-binary-esm"] + "dependsOn": ["example-no-binary-cjs#build", "@repo/e2e#init", "@repo/e2e#test:e2e:no-binary-esm"] }, "@repo/e2e#test:e2e:no-binary-esm": { - "dependsOn": ["example-no-binary-esm#build", "example-no-binary-cjs#build", "wdio-electron-service#build"] + "dependsOn": ["example-no-binary-esm#build", "example-no-binary-cjs#build", "@repo/e2e#init"] }, "@repo/e2e#test:e2e-mac-universal:forge-cjs": { "dependsOn": [ "example-forge-cjs#build:mac-universal", - "wdio-electron-service#build", + "@repo/e2e#init", "@repo/e2e#test:e2e-mac-universal:forge-esm" ] }, "@repo/e2e#test:e2e-mac-universal:forge-esm": { - "dependsOn": ["example-forge-esm#build:mac-universal", "wdio-electron-service#build"] + "dependsOn": ["example-forge-esm#build:mac-universal", "@repo/e2e#init"] }, "@repo/e2e#test:e2e-mac-universal:builder-cjs": { "dependsOn": [ "example-builder-cjs#build:mac-universal", - "wdio-electron-service#build", + "@repo/e2e#init", "@repo/e2e#test:e2e-mac-universal:builder-esm" ] }, "@repo/e2e#test:e2e-mac-universal:builder-esm": { - "dependsOn": ["example-builder-esm#build:mac-universal", "wdio-electron-service#build"] + "dependsOn": ["example-builder-esm#build:mac-universal", "@repo/e2e#init"] }, "@wdio/electron-types#build": { "dependsOn": ["//#lint", "//#format:check", "test:unit"], From d70ffccc9b7bce0d653d35f65fc9c34803d8252f Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 19:48:57 +0100 Subject: [PATCH 13/52] fix: update browser type --- packages/@wdio_electron-types/src/index.ts | 33 +++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/packages/@wdio_electron-types/src/index.ts b/packages/@wdio_electron-types/src/index.ts index 6c3c6d41..6f05556b 100644 --- a/packages/@wdio_electron-types/src/index.ts +++ b/packages/@wdio_electron-types/src/index.ts @@ -653,7 +653,37 @@ export interface ElectronMock<TArgs extends any[] = any, TReturns = any> extends (...args: TArgs): TReturns; } -export interface BrowserExtension { +type $ = ( + selector: any, +) => ChainablePromiseElementBase<Promise<WebdriverIO.Element>> | Promise<WebdriverIO.Element> | WebdriverIO.Element; +type $$ = ( + selector: any, +) => ChainablePromiseArrayBase<Promise<WebdriverIO.Element>> | Promise<WebdriverIO.Element[]> | WebdriverIO.Element[]; +type ChainablePromiseElementBase<T> = Promise<T> & { + $: $; +}; +type ChainablePromiseArrayBase<T> = Promise<T>; +type SelectorsBase = { + $: $; + $$: $$; +}; +type BaseWithExecute = { + execute<T>(script: string | ((...args: any[]) => T), ...args: any[]): Promise<T>; + execute<T>(script: string | ((...args: any[]) => T), ...args: any[]): T; + executeAsync(script: string | ((...args: any[]) => void), ...args: any[]): any; +}; +type ElementBase = SelectorsBase & { + parent: ElementBase | BaseWithExecute; +}; +type BrowserBase = SelectorsBase & { + addCommand<T extends boolean>( + queryName: string, + commandFn: (this: T extends true ? ElementBase : BrowserBase, ...args: any[]) => void, + isElementCommand?: T, + ): any; +}; + +export interface BrowserExtension extends BrowserBase { /** * Access the WebdriverIO Electron Service API. * @@ -674,6 +704,7 @@ declare global { namespace WebdriverIO { interface Browser extends BrowserExtension {} + interface Element extends ElementBase {} interface MultiRemoteBrowser extends BrowserExtension {} interface Capabilities { /** From 7ee90e80a63b0d6ac62346f2dabbbdc1648fc7dc Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 19:54:48 +0100 Subject: [PATCH 14/52] fix: await element --- e2e/interaction.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/interaction.spec.ts b/e2e/interaction.spec.ts index 1d6e7663..f70d02de 100644 --- a/e2e/interaction.spec.ts +++ b/e2e/interaction.spec.ts @@ -29,11 +29,11 @@ describe('application loading', () => { }; expect(bounds.width).toEqual(200); expect(bounds.height).toEqual(300); - let biggerClickCount = await browser.$('.click-count .bigger').getText(); + let biggerClickCount = await (await browser.$('.click-count .bigger')).getText(); expect(biggerClickCount).toEqual('0'); const elem = await browser.$('.make-bigger'); await elem.click(); - biggerClickCount = await browser.$('.click-count .bigger').getText(); + biggerClickCount = await (await browser.$('.click-count .bigger')).getText(); expect(biggerClickCount).toEqual('1'); bounds = (await browser.electron.execute((electron) => { const browserWindow = electron.BrowserWindow.getAllWindows()[0] as BrowserWindow; From 480073d0be80ab2b4b98decdb6c40ca6869c27ec Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 20:08:26 +0100 Subject: [PATCH 15/52] fix: update rollup conf --- e2e/rollup.config.js | 44 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/e2e/rollup.config.js b/e2e/rollup.config.js index 0faa3758..6e9a224d 100644 --- a/e2e/rollup.config.js +++ b/e2e/rollup.config.js @@ -1,10 +1,38 @@ import typescript from '@rollup/plugin-typescript'; -export default { - input: '*.spec.ts', - output: { - dir: 'js', - format: 'esm', - }, - plugins: [typescript()], -}; +const tsPlugin = typescript({ tsconfig: 'tsconfig.json' }); + +export default [ + { + input: 'api.spec.ts', + output: { + outDir: 'js', + format: 'esm', + }, + plugins: [tsPlugin], + }, + { + input: 'application.spec.ts', + output: { + dir: 'js', + format: 'esm', + }, + plugins: [tsPlugin], + }, + { + input: 'dom.spec.ts', + output: { + dir: 'js', + format: 'esm', + }, + plugins: [tsPlugin], + }, + { + input: 'interaction.spec.ts', + output: { + dir: 'js', + format: 'esm', + }, + plugins: [tsPlugin], + }, +]; From acdc2d23f8d304b89e99528e9a0c580eada9a883 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 20:15:03 +0100 Subject: [PATCH 16/52] fix: don't emit type declarations --- e2e/tsconfig.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json index 85fecd2d..b47aa2ab 100755 --- a/e2e/tsconfig.json +++ b/e2e/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.base.json", "compilerOptions": { + "declaration": false, + "declarationMap": false, "noEmit": true, "module": "NodeNext", "moduleResolution": "NodeNext", From 4d085c58b4e657cfdbec9503da157d6e9baae084 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 20:15:27 +0100 Subject: [PATCH 17/52] fix: correct config dir --- e2e/rollup.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/rollup.config.js b/e2e/rollup.config.js index 6e9a224d..58e4e49a 100644 --- a/e2e/rollup.config.js +++ b/e2e/rollup.config.js @@ -6,7 +6,7 @@ export default [ { input: 'api.spec.ts', output: { - outDir: 'js', + dir: 'js', format: 'esm', }, plugins: [tsPlugin], From 88dd05f119a8ca8e7cc3e44f1ceaa567f3fe4658 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 20:35:41 +0100 Subject: [PATCH 18/52] debug: remove `--only` --- package.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index d2ca13d3..da46a35f 100644 --- a/package.json +++ b/package.json @@ -10,12 +10,12 @@ "build": "turbo run build --filter=@wdio* --filter=wdio-electron-service --only", "ci": "turbo run lint format:check test:unit test:e2e:builder-cjs test:e2e:builder-esm test:e2e:forge-cjs test:e2e:forge-esm test:e2e:no-binary-cjs test:e2e:no-binary-esm", "ci-linux": "turbo run lint format:check test:unit test:e2e:builder-cjs test:e2e:builder-esm test:e2e:forge-cjs test:e2e:forge-esm test:e2e:no-binary-cjs test:e2e:no-binary-esm --concurrency=1", - "ci-mac:e2e:mac-universal": "turbo run build:mac-universal test:e2e-mac-universal:builder-cjs test:e2e-mac-universal:builder-esm test:e2e-mac-universal:forge-cjs test:e2e-mac-universal:forge-esm --only", - "ci-windows:e2e:builder-cjs": "turbo run build --filter=example-builder-cjs --only && turbo run test:e2e:builder-cjs --only", - "ci-windows:e2e:builder-esm": "turbo run build --filter=example-builder-esm --only && turbo run test:e2e:builder-esm --only", - "ci-windows:e2e:forge-cjs": "pnpm run init-forge:package && pnpm run init-forge:app-cjs && turbo run build --filter=example-forge-cjs --only && turbo run test:e2e:forge-cjs --only", - "ci-windows:e2e:forge-esm": "pnpm run init-forge:package && pnpm run init-forge:app-esm && turbo run build --filter=example-forge-esm --only && turbo run test:e2e:forge-esm --only", - "ci-windows:e2e:no-binary": "turbo run build --filter=example-no-binary* --only && turbo run test:e2e:no-binary-cjs test:e2e:no-binary-esm --only", + "ci-mac:e2e:mac-universal": "turbo run build:mac-universal test:e2e-mac-universal:builder-cjs test:e2e-mac-universal:builder-esm test:e2e-mac-universal:forge-cjs test:e2e-mac-universal:forge-esm", + "ci-windows:e2e:builder-cjs": "turbo run build --filter=example-builder-cjs --only && turbo run test:e2e:builder-cjs", + "ci-windows:e2e:builder-esm": "turbo run build --filter=example-builder-esm --only && turbo run test:e2e:builder-esm", + "ci-windows:e2e:forge-cjs": "pnpm run init-forge:package && pnpm run init-forge:app-cjs && turbo run build --filter=example-forge-cjs --only && turbo run test:e2e:forge-cjs", + "ci-windows:e2e:forge-esm": "pnpm run init-forge:package && pnpm run init-forge:app-esm && turbo run build --filter=example-forge-esm --only && turbo run test:e2e:forge-esm", + "ci-windows:e2e:no-binary": "turbo run build --filter=example-no-binary* --only && turbo run test:e2e:no-binary-cjs test:e2e:no-binary-esm", "ci-windows:units": "turbo run lint format:check test:unit", "ci:e2e:clean": "turbo run clean --filter=example*", "ci:e2e:logs": "turbo run logs --filter=@repo/e2e", From ceb08fe3a9676f98e9c7e83448f5e45781d61c23 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 21:11:33 +0100 Subject: [PATCH 19/52] fix: limit execution of dependent tasks --- e2e/package.json | 2 +- package.json | 12 ++++++------ turbo.json | 22 +++++++++++----------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/e2e/package.json b/e2e/package.json index bfdd38b6..98c81938 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -6,7 +6,7 @@ "scripts": { "ci": "pnpm i && pnpm test", "clean": "pnpm dlx shx rm -rf ./js ./node_modules pnpm-lock.yaml ./wdio-logs* ./out", - "init": "pnpm dlx shx mkdir -p ./js && rollup -c", + "init-e2es": "pnpm dlx shx mkdir -p ./js && rollup -c", "logs": "pnpm dlx shx cat ./wdio-logs*/*.log", "test:e2e:forge-cjs": "cross-env EXAMPLE_DIR=forge-cjs pnpm run exec", "test:e2e:forge-esm": "cross-env EXAMPLE_DIR=forge-esm pnpm run exec", diff --git a/package.json b/package.json index da46a35f..26a099d7 100644 --- a/package.json +++ b/package.json @@ -10,12 +10,12 @@ "build": "turbo run build --filter=@wdio* --filter=wdio-electron-service --only", "ci": "turbo run lint format:check test:unit test:e2e:builder-cjs test:e2e:builder-esm test:e2e:forge-cjs test:e2e:forge-esm test:e2e:no-binary-cjs test:e2e:no-binary-esm", "ci-linux": "turbo run lint format:check test:unit test:e2e:builder-cjs test:e2e:builder-esm test:e2e:forge-cjs test:e2e:forge-esm test:e2e:no-binary-cjs test:e2e:no-binary-esm --concurrency=1", - "ci-mac:e2e:mac-universal": "turbo run build:mac-universal test:e2e-mac-universal:builder-cjs test:e2e-mac-universal:builder-esm test:e2e-mac-universal:forge-cjs test:e2e-mac-universal:forge-esm", - "ci-windows:e2e:builder-cjs": "turbo run build --filter=example-builder-cjs --only && turbo run test:e2e:builder-cjs", - "ci-windows:e2e:builder-esm": "turbo run build --filter=example-builder-esm --only && turbo run test:e2e:builder-esm", - "ci-windows:e2e:forge-cjs": "pnpm run init-forge:package && pnpm run init-forge:app-cjs && turbo run build --filter=example-forge-cjs --only && turbo run test:e2e:forge-cjs", - "ci-windows:e2e:forge-esm": "pnpm run init-forge:package && pnpm run init-forge:app-esm && turbo run build --filter=example-forge-esm --only && turbo run test:e2e:forge-esm", - "ci-windows:e2e:no-binary": "turbo run build --filter=example-no-binary* --only && turbo run test:e2e:no-binary-cjs test:e2e:no-binary-esm", + "ci-mac:e2e:mac-universal": "turbo run build:mac-universal init-e2es test:e2e-mac-universal:builder-cjs test:e2e-mac-universal:builder-esm test:e2e-mac-universal:forge-cjs test:e2e-mac-universal:forge-esm --only", + "ci-windows:e2e:builder-cjs": "turbo run build --filter=example-builder-cjs --only && turbo run init-e2es test:e2e:builder-cjs --only", + "ci-windows:e2e:builder-esm": "turbo run build --filter=example-builder-esm --only && turbo run init-e2es test:e2e:builder-esm --only", + "ci-windows:e2e:forge-cjs": "pnpm run init-forge:package && pnpm run init-forge:app-cjs && turbo run build --filter=example-forge-cjs --only && turbo run init-e2es test:e2e:forge-cjs --only", + "ci-windows:e2e:forge-esm": "pnpm run init-forge:package && pnpm run init-forge:app-esm && turbo run build --filter=example-forge-esm --only && turbo run init-e2es test:e2e:forge-esm --only", + "ci-windows:e2e:no-binary": "turbo run build --filter=example-no-binary* --only && turbo run init-e2es test:e2e:no-binary-cjs test:e2e:no-binary-esm --only", "ci-windows:units": "turbo run lint format:check test:unit", "ci:e2e:clean": "turbo run clean --filter=example*", "ci:e2e:logs": "turbo run logs --filter=@repo/e2e", diff --git a/turbo.json b/turbo.json index 5da2689e..97ca1bdf 100644 --- a/turbo.json +++ b/turbo.json @@ -20,46 +20,46 @@ "//#lint": { "inputs": ["**/*.{j,mj,cj,t}s"] }, - "@repo/e2e#init": { + "@repo/e2e#init-e2es": { "dependsOn": ["wdio-electron-service#build"] }, "@repo/e2e#test:e2e:builder-cjs": { - "dependsOn": ["example-builder-cjs#build", "@repo/e2e#init", "@repo/e2e#test:e2e:builder-esm"] + "dependsOn": ["example-builder-cjs#build", "@repo/e2e#init-e2es", "@repo/e2e#test:e2e:builder-esm"] }, "@repo/e2e#test:e2e:builder-esm": { - "dependsOn": ["example-builder-esm#build", "@repo/e2e#init"] + "dependsOn": ["example-builder-esm#build", "@repo/e2e#init-e2es"] }, "@repo/e2e#test:e2e:forge-cjs": { - "dependsOn": ["example-forge-cjs#build", "@repo/e2e#init", "@repo/e2e#test:e2e:forge-esm"] + "dependsOn": ["example-forge-cjs#build", "@repo/e2e#init-e2es", "@repo/e2e#test:e2e:forge-esm"] }, "@repo/e2e#test:e2e:forge-esm": { - "dependsOn": ["example-forge-esm#build", "@repo/e2e#init"] + "dependsOn": ["example-forge-esm#build", "@repo/e2e#init-e2es"] }, "@repo/e2e#test:e2e:no-binary-cjs": { - "dependsOn": ["example-no-binary-cjs#build", "@repo/e2e#init", "@repo/e2e#test:e2e:no-binary-esm"] + "dependsOn": ["example-no-binary-cjs#build", "@repo/e2e#init-e2es", "@repo/e2e#test:e2e:no-binary-esm"] }, "@repo/e2e#test:e2e:no-binary-esm": { - "dependsOn": ["example-no-binary-esm#build", "example-no-binary-cjs#build", "@repo/e2e#init"] + "dependsOn": ["example-no-binary-esm#build", "example-no-binary-cjs#build", "@repo/e2e#init-e2es"] }, "@repo/e2e#test:e2e-mac-universal:forge-cjs": { "dependsOn": [ "example-forge-cjs#build:mac-universal", - "@repo/e2e#init", + "@repo/e2e#init-e2es", "@repo/e2e#test:e2e-mac-universal:forge-esm" ] }, "@repo/e2e#test:e2e-mac-universal:forge-esm": { - "dependsOn": ["example-forge-esm#build:mac-universal", "@repo/e2e#init"] + "dependsOn": ["example-forge-esm#build:mac-universal", "@repo/e2e#init-e2es"] }, "@repo/e2e#test:e2e-mac-universal:builder-cjs": { "dependsOn": [ "example-builder-cjs#build:mac-universal", - "@repo/e2e#init", + "@repo/e2e#init-e2es", "@repo/e2e#test:e2e-mac-universal:builder-esm" ] }, "@repo/e2e#test:e2e-mac-universal:builder-esm": { - "dependsOn": ["example-builder-esm#build:mac-universal", "@repo/e2e#init"] + "dependsOn": ["example-builder-esm#build:mac-universal", "@repo/e2e#init-e2es"] }, "@wdio/electron-types#build": { "dependsOn": ["//#lint", "//#format:check", "test:unit"], From bda817969642f22312568dee12a465639a499064 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 21:30:27 +0100 Subject: [PATCH 20/52] chore: use defineConfig for rollup confs --- apps/builder-cjs/rollup.config.js | 5 +++-- apps/builder-esm/rollup.config.js | 5 +++-- apps/forge-cjs/rollup.config.mjs | 5 +++-- apps/forge-esm/rollup.config.js | 5 +++-- apps/no-binary-cjs/rollup.config.mjs | 5 +++-- apps/no-binary-esm/rollup.config.js | 5 +++-- e2e/rollup.config.js | 9 +++++++-- 7 files changed, 25 insertions(+), 14 deletions(-) diff --git a/apps/builder-cjs/rollup.config.js b/apps/builder-cjs/rollup.config.js index c9b42893..62f727bb 100644 --- a/apps/builder-cjs/rollup.config.js +++ b/apps/builder-cjs/rollup.config.js @@ -1,7 +1,8 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; +import { defineConfig } from 'rollup'; -export default [ +export default defineConfig([ { input: 'dist/preload.js', output: { @@ -12,4 +13,4 @@ export default [ plugins: [nodeResolve(), commonjs()], external: ['electron'], }, -]; +]); diff --git a/apps/builder-esm/rollup.config.js b/apps/builder-esm/rollup.config.js index dd3a48af..980cdc5f 100644 --- a/apps/builder-esm/rollup.config.js +++ b/apps/builder-esm/rollup.config.js @@ -1,7 +1,8 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; +import { defineConfig } from 'rollup'; -export default [ +export default defineConfig([ { input: 'dist/preload.js', output: { @@ -11,4 +12,4 @@ export default [ plugins: [nodeResolve(), commonjs()], external: ['electron'], }, -]; +]); diff --git a/apps/forge-cjs/rollup.config.mjs b/apps/forge-cjs/rollup.config.mjs index aebd221b..4f9875b7 100644 --- a/apps/forge-cjs/rollup.config.mjs +++ b/apps/forge-cjs/rollup.config.mjs @@ -1,7 +1,8 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; +import { defineConfig } from 'rollup'; -export default [ +export default defineConfig([ { input: 'dist/preload.js', output: { @@ -22,4 +23,4 @@ export default [ plugins: [nodeResolve(), commonjs()], external: ['electron'], }, -]; +]); diff --git a/apps/forge-esm/rollup.config.js b/apps/forge-esm/rollup.config.js index bede12fc..8c056970 100644 --- a/apps/forge-esm/rollup.config.js +++ b/apps/forge-esm/rollup.config.js @@ -1,7 +1,8 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; +import { defineConfig } from 'rollup'; -export default [ +export default defineConfig([ { input: 'dist/preload.js', output: { @@ -22,4 +23,4 @@ export default [ plugins: [nodeResolve()], external: ['electron'], }, -]; +]); diff --git a/apps/no-binary-cjs/rollup.config.mjs b/apps/no-binary-cjs/rollup.config.mjs index aebd221b..4f9875b7 100644 --- a/apps/no-binary-cjs/rollup.config.mjs +++ b/apps/no-binary-cjs/rollup.config.mjs @@ -1,7 +1,8 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; +import { defineConfig } from 'rollup'; -export default [ +export default defineConfig([ { input: 'dist/preload.js', output: { @@ -22,4 +23,4 @@ export default [ plugins: [nodeResolve(), commonjs()], external: ['electron'], }, -]; +]); diff --git a/apps/no-binary-esm/rollup.config.js b/apps/no-binary-esm/rollup.config.js index bede12fc..8c056970 100644 --- a/apps/no-binary-esm/rollup.config.js +++ b/apps/no-binary-esm/rollup.config.js @@ -1,7 +1,8 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; +import { defineConfig } from 'rollup'; -export default [ +export default defineConfig([ { input: 'dist/preload.js', output: { @@ -22,4 +23,4 @@ export default [ plugins: [nodeResolve()], external: ['electron'], }, -]; +]); diff --git a/e2e/rollup.config.js b/e2e/rollup.config.js index 58e4e49a..b52cc877 100644 --- a/e2e/rollup.config.js +++ b/e2e/rollup.config.js @@ -1,8 +1,9 @@ import typescript from '@rollup/plugin-typescript'; +import { defineConfig } from 'rollup'; const tsPlugin = typescript({ tsconfig: 'tsconfig.json' }); -export default [ +export default defineConfig([ { input: 'api.spec.ts', output: { @@ -10,6 +11,7 @@ export default [ format: 'esm', }, plugins: [tsPlugin], + external: ['@wdio/globals', '@vitest/spy', 'wdio-electron-service'], }, { input: 'application.spec.ts', @@ -18,6 +20,7 @@ export default [ format: 'esm', }, plugins: [tsPlugin], + external: ['@wdio/globals', 'wdio-electron-service'], }, { input: 'dom.spec.ts', @@ -26,6 +29,7 @@ export default [ format: 'esm', }, plugins: [tsPlugin], + external: ['@testing-library/webdriverio', '@wdio/globals', 'wdio-electron-service'], }, { input: 'interaction.spec.ts', @@ -34,5 +38,6 @@ export default [ format: 'esm', }, plugins: [tsPlugin], + external: ['@testing-library/webdriverio', '@wdio/globals', 'wdio-electron-service'], }, -]; +]); From c1c196944aaf43e3114817876e150321bb3c833d Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 21:31:01 +0100 Subject: [PATCH 21/52] chore(types): fix reference path --- packages/wdio-electron-service/test/mock.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wdio-electron-service/test/mock.spec.ts b/packages/wdio-electron-service/test/mock.spec.ts index 1e63b563..ad2e289c 100644 --- a/packages/wdio-electron-service/test/mock.spec.ts +++ b/packages/wdio-electron-service/test/mock.spec.ts @@ -1,4 +1,4 @@ -/// <reference types="../@types/vitest" /> +/// <reference types="../../../@types/vitest/index.d.ts" /> import { isAsyncFunction } from 'node:util/types'; import { describe, it, expect, beforeEach, vi, Mock } from 'vitest'; From de6a8f55c3fd5ce2b32ce2f74850d3fbc0325be5 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 21:32:21 +0100 Subject: [PATCH 22/52] chore: reorder imports --- packages/wdio-electron-service/test/mock.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/wdio-electron-service/test/mock.spec.ts b/packages/wdio-electron-service/test/mock.spec.ts index ad2e289c..c1545e67 100644 --- a/packages/wdio-electron-service/test/mock.spec.ts +++ b/packages/wdio-electron-service/test/mock.spec.ts @@ -1,9 +1,10 @@ /// <reference types="../../../@types/vitest/index.d.ts" /> import { isAsyncFunction } from 'node:util/types'; + import { describe, it, expect, beforeEach, vi, Mock } from 'vitest'; +import type { ElectronInterface, ElectronType } from '@wdio/electron-types'; import { createMock } from '../src/mock.js'; -import type { ElectronInterface, ElectronType } from '@wdio/electron-types'; let mockFn: Mock; From d65efb2ca46d887bcea8e8a72d81f41f23397f0b Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 21:57:34 +0100 Subject: [PATCH 23/52] fix(linting): use correct parserOptions, disable `import-x/named` for CJS --- eslint.config.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/eslint.config.js b/eslint.config.js index 6763b43b..4ff19970 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -25,7 +25,7 @@ export default [ ...globals.es2021, }, parserOptions: { - ...importX.flatConfigs.recommended.parserOptions, + ...importX.configs.recommended.parserOptions, }, }, plugins: { @@ -145,6 +145,13 @@ export default [ 'import-x/no-extraneous-dependencies': 'off', }, }, + // CJS example app files + { + files: ['apps/*-cjs/**/*.{js,mjs}'], // already disabled for TS files + rules: { + 'import-x/named': 'off', + }, + }, // Example app TS files { files: ['apps/builder-cjs/**/*.ts'], From d7c4df7d4201f4ca22a1bb7c3f29696724244cef Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 22:00:40 +0100 Subject: [PATCH 24/52] chore(typing): use unknown instead of any --- packages/@wdio_electron-types/src/index.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/@wdio_electron-types/src/index.ts b/packages/@wdio_electron-types/src/index.ts index 6f05556b..3d68f607 100644 --- a/packages/@wdio_electron-types/src/index.ts +++ b/packages/@wdio_electron-types/src/index.ts @@ -654,10 +654,10 @@ export interface ElectronMock<TArgs extends any[] = any, TReturns = any> extends } type $ = ( - selector: any, + selector: unknown, ) => ChainablePromiseElementBase<Promise<WebdriverIO.Element>> | Promise<WebdriverIO.Element> | WebdriverIO.Element; type $$ = ( - selector: any, + selector: unknown, ) => ChainablePromiseArrayBase<Promise<WebdriverIO.Element>> | Promise<WebdriverIO.Element[]> | WebdriverIO.Element[]; type ChainablePromiseElementBase<T> = Promise<T> & { $: $; @@ -668,9 +668,9 @@ type SelectorsBase = { $$: $$; }; type BaseWithExecute = { - execute<T>(script: string | ((...args: any[]) => T), ...args: any[]): Promise<T>; - execute<T>(script: string | ((...args: any[]) => T), ...args: any[]): T; - executeAsync(script: string | ((...args: any[]) => void), ...args: any[]): any; + execute<T>(script: string | ((...args: unknown[]) => T), ...args: unknown[]): Promise<T>; + execute<T>(script: string | ((...args: unknown[]) => T), ...args: unknown[]): T; + executeAsync(script: string | ((...args: unknown[]) => void), ...args: unknown[]): unknown; }; type ElementBase = SelectorsBase & { parent: ElementBase | BaseWithExecute; @@ -678,9 +678,9 @@ type ElementBase = SelectorsBase & { type BrowserBase = SelectorsBase & { addCommand<T extends boolean>( queryName: string, - commandFn: (this: T extends true ? ElementBase : BrowserBase, ...args: any[]) => void, + commandFn: (this: T extends true ? ElementBase : BrowserBase, ...args: unknown[]) => void, isElementCommand?: T, - ): any; + ): unknown; }; export interface BrowserExtension extends BrowserBase { From b52d881b49844f24e91d509f226fd07e76ad49ff Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 22:16:55 +0100 Subject: [PATCH 25/52] chore: disable sourceMaps --- e2e/tsconfig.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json index b47aa2ab..4241941f 100755 --- a/e2e/tsconfig.json +++ b/e2e/tsconfig.json @@ -3,6 +3,8 @@ "compilerOptions": { "declaration": false, "declarationMap": false, + "sourceMap": false, + "inlineSources": false, "noEmit": true, "module": "NodeNext", "moduleResolution": "NodeNext", From 97a9471ac4691e2295d54524df220a22b1e148b4 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 22:21:54 +0100 Subject: [PATCH 26/52] chore(linting): remove `any` --- packages/@wdio_electron-types/src/index.ts | 2 +- packages/wdio-electron-service/test/service.spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@wdio_electron-types/src/index.ts b/packages/@wdio_electron-types/src/index.ts index 3d68f607..d6134705 100644 --- a/packages/@wdio_electron-types/src/index.ts +++ b/packages/@wdio_electron-types/src/index.ts @@ -648,7 +648,7 @@ export interface ElectronMockInstance extends Omit<Mock, Override> { __isElectronMock: boolean; } -export interface ElectronMock<TArgs extends any[] = any, TReturns = any> extends ElectronMockInstance { +export interface ElectronMock<TArgs extends unknown[] = unknown[], TReturns = unknown> extends ElectronMockInstance { new (...args: TArgs): TReturns; (...args: TArgs): TReturns; } diff --git a/packages/wdio-electron-service/test/service.spec.ts b/packages/wdio-electron-service/test/service.spec.ts index 82bd3952..862b56ec 100644 --- a/packages/wdio-electron-service/test/service.spec.ts +++ b/packages/wdio-electron-service/test/service.spec.ts @@ -114,7 +114,7 @@ describe('beforeTest', () => { }); describe('afterCommand', () => { - let mocks: [string, ElectronMock<any, any>][] = []; + let mocks: [string, ElectronMock][] = []; vi.mock('../src/mockStore', () => ({ default: { From 10614a0c12fe06669f54f75e511b4df1db977a92 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Mon, 9 Sep 2024 22:50:43 +0100 Subject: [PATCH 27/52] chore: add comments --- packages/wdio-electron-service/src/preload.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/wdio-electron-service/src/preload.ts b/packages/wdio-electron-service/src/preload.ts index 12c25e16..e812eeb0 100644 --- a/packages/wdio-electron-service/src/preload.ts +++ b/packages/wdio-electron-service/src/preload.ts @@ -3,8 +3,11 @@ import { Channel } from './constants.js'; const invoke = async (channel: Channel, ...data: unknown[]) => ipcRenderer.invoke(channel, ...data); +// Expose `execute` to the renderer process contextBridge.exposeInMainWorld('wdioElectron', { execute: (script: string, args: unknown[]) => invoke(Channel.Execute, script, args), }); +// Expose __name to the renderer process to work around issue with function serialization +// https://github.com/privatenumber/tsx/issues/113 contextBridge.exposeInMainWorld('__name', (func: (...args: unknown[]) => unknown) => func); From eff62c77f4f31e66ae35f572f2afa415932bcdce Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Tue, 10 Sep 2024 14:17:38 +0100 Subject: [PATCH 28/52] chore: remove `typeScriptVersion` --- packages/@wdio_electron-types/package.json | 1 - packages/@wdio_electron-utils/package.json | 1 - packages/wdio-electron-service/package.json | 1 - 3 files changed, 3 deletions(-) diff --git a/packages/@wdio_electron-types/package.json b/packages/@wdio_electron-types/package.json index acabb9ff..2f73c1b9 100644 --- a/packages/@wdio_electron-types/package.json +++ b/packages/@wdio_electron-types/package.json @@ -7,7 +7,6 @@ "exports": { ".": "./dist/index.js" }, - "typeScriptVersion": "5.2.2", "scripts": { "clean": "pnpm clean:dist && pnpm dlx shx rm -rf ./node_modules pnpm-lock.yaml", "clean:dist": "pnpm dlx shx rm -rf ./dist", diff --git a/packages/@wdio_electron-utils/package.json b/packages/@wdio_electron-utils/package.json index a103c94b..58355599 100644 --- a/packages/@wdio_electron-utils/package.json +++ b/packages/@wdio_electron-utils/package.json @@ -23,7 +23,6 @@ "./dist/cjs/log.js" ] }, - "typeScriptVersion": "5.2.2", "engines": { "node": ">=18 || >=20" }, diff --git a/packages/wdio-electron-service/package.json b/packages/wdio-electron-service/package.json index ec6379f8..f18f2adf 100644 --- a/packages/wdio-electron-service/package.json +++ b/packages/wdio-electron-service/package.json @@ -34,7 +34,6 @@ "./dist/cjs/preload.js" ] }, - "typeScriptVersion": "5.2.2", "types": "./dist/index.d.ts", "engines": { "node": ">=18 || >=20" From 84b971be262bb089fb56468f414042db53a77344 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 13:37:36 +0100 Subject: [PATCH 29/52] chore(linting): remove ignored files, update ES version --- eslint.config.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 4ff19970..61129873 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -12,20 +12,17 @@ export default [ { ignores: ['**/dist/**/*', '@types/**/*'], }, - // Ignored files - { - ignores: ['**/*.config.js', 'e2e/**/*.js'], - }, // All files { files: ['**/*.{js,mjs,ts}'], languageOptions: { ecmaVersion: 'latest', globals: { - ...globals.es2021, + ...globals.es2023, }, parserOptions: { ...importX.configs.recommended.parserOptions, + ecmaVersion: 2023, }, }, plugins: { From b2e05677371367f26355b2ad342de518f357d27e Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 13:40:10 +0100 Subject: [PATCH 30/52] chore: update ES targets --- apps/forge-cjs/tsconfig.json | 2 +- apps/no-binary-cjs/tsconfig.json | 2 +- packages/@wdio_electron-types/tsconfig.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/forge-cjs/tsconfig.json b/apps/forge-cjs/tsconfig.json index b0b79714..4c74099b 100644 --- a/apps/forge-cjs/tsconfig.json +++ b/apps/forge-cjs/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.base.cjs.json", "compilerOptions": { - "target": "ES2022", + "target": "ES2023", "baseUrl": ".", "types": [], "typeRoots": ["./node_modules", "./node_modules/@types", "../../node_modules/@types", "../../@types"], diff --git a/apps/no-binary-cjs/tsconfig.json b/apps/no-binary-cjs/tsconfig.json index b0b79714..4c74099b 100644 --- a/apps/no-binary-cjs/tsconfig.json +++ b/apps/no-binary-cjs/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.base.cjs.json", "compilerOptions": { - "target": "ES2022", + "target": "ES2023", "baseUrl": ".", "types": [], "typeRoots": ["./node_modules", "./node_modules/@types", "../../node_modules/@types", "../../@types"], diff --git a/packages/@wdio_electron-types/tsconfig.json b/packages/@wdio_electron-types/tsconfig.json index ece8f519..a01afa26 100755 --- a/packages/@wdio_electron-types/tsconfig.json +++ b/packages/@wdio_electron-types/tsconfig.json @@ -5,7 +5,7 @@ "compilerOptions": { "baseUrl": ".", "outDir": "dist", - "target": "ES2022", + "target": "ES2023", "noEmit": false, "types": [], "typeRoots": ["./node_modules", "./node_modules/@types", "../../@types"] From 4a83facb97d6f7302a0b6804273179d2bbfef622 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 13:43:19 +0100 Subject: [PATCH 31/52] chore: update ES version, add vitest/jsdom types --- packages/@wdio_electron-utils/tsconfig.json | 4 ++-- packages/wdio-electron-service/tsconfig.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/@wdio_electron-utils/tsconfig.json b/packages/@wdio_electron-utils/tsconfig.json index eff2426b..20c47989 100755 --- a/packages/@wdio_electron-utils/tsconfig.json +++ b/packages/@wdio_electron-utils/tsconfig.json @@ -4,9 +4,9 @@ "exclude": ["src/cjs", "node_modules", "coverage", "dist", "test"], "compilerOptions": { "baseUrl": ".", - "target": "ES2022", + "target": "ES2023", "noEmit": false, - "types": ["node"], + "types": ["node", "vitest/jsdom"], "typeRoots": ["./node_modules", "./node_modules/@types", "../../@types"] } } diff --git a/packages/wdio-electron-service/tsconfig.json b/packages/wdio-electron-service/tsconfig.json index 277104f7..7ec06b4d 100755 --- a/packages/wdio-electron-service/tsconfig.json +++ b/packages/wdio-electron-service/tsconfig.json @@ -11,9 +11,9 @@ "exclude": ["src/cjs", "node_modules", "coverage", "dist", "test"], "compilerOptions": { "baseUrl": ".", - "target": "ES2022", + "target": "ES2023", "noEmit": false, - "types": ["node", "electron-to-chromium"], + "types": ["node", "electron-to-chromium", "vitest/jsdom"], "typeRoots": ["./node_modules", "./node_modules/@types", "../../@types"] } } From e3274e18899b20d88201ddd726e30812d7a8a80a Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 13:51:49 +0100 Subject: [PATCH 32/52] chore: delete unused deps and config including rollup --- apps/builder-cjs/package.json | 12 +----------- apps/builder-cjs/rollup.config.js | 16 ---------------- apps/builder-esm/README.md | 2 +- apps/builder-esm/package.json | 13 +------------ apps/builder-esm/rollup.config.js | 15 --------------- 5 files changed, 3 insertions(+), 55 deletions(-) delete mode 100644 apps/builder-cjs/rollup.config.js delete mode 100644 apps/builder-esm/rollup.config.js diff --git a/apps/builder-cjs/package.json b/apps/builder-cjs/package.json index 6dfddc81..b3f1122d 100644 --- a/apps/builder-cjs/package.json +++ b/apps/builder-cjs/package.json @@ -16,27 +16,17 @@ "wdio-electron-service": "workspace:*" }, "devDependencies": { - "@rollup/plugin-commonjs": "^26.0.1", - "@rollup/plugin-node-resolve": "^15.2.1", "@types/node": "^20.16.1", "@wdio/cli": "^9.0.9", "@wdio/globals": "^9.0.9", "@wdio/local-runner": "^9.0.9", "@wdio/mocha-framework": "^9.0.8", - "cross-env": "^7.0.3", "electron": "^32.0.2", "electron-builder": "^25.0.5", - "global-jsdom": "^24.0.0", - "jsdom": "^24.1.1", - "rollup": "^4.21.2", - "ts-loader": "^9.4.4", "tsx": "^4.19.0", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "webdriverio": "^9.0.9" }, - "peerDependencies": { - "typescript": "5.2.2" - }, "build": { "asar": true, "appId": "com.example-builder-cjs.demo", diff --git a/apps/builder-cjs/rollup.config.js b/apps/builder-cjs/rollup.config.js deleted file mode 100644 index 62f727bb..00000000 --- a/apps/builder-cjs/rollup.config.js +++ /dev/null @@ -1,16 +0,0 @@ -import { nodeResolve } from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; -import { defineConfig } from 'rollup'; - -export default defineConfig([ - { - input: 'dist/preload.js', - output: { - file: 'dist/preload.bundle.js', - inlineDynamicImports: true, - format: 'cjs', - }, - plugins: [nodeResolve(), commonjs()], - external: ['electron'], - }, -]); diff --git a/apps/builder-esm/README.md b/apps/builder-esm/README.md index d4c724cf..d81ab5fa 100644 --- a/apps/builder-esm/README.md +++ b/apps/builder-esm/README.md @@ -2,4 +2,4 @@ An ESM project for a minimal Electron app, designed to provide E2E testing for `wdio-electron-service`. -The app is built using `electron-builder` and the preload script is bundled as CJS, this is to work around a limitation of Electron's ESM support. +The app is built using `electron-builder` and is not bundled. diff --git a/apps/builder-esm/package.json b/apps/builder-esm/package.json index c4cd6056..c4485bb9 100644 --- a/apps/builder-esm/package.json +++ b/apps/builder-esm/package.json @@ -18,28 +18,17 @@ "wdio-electron-service": "workspace:*" }, "devDependencies": { - "@rollup/plugin-commonjs": "^26.0.1", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.2.1", "@types/node": "^20.16.1", "@wdio/cli": "^9.0.9", "@wdio/globals": "^9.0.9", "@wdio/local-runner": "^9.0.9", "@wdio/mocha-framework": "^9.0.8", - "cross-env": "^7.0.3", "electron": "^32.0.2", "electron-builder": "^25.0.5", - "global-jsdom": "^24.0.0", - "jsdom": "^24.1.1", - "rollup": "^4.21.2", - "ts-loader": "^9.4.4", "tsx": "^4.19.0", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "webdriverio": "^9.0.9" }, - "peerDependencies": { - "typescript": "5.2.2" - }, "build": { "asar": true, "appId": "com.example-builder-esm.demo", diff --git a/apps/builder-esm/rollup.config.js b/apps/builder-esm/rollup.config.js deleted file mode 100644 index 980cdc5f..00000000 --- a/apps/builder-esm/rollup.config.js +++ /dev/null @@ -1,15 +0,0 @@ -import { nodeResolve } from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; -import { defineConfig } from 'rollup'; - -export default defineConfig([ - { - input: 'dist/preload.js', - output: { - file: 'dist/preload.bundle.cjs', - format: 'cjs', - }, - plugins: [nodeResolve(), commonjs()], - external: ['electron'], - }, -]); From 2d5879eb541a50b7ac22b2e7ebdadbf1955e158a Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 13:54:36 +0100 Subject: [PATCH 33/52] chore: update pnpm, remove unused jsdom --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 26a099d7..69f9d383 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,6 @@ "eslint-plugin-wdio": "^9.0.8", "globals": "^15.9.0", "husky": "^9.1.5", - "jsdom": "^24.1.1", "lint-staged": "^15.2.10", "prettier": "^3.3.3", "read-package-up": "^11.0.0", @@ -75,7 +74,7 @@ "prettier --write" ] }, - "packageManager": "pnpm@9.9.0+sha512.60c18acd138bff695d339be6ad13f7e936eea6745660d4cc4a776d5247c540d0edee1a563695c183a66eb917ef88f2b4feb1fc25f32a7adcadc7aaf3438e99c1", + "packageManager": "pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c", "release-it": { "git": { "commitMessage": "chore: release v${version}", From 82d76d1f140b94ac3ee7e533a03c4b7a413fa73f Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 13:56:07 +0100 Subject: [PATCH 34/52] chore: remove unused deps, pin `@electron/asar`to work around b0rkage --- apps/forge-cjs/package.json | 11 ++++------- apps/forge-esm/package.json | 11 ++++------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/apps/forge-cjs/package.json b/apps/forge-cjs/package.json index 0e56eac5..9e2865c0 100644 --- a/apps/forge-cjs/package.json +++ b/apps/forge-cjs/package.json @@ -20,22 +20,19 @@ "@electron-forge/cli": "^7.4.0", "@rollup/plugin-commonjs": "^26.0.1", "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-typescript": "^11.1.6", "@types/node": "^20.16.1", "@wdio/cli": "^9.0.9", "@wdio/globals": "^9.0.9", "@wdio/local-runner": "^9.0.9", "@wdio/mocha-framework": "^9.0.8", - "cross-env": "^7.0.3", "electron": "^32.0.2", - "global-jsdom": "^24.0.0", - "jsdom": "^24.1.1", "rollup": "^4.21.2", - "ts-loader": "^9.4.4", "tsx": "^4.19.0", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "webdriverio": "^9.0.9" }, - "peerDependencies": { - "typescript": "5.2.2" + "resolutions": { + "@electron/asar": "3.2.10" } } diff --git a/apps/forge-esm/package.json b/apps/forge-esm/package.json index 9c42e3b5..efcb30ad 100644 --- a/apps/forge-esm/package.json +++ b/apps/forge-esm/package.json @@ -21,22 +21,19 @@ "@electron-forge/cli": "^7.4.0", "@rollup/plugin-commonjs": "^26.0.1", "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-typescript": "^11.1.6", "@types/node": "^20.16.1", "@wdio/cli": "^9.0.9", "@wdio/globals": "^9.0.9", "@wdio/local-runner": "^9.0.9", "@wdio/mocha-framework": "^9.0.8", - "cross-env": "^7.0.3", "electron": "^32.0.2", - "global-jsdom": "^24.0.0", - "jsdom": "^24.1.1", "rollup": "^4.21.2", - "ts-loader": "^9.4.4", "tsx": "^4.19.0", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "webdriverio": "^9.0.9" }, - "peerDependencies": { - "typescript": "5.2.2" + "resolutions": { + "@electron/asar": "3.2.10" } } From c390e9d3dd3e9fda9208ea4d9244beb4dc64c6bd Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 13:57:51 +0100 Subject: [PATCH 35/52] chore: update deps, fix CJS types masquerading as ESM --- packages/wdio-electron-service/package.json | 42 ++++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/packages/wdio-electron-service/package.json b/packages/wdio-electron-service/package.json index f18f2adf..1a09a258 100644 --- a/packages/wdio-electron-service/package.json +++ b/packages/wdio-electron-service/package.json @@ -11,25 +11,40 @@ "exports": { ".": [ { - "import": "./dist/index.js", - "types": "./dist/index.d.ts", - "require": "./dist/cjs/index.js" + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.ts", + "default": "./dist/cjs/index.js" + } }, "./dist/cjs/index.js" ], "./main": [ { - "import": "./dist/main.js", - "types": "./dist/main.d.ts", - "require": "./dist/cjs/main.js" + "import": { + "types": "./dist/main.d.ts", + "default": "./dist/main.js" + }, + "require": { + "types": "./dist/cjs/main.d.ts", + "default": "./dist/cjs/main.js" + } }, "./dist/cjs/main.js" ], "./preload": [ { - "import": "./dist/preload.js", - "types": "./dist/preload.d.ts", - "require": "./dist/cjs/preload.js" + "import": { + "types": "./dist/preload.d.ts", + "default": "./dist/preload.js" + }, + "require": { + "types": "./dist/cjs/preload.d.ts", + "default": "./dist/cjs/preload.js" + } }, "./dist/cjs/preload.js" ] @@ -83,10 +98,10 @@ "@wdio/logger": "^9.0.8", "compare-versions": "^6.1.1", "debug": "^4.3.7", - "electron-to-chromium": "^1.5.18", + "electron-to-chromium": "^1.5.19", "fast-copy": "^3.0.1", "read-package-up": "^11.0.0", - "tinyspy": "^3.0.0", + "tinyspy": "^3.0.2", "webdriverio": "^9.0.9" }, "devDependencies": { @@ -97,14 +112,13 @@ "@types/node": "^20.16.1", "@vitest/coverage-v8": "^2.0.5", "@wdio/types": "^9.0.8", - "builder-util": "25.0.3", + "builder-util": "^25.0.3", "electron": "^32.0.2", - "jsdom": "^24.1.1", "nock": "^14.0.0-beta.11", "release-it": "^17.6.0", "rollup": "^4.21.2", "shx": "^0.3.4", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "vitest": "^2.0.5" }, "files": [ From f7cc6cc4e751c8ad66e0a65c130197469f96d581 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:01:17 +0100 Subject: [PATCH 36/52] chore: update deps, remove unused --- apps/no-binary-cjs/package.json | 10 ++-------- apps/no-binary-esm/package.json | 10 ++-------- e2e/package.json | 5 +---- packages/@wdio_electron-types/package.json | 2 +- packages/@wdio_electron-utils/package.json | 3 +-- 5 files changed, 7 insertions(+), 23 deletions(-) diff --git a/apps/no-binary-cjs/package.json b/apps/no-binary-cjs/package.json index 59b3d489..56ee073d 100644 --- a/apps/no-binary-cjs/package.json +++ b/apps/no-binary-cjs/package.json @@ -14,22 +14,16 @@ "devDependencies": { "@rollup/plugin-commonjs": "^26.0.1", "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-typescript": "^11.1.6", "@types/node": "^20.16.1", "@wdio/cli": "^9.0.9", "@wdio/globals": "^9.0.9", "@wdio/local-runner": "^9.0.9", "@wdio/mocha-framework": "^9.0.8", - "cross-env": "^7.0.3", "electron": "^32.0.2", - "global-jsdom": "^24.0.0", - "jsdom": "^24.1.1", "rollup": "^4.21.2", - "ts-loader": "^9.4.4", "tsx": "^4.19.0", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "webdriverio": "^9.0.9" - }, - "peerDependencies": { - "typescript": "5.2.2" } } diff --git a/apps/no-binary-esm/package.json b/apps/no-binary-esm/package.json index 037251c9..496dd989 100644 --- a/apps/no-binary-esm/package.json +++ b/apps/no-binary-esm/package.json @@ -16,22 +16,16 @@ "devDependencies": { "@rollup/plugin-commonjs": "^26.0.1", "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-typescript": "^11.1.6", "@types/node": "^20.16.1", "@wdio/cli": "^9.0.9", "@wdio/globals": "^9.0.9", "@wdio/local-runner": "^9.0.9", "@wdio/mocha-framework": "^9.0.8", - "cross-env": "^7.0.3", "electron": "^32.0.2", - "global-jsdom": "^24.0.0", - "jsdom": "^24.1.1", "rollup": "^4.21.2", - "ts-loader": "^9.4.4", "tsx": "^4.19.0", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "webdriverio": "^9.0.9" - }, - "peerDependencies": { - "typescript": "5.2.2" } } diff --git a/e2e/package.json b/e2e/package.json index 98c81938..f5d74873 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -50,11 +50,8 @@ "@types/node": "^20.16.1", "@vitest/spy": "^2.0.5", "@wdio/types": "^9.0.8", - "global-jsdom": "^24.0.0", - "jsdom": "^24.1.1", "read-package-up": "^11.0.0", "rollup": "^4.21.2", - "ts-loader": "^9.4.4", - "typescript": "^5.5.4" + "typescript": "^5.6.2" } } diff --git a/packages/@wdio_electron-types/package.json b/packages/@wdio_electron-types/package.json index 2f73c1b9..99100b9c 100644 --- a/packages/@wdio_electron-types/package.json +++ b/packages/@wdio_electron-types/package.json @@ -25,7 +25,7 @@ "electron": "^32.0.2", "read-package-up": "^11.0.0", "release-it": "^17.6.0", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "webdriverio": "^9.0.9" }, "files": [ diff --git a/packages/@wdio_electron-utils/package.json b/packages/@wdio_electron-utils/package.json index 58355599..3a2a5b16 100644 --- a/packages/@wdio_electron-utils/package.json +++ b/packages/@wdio_electron-utils/package.json @@ -49,10 +49,9 @@ "@types/node": "^20.16.1", "@vitest/coverage-v8": "^2.0.5", "@wdio/electron-types": "workspace:*", - "jsdom": "^24.1.1", "release-it": "^17.6.0", "shx": "^0.3.4", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "vitest": "^2.0.5" }, "release-it": { From 5ed876bcbf0c9856c08966939ff81e1b85dfc242 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:01:37 +0100 Subject: [PATCH 37/52] chore: update lockfile --- pnpm-lock.yaml | 849 +++++++++++++------------------------------------ 1 file changed, 220 insertions(+), 629 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d512a46d..0d7c0d8a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,13 +22,13 @@ importers: version: 0.8.15 '@typescript-eslint/eslint-plugin': specifier: ^8.4.0 - version: 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4) + version: 8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0)(typescript@5.6.2) '@typescript-eslint/parser': specifier: ^8.4.0 - version: 8.4.0(eslint@9.10.0)(typescript@5.5.4) + version: 8.5.0(eslint@9.10.0)(typescript@5.6.2) '@vitest/eslint-plugin': specifier: ^1.1.0 - version: 1.1.0(@typescript-eslint/utils@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6)) + version: 1.1.0(@typescript-eslint/utils@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0)(typescript@5.6.2)(vitest@2.0.5(@types/node@20.16.1)(jsdom@25.0.0)(terser@5.32.0)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -40,10 +40,10 @@ importers: version: 9.1.0(eslint@9.10.0) eslint-import-resolver-typescript: specifier: ^3.6.3 - version: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0) + version: 3.6.3(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0) eslint-plugin-import-x: specifier: ^4.2.1 - version: 4.2.1(eslint@9.10.0)(typescript@5.5.4) + version: 4.2.1(eslint@9.10.0)(typescript@5.6.2) eslint-plugin-wdio: specifier: ^9.0.8 version: 9.0.8 @@ -54,8 +54,8 @@ importers: specifier: ^9.1.5 version: 9.1.5 jsdom: - specifier: ^24.1.1 - version: 24.1.1 + specifier: ^25.0.0 + version: 25.0.0 lint-staged: specifier: ^15.2.10 version: 15.2.10 @@ -67,7 +67,7 @@ importers: version: 11.0.0 release-it: specifier: ^17.6.0 - version: 17.6.0(typescript@5.5.4) + version: 17.6.0(typescript@5.6.2) shelljs: specifier: ^0.8.5 version: 0.8.5 @@ -87,12 +87,6 @@ importers: specifier: workspace:* version: link:../../packages/wdio-electron-service devDependencies: - '@rollup/plugin-commonjs': - specifier: ^26.0.1 - version: 26.0.1(rollup@4.21.2) - '@rollup/plugin-node-resolve': - specifier: ^15.2.1 - version: 15.2.3(rollup@4.21.2) '@types/node': specifier: ^20.16.1 version: 20.16.1 @@ -108,33 +102,18 @@ importers: '@wdio/mocha-framework': specifier: ^9.0.8 version: 9.0.8 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 electron: specifier: ^32.0.2 version: 32.0.2 electron-builder: specifier: ^25.0.5 version: 25.0.5(electron-builder-squirrel-windows@25.0.5(dmg-builder@25.0.5)) - global-jsdom: - specifier: ^24.0.0 - version: 24.0.0(jsdom@24.1.1) - jsdom: - specifier: ^24.1.1 - version: 24.1.1 - rollup: - specifier: ^4.21.2 - version: 4.21.2 - ts-loader: - specifier: ^9.4.4 - version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) tsx: specifier: ^4.19.0 version: 4.19.0 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.2 + version: 5.6.2 webdriverio: specifier: ^9.0.9 version: 9.0.9 @@ -145,15 +124,6 @@ importers: specifier: workspace:* version: link:../../packages/wdio-electron-service devDependencies: - '@rollup/plugin-commonjs': - specifier: ^26.0.1 - version: 26.0.1(rollup@4.21.2) - '@rollup/plugin-json': - specifier: ^6.1.0 - version: 6.1.0(rollup@4.21.2) - '@rollup/plugin-node-resolve': - specifier: ^15.2.1 - version: 15.2.3(rollup@4.21.2) '@types/node': specifier: ^20.16.1 version: 20.16.1 @@ -169,33 +139,18 @@ importers: '@wdio/mocha-framework': specifier: ^9.0.8 version: 9.0.8 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 electron: specifier: ^32.0.2 version: 32.0.2 electron-builder: specifier: ^25.0.5 version: 25.0.5(electron-builder-squirrel-windows@25.0.5(dmg-builder@25.0.5)) - global-jsdom: - specifier: ^24.0.0 - version: 24.0.0(jsdom@24.1.1) - jsdom: - specifier: ^24.1.1 - version: 24.1.1 - rollup: - specifier: ^4.21.2 - version: 4.21.2 - ts-loader: - specifier: ^9.4.4 - version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) tsx: specifier: ^4.19.0 version: 4.19.0 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.2 + version: 5.6.2 webdriverio: specifier: ^9.0.9 version: 9.0.9 @@ -215,6 +170,9 @@ importers: '@rollup/plugin-node-resolve': specifier: ^15.2.1 version: 15.2.3(rollup@4.21.2) + '@rollup/plugin-typescript': + specifier: ^11.1.6 + version: 11.1.6(rollup@4.21.2)(tslib@2.7.0)(typescript@5.6.2) '@types/node': specifier: ^20.16.1 version: 20.16.1 @@ -230,30 +188,18 @@ importers: '@wdio/mocha-framework': specifier: ^9.0.8 version: 9.0.8 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 electron: specifier: ^32.0.2 version: 32.0.2 - global-jsdom: - specifier: ^24.0.0 - version: 24.0.0(jsdom@24.1.1) - jsdom: - specifier: ^24.1.1 - version: 24.1.1 rollup: specifier: ^4.21.2 version: 4.21.2 - ts-loader: - specifier: ^9.4.4 - version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) tsx: specifier: ^4.19.0 version: 4.19.0 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.2 + version: 5.6.2 webdriverio: specifier: ^9.0.9 version: 9.0.9 @@ -273,6 +219,9 @@ importers: '@rollup/plugin-node-resolve': specifier: ^15.2.1 version: 15.2.3(rollup@4.21.2) + '@rollup/plugin-typescript': + specifier: ^11.1.6 + version: 11.1.6(rollup@4.21.2)(tslib@2.7.0)(typescript@5.6.2) '@types/node': specifier: ^20.16.1 version: 20.16.1 @@ -288,30 +237,18 @@ importers: '@wdio/mocha-framework': specifier: ^9.0.8 version: 9.0.8 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 electron: specifier: ^32.0.2 version: 32.0.2 - global-jsdom: - specifier: ^24.0.0 - version: 24.0.0(jsdom@24.1.1) - jsdom: - specifier: ^24.1.1 - version: 24.1.1 rollup: specifier: ^4.21.2 version: 4.21.2 - ts-loader: - specifier: ^9.4.4 - version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) tsx: specifier: ^4.19.0 version: 4.19.0 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.2 + version: 5.6.2 webdriverio: specifier: ^9.0.9 version: 9.0.9 @@ -328,6 +265,9 @@ importers: '@rollup/plugin-node-resolve': specifier: ^15.2.1 version: 15.2.3(rollup@4.21.2) + '@rollup/plugin-typescript': + specifier: ^11.1.6 + version: 11.1.6(rollup@4.21.2)(tslib@2.7.0)(typescript@5.6.2) '@types/node': specifier: ^20.16.1 version: 20.16.1 @@ -343,30 +283,18 @@ importers: '@wdio/mocha-framework': specifier: ^9.0.8 version: 9.0.8 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 electron: specifier: ^32.0.2 version: 32.0.2 - global-jsdom: - specifier: ^24.0.0 - version: 24.0.0(jsdom@24.1.1) - jsdom: - specifier: ^24.1.1 - version: 24.1.1 rollup: specifier: ^4.21.2 version: 4.21.2 - ts-loader: - specifier: ^9.4.4 - version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) tsx: specifier: ^4.19.0 version: 4.19.0 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.2 + version: 5.6.2 webdriverio: specifier: ^9.0.9 version: 9.0.9 @@ -383,6 +311,9 @@ importers: '@rollup/plugin-node-resolve': specifier: ^15.2.1 version: 15.2.3(rollup@4.21.2) + '@rollup/plugin-typescript': + specifier: ^11.1.6 + version: 11.1.6(rollup@4.21.2)(tslib@2.7.0)(typescript@5.6.2) '@types/node': specifier: ^20.16.1 version: 20.16.1 @@ -398,30 +329,18 @@ importers: '@wdio/mocha-framework': specifier: ^9.0.8 version: 9.0.8 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 electron: specifier: ^32.0.2 version: 32.0.2 - global-jsdom: - specifier: ^24.0.0 - version: 24.0.0(jsdom@24.1.1) - jsdom: - specifier: ^24.1.1 - version: 24.1.1 rollup: specifier: ^4.21.2 version: 4.21.2 - ts-loader: - specifier: ^9.4.4 - version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) tsx: specifier: ^4.19.0 version: 4.19.0 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.2 + version: 5.6.2 webdriverio: specifier: ^9.0.9 version: 9.0.9 @@ -467,7 +386,7 @@ importers: version: 7.4.0(encoding@0.1.13) '@rollup/plugin-typescript': specifier: ^11.1.6 - version: 11.1.6(rollup@4.21.2)(tslib@2.7.0)(typescript@5.5.4) + version: 11.1.6(rollup@4.21.2)(tslib@2.7.0)(typescript@5.6.2) '@types/mocha': specifier: ^10.0.6 version: 10.0.7 @@ -480,24 +399,15 @@ importers: '@wdio/types': specifier: ^9.0.8 version: 9.0.8 - global-jsdom: - specifier: ^24.0.0 - version: 24.0.0(jsdom@24.1.1) - jsdom: - specifier: ^24.1.1 - version: 24.1.1 read-package-up: specifier: ^11.0.0 version: 11.0.0 rollup: specifier: ^4.21.2 version: 4.21.2 - ts-loader: - specifier: ^9.4.4 - version: 9.5.1(typescript@5.5.4)(webpack@5.94.0) typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.2 + version: 5.6.2 packages/@wdio_electron-types: dependencies: @@ -528,10 +438,10 @@ importers: version: 11.0.0 release-it: specifier: ^17.6.0 - version: 17.6.0(typescript@5.5.4) + version: 17.6.0(typescript@5.6.2) typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.2 + version: 5.6.2 webdriverio: specifier: ^9.0.9 version: 9.0.9 @@ -562,25 +472,22 @@ importers: version: 20.16.1 '@vitest/coverage-v8': specifier: ^2.0.5 - version: 2.0.5(vitest@2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6)) + version: 2.0.5(vitest@2.0.5(@types/node@20.16.1)(jsdom@25.0.0)(terser@5.32.0)) '@wdio/electron-types': specifier: workspace:* version: link:../@wdio_electron-types - jsdom: - specifier: ^24.1.1 - version: 24.1.1 release-it: specifier: ^17.6.0 - version: 17.6.0(typescript@5.5.4) + version: 17.6.0(typescript@5.6.2) shx: specifier: ^0.3.4 version: 0.3.4 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.2 + version: 5.6.2 vitest: specifier: ^2.0.5 - version: 2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6) + version: 2.0.5(@types/node@20.16.1)(jsdom@25.0.0)(terser@5.32.0) packages/wdio-electron-service: dependencies: @@ -606,8 +513,8 @@ importers: specifier: ^4.3.7 version: 4.3.7(supports-color@8.1.1) electron-to-chromium: - specifier: ^1.5.18 - version: 1.5.18 + specifier: ^1.5.19 + version: 1.5.19 fast-copy: specifier: ^3.0.1 version: 3.0.2 @@ -615,8 +522,8 @@ importers: specifier: ^11.0.0 version: 11.0.0 tinyspy: - specifier: ^3.0.0 - version: 3.0.0 + specifier: ^3.0.2 + version: 3.0.2 webdriverio: specifier: ^9.0.9 version: 9.0.9 @@ -638,25 +545,22 @@ importers: version: 20.16.1 '@vitest/coverage-v8': specifier: ^2.0.5 - version: 2.0.5(vitest@2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6)) + version: 2.0.5(vitest@2.0.5(@types/node@20.16.1)(jsdom@25.0.0)(terser@5.32.0)) '@wdio/types': specifier: ^9.0.8 version: 9.0.8 builder-util: - specifier: 25.0.3 + specifier: ^25.0.3 version: 25.0.3 electron: specifier: ^32.0.2 version: 32.0.2 - jsdom: - specifier: ^24.1.1 - version: 24.1.1 nock: specifier: ^14.0.0-beta.11 version: 14.0.0-beta.11 release-it: specifier: ^17.6.0 - version: 17.6.0(typescript@5.5.4) + version: 17.6.0(typescript@5.6.2) rollup: specifier: ^4.21.2 version: 4.21.2 @@ -664,11 +568,11 @@ importers: specifier: ^0.3.4 version: 0.3.4 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.2 + version: 5.6.2 vitest: specifier: ^2.0.5 - version: 2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6) + version: 2.0.5(@types/node@20.16.1)(jsdom@25.0.0)(terser@5.32.0) packages: @@ -1367,15 +1271,6 @@ packages: rollup: optional: true - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-node-resolve@15.2.3': resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} @@ -1566,9 +1461,6 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/keyv@3.1.4': resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} @@ -1635,8 +1527,8 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.4.0': - resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==} + '@typescript-eslint/eslint-plugin@8.5.0': + resolution: {integrity: sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -1646,8 +1538,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.4.0': - resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==} + '@typescript-eslint/parser@8.5.0': + resolution: {integrity: sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1660,8 +1552,12 @@ packages: resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.4.0': - resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==} + '@typescript-eslint/scope-manager@8.5.0': + resolution: {integrity: sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.5.0': + resolution: {integrity: sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1673,6 +1569,10 @@ packages: resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.5.0': + resolution: {integrity: sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.4.0': resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1682,16 +1582,35 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@8.5.0': + resolution: {integrity: sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/utils@8.4.0': resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/utils@8.5.0': + resolution: {integrity: sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/visitor-keys@8.4.0': resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.5.0': + resolution: {integrity: sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@vitest/coverage-v8@2.0.5': resolution: {integrity: sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg==} peerDependencies: @@ -1781,61 +1700,10 @@ packages: resolution: {integrity: sha512-p3EgOdkhCvMxJFd3WTtSChqYFQu2mz69/5tOsljDaL+4QYwnRR7O8M9wFsL3/9XMVcHdnC4Ija2VRxQ/lb+hHQ==} engines: {node: '>=18.20.0'} - '@webassemblyjs/ast@1.12.1': - resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} - - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - - '@webassemblyjs/helper-api-error@1.11.6': - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - - '@webassemblyjs/helper-buffer@1.12.1': - resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - - '@webassemblyjs/helper-numbers@1.11.6': - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - - '@webassemblyjs/helper-wasm-section@1.12.1': - resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} - - '@webassemblyjs/ieee754@1.11.6': - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - - '@webassemblyjs/leb128@1.11.6': - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - - '@webassemblyjs/utf8@1.11.6': - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - - '@webassemblyjs/wasm-edit@1.12.1': - resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} - - '@webassemblyjs/wasm-gen@1.12.1': - resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} - - '@webassemblyjs/wasm-opt@1.12.1': - resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} - - '@webassemblyjs/wasm-parser@1.12.1': - resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} - - '@webassemblyjs/wast-printer@1.12.1': - resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} - '@xmldom/xmldom@0.8.10': resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - '@zip.js/zip.js@2.7.52': resolution: {integrity: sha512-+5g7FQswvrCHwYKNMd/KFxZSObctLSsQOgqBSi0LzwHo3li9Eh1w5cF5ndjQw9Zbr3ajVnd2+XyiX85gAetx1Q==} engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=16.5.0'} @@ -1847,11 +1715,6 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2092,11 +1955,6 @@ packages: browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -2168,9 +2026,6 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - caniuse-lite@1.0.30001658: - resolution: {integrity: sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==} - chai@5.1.1: resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} engines: {node: '>=12'} @@ -2423,8 +2278,8 @@ packages: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} - cssstyle@4.0.1: - resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} + cssstyle@4.1.0: + resolution: {integrity: sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==} engines: {node: '>=18'} data-uri-to-buffer@4.0.1: @@ -2642,8 +2497,8 @@ packages: electron-publish@25.0.3: resolution: {integrity: sha512-wSGm+TFK2lArswIFBPLuIRHbo945s3MCvG5y1xVC57zL/PsrElUkaGH2ERtRrcKNpaDNq77rDA9JnMJhAFJjUg==} - electron-to-chromium@1.5.18: - resolution: {integrity: sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==} + electron-to-chromium@1.5.19: + resolution: {integrity: sha512-kpLJJi3zxTR1U828P+LIUDZ5ohixyo68/IcYOHLqnbTPr/wdgn4i1ECvmALN9E16JPA6cvCG5UG79gVwVdEK5w==} electron@32.0.2: resolution: {integrity: sha512-nmZblq8wW3HZ17MAyaUuiMI9Mb0Cgc7UR3To85h/rVopbfyF5s34NxtK4gvyRfYPxpDGP4k+HoQIPniPPrdE3w==} @@ -2701,9 +2556,6 @@ packages: es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} @@ -2795,10 +2647,6 @@ packages: resolution: {integrity: sha512-aCWjI3p1H+AFpiJhcybGMSXqtBUkoVbpZcYhDawb4JWFhHAF8J8bdyanPYvDLoyOKVN4zJ3AFb8G4qxKXq8qXA==} engines: {node: '>=18.20.0'} - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - eslint-scope@8.0.2: resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2838,10 +2686,6 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -3158,9 +3002,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true @@ -3186,12 +3027,6 @@ packages: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} - global-jsdom@24.0.0: - resolution: {integrity: sha512-CARBUWkqZ3O9VOc2PIVE5kQpdQeJh9eF9kQ7zSeNtmqx5vAFDKMr9XnDt1epVMMrz1s9uK/yFCa4HLwpa6TcPA==} - engines: {node: '>=18'} - peerDependencies: - jsdom: '>=24 <25' - global-modules@1.0.0: resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} engines: {node: '>=0.10.0'} @@ -3724,10 +3559,6 @@ packages: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3738,8 +3569,8 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdom@24.1.1: - resolution: {integrity: sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==} + jsdom@25.0.0: + resolution: {integrity: sha512-OhoFVT59T7aEq75TVw9xxEfkXgacpqAhQaYgP9y/fDqWQCMB/b1H66RfmPm/MaeaAIU9nDwMOVTlPN51+ao6CQ==} engines: {node: '>=18'} peerDependencies: canvas: ^2.11.2 @@ -3837,10 +3668,6 @@ packages: resolution: {integrity: sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==} engines: {node: '>=4'} - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - locate-app@2.4.39: resolution: {integrity: sha512-hl7NwJrpGKLlmVgNrMRxFLRJTjve6IIav08bnv4MQSjahFRUPPVp+R02PSYpll6wY/YZqMrha68uScTmRJeMeA==} @@ -4009,10 +3836,6 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -4146,9 +3969,6 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - netmask@2.0.2: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} @@ -4196,9 +4016,6 @@ packages: engines: {node: ^12.13 || ^14.13 || >=16} hasBin: true - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - nopt@6.0.0: resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -4497,9 +4314,6 @@ packages: picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} - picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -4811,9 +4625,6 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - rrweb-cssom@0.7.1: resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} @@ -4853,10 +4664,6 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - semver-compare@1.0.0: resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} @@ -5005,10 +4812,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - spacetrim@0.11.39: resolution: {integrity: sha512-S/baW29azJ7py5ausQRE2S6uEDQnlxgMHOEEq4V770ooBDD1/9kZnxRcco/tjZYuDuqYXblCk/r3N13ZmvHZ2g==} @@ -5186,24 +4989,8 @@ packages: temp-file@3.4.0: resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==} - terser-webpack-plugin@5.3.10: - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@5.31.6: - resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==} + terser@5.32.0: + resolution: {integrity: sha512-v3Gtw3IzpBJ0ugkxEX8U0W6+TnPKRRCWGh1jC/iM/e3Ki5+qvO1L1EAZ56bZasc64aXHwRHNIQEzm6//i5cemQ==} engines: {node: '>=10'} hasBin: true @@ -5239,6 +5026,10 @@ packages: resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} engines: {node: '>=14.0.0'} + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + tmp-promise@3.0.3: resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} @@ -5282,16 +5073,6 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-loader@9.5.1: - resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} - engines: {node: '>=12.0.0'} - peerDependencies: - typescript: '*' - webpack: ^5.0.0 - - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} @@ -5373,8 +5154,8 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} engines: {node: '>=14.17'} hasBin: true @@ -5419,12 +5200,6 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - update-notifier@7.1.0: resolution: {integrity: sha512-8SV3rIqVY6EFC1WxH6L0j55s0MO79MFBS1pivmInRJg3pCEDgWHBj1Q6XByTtCLOZIFA0f6zoG9ZWf2Ks9lvTA==} engines: {node: '>=18'} @@ -5533,10 +5308,6 @@ packages: engines: {node: '>=10'} hasBin: true - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -5564,20 +5335,6 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - - webpack@5.94.0: - resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -6399,7 +6156,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.16.1 + '@types/node': 20.16.5 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -6417,6 +6174,7 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + optional: true '@jridgewell/sourcemap-codec@1.5.0': {} @@ -6586,12 +6344,6 @@ snapshots: optionalDependencies: rollup: 4.21.2 - '@rollup/plugin-json@6.1.0(rollup@4.21.2)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) - optionalDependencies: - rollup: 4.21.2 - '@rollup/plugin-node-resolve@15.2.3(rollup@4.21.2)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.21.2) @@ -6603,11 +6355,11 @@ snapshots: optionalDependencies: rollup: 4.21.2 - '@rollup/plugin-typescript@11.1.6(rollup@4.21.2)(tslib@2.7.0)(typescript@5.5.4)': + '@rollup/plugin-typescript@11.1.6(rollup@4.21.2)(tslib@2.7.0)(typescript@5.6.2)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.21.2) resolve: 1.22.8 - typescript: 5.5.4 + typescript: 5.6.2 optionalDependencies: rollup: 4.21.2 tslib: 2.7.0 @@ -6716,7 +6468,7 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 20.16.1 + '@types/node': 20.16.5 '@types/responselike': 1.0.3 '@types/debug@4.1.12': @@ -6729,7 +6481,7 @@ snapshots: '@types/fs-extra@9.0.13': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.5 '@types/glob@7.2.0': dependencies: @@ -6748,11 +6500,9 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/json-schema@7.0.15': {} - '@types/keyv@3.1.4': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.5 '@types/minimatch@5.1.2': {} @@ -6762,7 +6512,7 @@ snapshots: '@types/mute-stream@0.0.4': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.5 '@types/node@20.16.1': dependencies: @@ -6780,7 +6530,7 @@ snapshots: '@types/plist@3.0.5': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.5 xmlbuilder: 15.1.1 optional: true @@ -6788,7 +6538,7 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.5 '@types/shelljs@0.8.15': dependencies: @@ -6808,7 +6558,7 @@ snapshots: '@types/ws@8.5.12': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.5 '@types/yargs-parser@21.0.3': {} @@ -6818,37 +6568,37 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.5 optional: true - '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0)(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.4.0(eslint@9.10.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/type-utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) - '@typescript-eslint/utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.4.0 + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.5.0 eslint: 9.10.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4)': + '@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2)': dependencies: - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.4.0 + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.5.0 debug: 4.3.7(supports-color@8.1.1) eslint: 9.10.0 optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -6857,21 +6607,28 @@ snapshots: '@typescript-eslint/types': 8.4.0 '@typescript-eslint/visitor-keys': 8.4.0 - '@typescript-eslint/type-utils@8.4.0(eslint@9.10.0)(typescript@5.5.4)': + '@typescript-eslint/scope-manager@8.5.0': dependencies: - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/visitor-keys': 8.5.0 + + '@typescript-eslint/type-utils@8.5.0(eslint@9.10.0)(typescript@5.6.2)': + dependencies: + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) debug: 4.3.7(supports-color@8.1.1) - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - eslint - supports-color '@typescript-eslint/types@8.4.0': {} - '@typescript-eslint/typescript-estree@8.4.0(typescript@5.5.4)': + '@typescript-eslint/types@8.5.0': {} + + '@typescript-eslint/typescript-estree@8.4.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 8.4.0 '@typescript-eslint/visitor-keys': 8.4.0 @@ -6880,18 +6637,44 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.4.0(eslint@9.10.0)(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.5.0(typescript@5.6.2)': + dependencies: + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/visitor-keys': 8.5.0 + debug: 4.3.7(supports-color@8.1.1) + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.4.0(eslint@9.10.0)(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) '@typescript-eslint/scope-manager': 8.4.0 '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.6.2) + eslint: 9.10.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@8.5.0(eslint@9.10.0)(typescript@5.6.2)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) eslint: 9.10.0 transitivePeerDependencies: - supports-color @@ -6902,7 +6685,12 @@ snapshots: '@typescript-eslint/types': 8.4.0 eslint-visitor-keys: 3.4.3 - '@vitest/coverage-v8@2.0.5(vitest@2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6))': + '@typescript-eslint/visitor-keys@8.5.0': + dependencies: + '@typescript-eslint/types': 8.5.0 + eslint-visitor-keys: 3.4.3 + + '@vitest/coverage-v8@2.0.5(vitest@2.0.5(@types/node@20.16.1)(jsdom@25.0.0)(terser@5.32.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -6916,17 +6704,17 @@ snapshots: std-env: 3.7.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6) + vitest: 2.0.5(@types/node@20.16.1)(jsdom@25.0.0)(terser@5.32.0) transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.1.0(@typescript-eslint/utils@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6))': + '@vitest/eslint-plugin@1.1.0(@typescript-eslint/utils@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0)(typescript@5.6.2)(vitest@2.0.5(@types/node@20.16.1)(jsdom@25.0.0)(terser@5.32.0))': dependencies: eslint: 9.10.0 optionalDependencies: - '@typescript-eslint/utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) - typescript: 5.5.4 - vitest: 2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + typescript: 5.6.2 + vitest: 2.0.5(@types/node@20.16.1)(jsdom@25.0.0)(terser@5.32.0) '@vitest/expect@2.0.5': dependencies: @@ -7111,88 +6899,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@webassemblyjs/ast@1.12.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - - '@webassemblyjs/floating-point-hex-parser@1.11.6': {} - - '@webassemblyjs/helper-api-error@1.11.6': {} - - '@webassemblyjs/helper-buffer@1.12.1': {} - - '@webassemblyjs/helper-numbers@1.11.6': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} - - '@webassemblyjs/helper-wasm-section@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.12.1 - - '@webassemblyjs/ieee754@1.11.6': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.11.6': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.11.6': {} - - '@webassemblyjs/wasm-edit@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-opt': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - '@webassemblyjs/wast-printer': 1.12.1 - - '@webassemblyjs/wasm-gen@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - - '@webassemblyjs/wasm-opt@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - - '@webassemblyjs/wasm-parser@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - - '@webassemblyjs/wast-printer@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@xtuc/long': 4.2.2 - '@xmldom/xmldom@0.8.10': {} - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - '@zip.js/zip.js@2.7.52': {} abbrev@1.1.1: {} @@ -7201,10 +6909,6 @@ snapshots: dependencies: event-target-shim: 5.0.1 - acorn-import-attributes@1.9.5(acorn@8.12.1): - dependencies: - acorn: 8.12.1 - acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 @@ -7508,13 +7212,6 @@ snapshots: browser-stdout@1.3.1: {} - browserslist@4.23.3: - dependencies: - caniuse-lite: 1.0.30001658 - electron-to-chromium: 1.5.18 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) - buffer-crc32@0.2.13: {} buffer-crc32@1.0.0: {} @@ -7628,8 +7325,6 @@ snapshots: camelcase@7.0.1: {} - caniuse-lite@1.0.30001658: {} - chai@5.1.1: dependencies: assertion-error: 2.0.1 @@ -7776,7 +7471,8 @@ snapshots: commander@12.1.0: {} - commander@2.20.3: {} + commander@2.20.3: + optional: true commander@4.1.1: {} @@ -7815,7 +7511,7 @@ snapshots: config-file-ts@0.2.8-rc1: dependencies: glob: 10.4.5 - typescript: 5.5.4 + typescript: 5.6.2 configstore@6.0.0: dependencies: @@ -7834,14 +7530,14 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig@9.0.0(typescript@5.5.4): + cosmiconfig@9.0.0(typescript@5.6.2): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 crc-32@1.2.2: {} @@ -7898,9 +7594,9 @@ snapshots: css-what@6.1.0: {} - cssstyle@4.0.1: + cssstyle@4.1.0: dependencies: - rrweb-cssom: 0.6.0 + rrweb-cssom: 0.7.1 data-uri-to-buffer@4.0.1: {} @@ -8148,7 +7844,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron-to-chromium@1.5.18: {} + electron-to-chromium@1.5.19: {} electron@32.0.2: dependencies: @@ -8213,8 +7909,6 @@ snapshots: isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - es-module-lexer@1.5.4: {} - es6-error@4.1.1: optional: true @@ -8301,38 +7995,38 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7(supports-color@8.1.1) enhanced-resolve: 5.17.1 eslint: 9.10.0 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0))(eslint@9.10.0) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0))(eslint@9.10.0) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import-x: 4.2.1(eslint@9.10.0)(typescript@5.5.4) + eslint-plugin-import-x: 4.2.1(eslint@9.10.0)(typescript@5.6.2) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0))(eslint@9.10.0): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0))(eslint@9.10.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.4.0(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0)(typescript@5.6.2) eslint: 9.10.0 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0) transitivePeerDependencies: - supports-color - eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.5.4): + eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.6.2): dependencies: - '@typescript-eslint/utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.10.0)(typescript@5.6.2) debug: 4.3.7(supports-color@8.1.1) doctrine: 3.0.0 eslint: 9.10.0 @@ -8349,11 +8043,6 @@ snapshots: eslint-plugin-wdio@9.0.8: {} - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - eslint-scope@8.0.2: dependencies: esrecurse: 4.3.0 @@ -8418,8 +8107,6 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} - estraverse@5.3.0: {} estree-walker@2.0.2: {} @@ -8806,8 +8493,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} - glob@10.4.5: dependencies: foreground-child: 3.3.0 @@ -8822,7 +8507,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.0.8 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 @@ -8857,10 +8542,6 @@ snapshots: dependencies: ini: 4.1.1 - global-jsdom@24.0.0(jsdom@24.1.1): - dependencies: - jsdom: 24.1.1 - global-modules@1.0.0: dependencies: global-prefix: 1.0.2 @@ -9384,18 +9065,12 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.16.1 + '@types/node': 20.16.5 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - jest-worker@27.5.1: - dependencies: - '@types/node': 20.16.5 - merge-stream: 2.0.0 - supports-color: 8.1.1 - js-tokens@4.0.0: {} js-yaml@4.1.0: @@ -9404,9 +9079,9 @@ snapshots: jsbn@1.1.0: {} - jsdom@24.1.1: + jsdom@25.0.0: dependencies: - cssstyle: 4.0.1 + cssstyle: 4.1.0 data-urls: 5.0.0 decimal.js: 10.4.3 form-data: 4.0.0 @@ -9536,8 +9211,6 @@ snapshots: pify: 2.3.0 strip-bom: 3.0.0 - loader-runner@4.3.0: {} - locate-app@2.4.39: dependencies: '@promptbook/utils': 0.70.0-1 @@ -9708,11 +9381,6 @@ snapshots: merge2@1.4.1: {} - micromatch@4.0.7: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -9836,8 +9504,6 @@ snapshots: negotiator@0.6.3: {} - neo-async@2.6.2: {} - netmask@2.0.2: {} new-github-release-url@2.0.0: @@ -9894,8 +9560,6 @@ snapshots: - bluebird - supports-color - node-releases@2.0.18: {} - nopt@6.0.0: dependencies: abbrev: 1.1.1 @@ -10201,8 +9865,6 @@ snapshots: picocolors@1.0.1: {} - picocolors@1.1.0: {} - picomatch@2.3.1: {} pidtree@0.6.0: {} @@ -10437,13 +10099,13 @@ snapshots: dependencies: rc: 1.2.8 - release-it@17.6.0(typescript@5.5.4): + release-it@17.6.0(typescript@5.6.2): dependencies: '@iarna/toml': 2.2.5 '@octokit/rest': 20.1.1 async-retry: 1.3.3 chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.5.4) + cosmiconfig: 9.0.0(typescript@5.6.2) execa: 8.0.1 git-url-parse: 14.0.0 globby: 14.0.2 @@ -10575,8 +10237,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.21.2 fsevents: 2.3.3 - rrweb-cssom@0.6.0: {} - rrweb-cssom@0.7.1: {} run-applescript@7.0.0: {} @@ -10589,7 +10249,7 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.6.3 + tslib: 2.7.0 safaridriver@0.1.2: {} @@ -10609,18 +10269,12 @@ snapshots: dependencies: xmlchars: 2.2.0 - schema-utils@3.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - semver-compare@1.0.0: optional: true semver-diff@4.0.0: dependencies: - semver: 7.6.2 + semver: 7.6.3 semver-regex@4.0.5: {} @@ -10766,8 +10420,6 @@ snapshots: source-map@0.6.1: {} - source-map@0.7.4: {} - spacetrim@0.11.39: {} spdx-correct@3.2.0: @@ -10945,21 +10597,13 @@ snapshots: async-exit-hook: 2.0.1 fs-extra: 10.1.0 - terser-webpack-plugin@5.3.10(webpack@5.94.0): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.31.6 - webpack: 5.94.0 - - terser@5.31.6: + terser@5.32.0: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 + optional: true test-exclude@7.0.1: dependencies: @@ -10987,6 +10631,8 @@ snapshots: tinyspy@3.0.0: {} + tinyspy@3.0.2: {} + tmp-promise@3.0.3: dependencies: tmp: 0.2.3 @@ -11024,21 +10670,9 @@ snapshots: dependencies: utf8-byte-length: 1.0.5 - ts-api-utils@1.3.0(typescript@5.5.4): + ts-api-utils@1.3.0(typescript@5.6.2): dependencies: - typescript: 5.5.4 - - ts-loader@9.5.1(typescript@5.5.4)(webpack@5.94.0): - dependencies: - chalk: 4.1.2 - enhanced-resolve: 5.17.1 - micromatch: 4.0.7 - semver: 7.6.3 - source-map: 0.7.4 - typescript: 5.5.4 - webpack: 5.94.0 - - tslib@2.6.3: {} + typescript: 5.6.2 tslib@2.7.0: {} @@ -11101,7 +10735,7 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript@5.5.4: {} + typescript@5.6.2: {} unbzip2-stream@1.4.3: dependencies: @@ -11134,12 +10768,6 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.1.0(browserslist@4.23.3): - dependencies: - browserslist: 4.23.3 - escalade: 3.2.0 - picocolors: 1.1.0 - update-notifier@7.1.0: dependencies: boxen: 7.1.1 @@ -11151,7 +10779,7 @@ snapshots: is-npm: 6.0.0 latest-version: 9.0.0 pupa: 3.1.0 - semver: 7.6.2 + semver: 7.6.3 semver-diff: 4.0.0 xdg-basedir: 5.1.0 @@ -11191,13 +10819,13 @@ snapshots: extsprintf: 1.4.1 optional: true - vite-node@2.0.5(@types/node@20.16.1)(terser@5.31.6): + vite-node@2.0.5(@types/node@20.16.1)(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.3.7(supports-color@8.1.1) pathe: 1.1.2 tinyrainbow: 1.2.0 - vite: 5.4.2(@types/node@20.16.1)(terser@5.31.6) + vite: 5.4.2(@types/node@20.16.1)(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -11209,7 +10837,7 @@ snapshots: - supports-color - terser - vite@5.4.2(@types/node@20.16.1)(terser@5.31.6): + vite@5.4.2(@types/node@20.16.1)(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.41 @@ -11217,9 +10845,9 @@ snapshots: optionalDependencies: '@types/node': 20.16.1 fsevents: 2.3.3 - terser: 5.31.6 + terser: 5.32.0 - vitest@2.0.5(@types/node@20.16.1)(jsdom@24.1.1)(terser@5.31.6): + vitest@2.0.5(@types/node@20.16.1)(jsdom@25.0.0)(terser@5.32.0): dependencies: '@ampproject/remapping': 2.3.0 '@vitest/expect': 2.0.5 @@ -11237,12 +10865,12 @@ snapshots: tinybench: 2.9.0 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.2(@types/node@20.16.1)(terser@5.31.6) - vite-node: 2.0.5(@types/node@20.16.1)(terser@5.31.6) + vite: 5.4.2(@types/node@20.16.1)(terser@5.32.0) + vite-node: 2.0.5(@types/node@20.16.1)(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.16.1 - jsdom: 24.1.1 + jsdom: 25.0.0 transitivePeerDependencies: - less - lightningcss @@ -11265,11 +10893,6 @@ snapshots: transitivePeerDependencies: - supports-color - watchpack@2.4.2: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - wcwidth@1.0.1: dependencies: defaults: 1.0.4 @@ -11330,38 +10953,6 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-sources@3.2.3: {} - - webpack@5.94.0: - dependencies: - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.23.3 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.94.0) - watchpack: 2.4.2 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 From 8024a078447ad2ca8c86c946a0468dad19328923 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:04:51 +0100 Subject: [PATCH 38/52] chore: specify correct rollup config --- e2e/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/package.json b/e2e/package.json index f5d74873..c41fbfc8 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -6,7 +6,7 @@ "scripts": { "ci": "pnpm i && pnpm test", "clean": "pnpm dlx shx rm -rf ./js ./node_modules pnpm-lock.yaml ./wdio-logs* ./out", - "init-e2es": "pnpm dlx shx mkdir -p ./js && rollup -c", + "init-e2es": "pnpm dlx shx mkdir -p ./js && rollup -c rollup.config.js", "logs": "pnpm dlx shx cat ./wdio-logs*/*.log", "test:e2e:forge-cjs": "cross-env EXAMPLE_DIR=forge-cjs pnpm run exec", "test:e2e:forge-esm": "cross-env EXAMPLE_DIR=forge-esm pnpm run exec", From b0df116212c18b0b8703fbc3142ac829bb0265c2 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:06:37 +0100 Subject: [PATCH 39/52] chore: standardise tsconfig --- apps/builder-esm/package.json | 2 +- apps/builder-esm/tsconfig.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/builder-esm/package.json b/apps/builder-esm/package.json index c4485bb9..189884ff 100644 --- a/apps/builder-esm/package.json +++ b/apps/builder-esm/package.json @@ -7,7 +7,7 @@ "type": "module", "scripts": { "build": "pnpm build:bundle && pnpm build:package", - "build:bundle": "tsc --outDir dist", + "build:bundle": "tsc", "build:package": "cp ./src/index.html ./dist && electron-builder -p never", "build:package:mac-universal": "cp ./src/index.html ./dist && electron-builder -p never -m --universal", "build:mac-universal": "pnpm build:bundle && pnpm build:package:mac-universal", diff --git a/apps/builder-esm/tsconfig.json b/apps/builder-esm/tsconfig.json index 116325c2..744146b6 100644 --- a/apps/builder-esm/tsconfig.json +++ b/apps/builder-esm/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "target": "ESNext", "types": ["node"], - "typeRoots": ["./node_modules", "./node_modules/@types", "../../@types"] + "typeRoots": ["./node_modules", "./node_modules/@types", "../../@types"], + "outDir": "dist" }, "include": ["src/*.ts", "src/preload.cts"], "exclude": ["node_modules"] From 6254ef28dc20bb6e990ccf349affd33a698cf95f Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:07:12 +0100 Subject: [PATCH 40/52] chore: update ES version --- packages/@wdio_electron-utils/tsconfig.cjs.json | 2 +- packages/wdio-electron-service/tsconfig.cjs.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@wdio_electron-utils/tsconfig.cjs.json b/packages/@wdio_electron-utils/tsconfig.cjs.json index 911fa393..66517f86 100644 --- a/packages/@wdio_electron-utils/tsconfig.cjs.json +++ b/packages/@wdio_electron-utils/tsconfig.cjs.json @@ -3,6 +3,6 @@ "include": ["./src/cjs/*.ts", "./src/cjs/package.json"], "compilerOptions": { "outDir": "./dist/cjs", - "target": "ES2022" + "target": "ES2023" } } diff --git a/packages/wdio-electron-service/tsconfig.cjs.json b/packages/wdio-electron-service/tsconfig.cjs.json index 367fa1e1..f9e20962 100644 --- a/packages/wdio-electron-service/tsconfig.cjs.json +++ b/packages/wdio-electron-service/tsconfig.cjs.json @@ -4,6 +4,6 @@ "exclude": ["src/*.ts", "src/commands/*.ts", "node_modules", "coverage", "dist", "test"], "compilerOptions": { "rootDir": "src/cjs", - "target": "ES2022" + "target": "ES2023" } } From c6acaf87ade28dad0d885226f4da2653049feb3c Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:10:19 +0100 Subject: [PATCH 41/52] chore: add extension to import --- apps/forge-cjs/src/main.ts | 2 +- apps/forge-cjs/src/preload.ts | 2 +- apps/no-binary-cjs/src/main.ts | 2 +- apps/no-binary-cjs/src/preload.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/forge-cjs/src/main.ts b/apps/forge-cjs/src/main.ts index ce73cb03..e47f9dda 100644 --- a/apps/forge-cjs/src/main.ts +++ b/apps/forge-cjs/src/main.ts @@ -1,5 +1,5 @@ import { app, BrowserWindow, ipcMain } from 'electron'; -import { isTest } from './util'; +import { isTest } from './util.js'; if (isTest) { require('wdio-electron-service/main'); diff --git a/apps/forge-cjs/src/preload.ts b/apps/forge-cjs/src/preload.ts index cef0cb62..5b7b4321 100644 --- a/apps/forge-cjs/src/preload.ts +++ b/apps/forge-cjs/src/preload.ts @@ -1,5 +1,5 @@ import { contextBridge, ipcRenderer } from 'electron'; -import { isTest } from './util'; +import { isTest } from './util.js'; if (isTest) { require('wdio-electron-service/preload'); diff --git a/apps/no-binary-cjs/src/main.ts b/apps/no-binary-cjs/src/main.ts index d8ae5a7e..cc197637 100644 --- a/apps/no-binary-cjs/src/main.ts +++ b/apps/no-binary-cjs/src/main.ts @@ -1,5 +1,5 @@ import { app, BrowserWindow, ipcMain } from 'electron'; -import { isTest } from './util'; +import { isTest } from './util.js'; if (isTest) { require('wdio-electron-service/main'); diff --git a/apps/no-binary-cjs/src/preload.ts b/apps/no-binary-cjs/src/preload.ts index cef0cb62..5b7b4321 100644 --- a/apps/no-binary-cjs/src/preload.ts +++ b/apps/no-binary-cjs/src/preload.ts @@ -1,5 +1,5 @@ import { contextBridge, ipcRenderer } from 'electron'; -import { isTest } from './util'; +import { isTest } from './util.js'; if (isTest) { require('wdio-electron-service/preload'); From 6c2d763c0f4ddd9e1345926090f463fc834455c1 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:11:34 +0100 Subject: [PATCH 42/52] chore: remove unused template str --- e2e/wdio.conf.js | 2 +- e2e/wdio.conf.ts | 2 +- e2e/wdio.no-binary.conf.js | 2 +- e2e/wdio.no-binary.conf.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/e2e/wdio.conf.js b/e2e/wdio.conf.js index 2a6d99b8..a853997b 100644 --- a/e2e/wdio.conf.js +++ b/e2e/wdio.conf.js @@ -34,7 +34,7 @@ export const config = { logLevel: 'debug', runner: 'local', outputDir: `wdio-logs-${exampleDir}`, - specs: [`./js/*.spec.js`], + specs: ['./js/*.spec.js'], framework: 'mocha', mochaOpts: { ui: 'bdd', diff --git a/e2e/wdio.conf.ts b/e2e/wdio.conf.ts index 861f7574..ed6d4d17 100644 --- a/e2e/wdio.conf.ts +++ b/e2e/wdio.conf.ts @@ -37,7 +37,7 @@ export const config: Options.Testrunner = { logLevel: 'debug', runner: 'local', outputDir: `wdio-logs-${exampleDir}`, - specs: [`./*.spec.ts`], + specs: ['./*.spec.ts'], tsConfigPath: path.join(__dirname, 'tsconfig.json'), framework: 'mocha', mochaOpts: { diff --git a/e2e/wdio.no-binary.conf.js b/e2e/wdio.no-binary.conf.js index 8f3cbaec..0f487313 100644 --- a/e2e/wdio.no-binary.conf.js +++ b/e2e/wdio.no-binary.conf.js @@ -34,7 +34,7 @@ export const config = { logLevel: 'debug', runner: 'local', outputDir: `wdio-logs-${exampleDir}`, - specs: [`./js/*.spec.js`], + specs: ['./js/*.spec.js'], framework: 'mocha', mochaOpts: { ui: 'bdd', diff --git a/e2e/wdio.no-binary.conf.ts b/e2e/wdio.no-binary.conf.ts index a2200aef..4baa8b9c 100644 --- a/e2e/wdio.no-binary.conf.ts +++ b/e2e/wdio.no-binary.conf.ts @@ -37,7 +37,7 @@ export const config: Options.Testrunner = { logLevel: 'debug', runner: 'local', outputDir: `wdio-logs-${exampleDir}`, - specs: [`./*.spec.ts`], + specs: ['./*.spec.ts'], tsConfigPath: path.join(__dirname, 'tsconfig.json'), framework: 'mocha', mochaOpts: { From 16bfd5bad9d61da50464c57ff709c031bcf5d6e8 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:20:36 +0100 Subject: [PATCH 43/52] refactor: standardise preloads for ESM examples --- apps/builder-esm/src/preload.cts | 9 ++++----- apps/forge-esm/src/preload.cts | 19 +++++++++++++++++++ apps/forge-esm/src/preload.ts | 15 --------------- apps/forge-esm/tsconfig.json | 2 +- apps/no-binary-esm/src/preload.cts | 19 +++++++++++++++++++ apps/no-binary-esm/src/preload.ts | 15 --------------- apps/no-binary-esm/tsconfig.json | 2 +- 7 files changed, 44 insertions(+), 37 deletions(-) create mode 100644 apps/forge-esm/src/preload.cts delete mode 100644 apps/forge-esm/src/preload.ts create mode 100644 apps/no-binary-esm/src/preload.cts delete mode 100644 apps/no-binary-esm/src/preload.ts diff --git a/apps/builder-esm/src/preload.cts b/apps/builder-esm/src/preload.cts index bffba8d4..b8a8be1d 100644 --- a/apps/builder-esm/src/preload.cts +++ b/apps/builder-esm/src/preload.cts @@ -1,10 +1,11 @@ import { contextBridge, ipcRenderer } from 'electron'; -async function init() { +(async () => { + // util.js is an ESM module so we need to use dynamic import const { isTest } = await import('./util.js'); if (isTest) { - import('wdio-electron-service/preload'); + require('wdio-electron-service/preload'); } const validChannels = ['increase-window-size', 'decrease-window-size']; @@ -15,6 +16,4 @@ async function init() { contextBridge.exposeInMainWorld('api', { invoke, }); -} - -init(); +})(); diff --git a/apps/forge-esm/src/preload.cts b/apps/forge-esm/src/preload.cts new file mode 100644 index 00000000..b8a8be1d --- /dev/null +++ b/apps/forge-esm/src/preload.cts @@ -0,0 +1,19 @@ +import { contextBridge, ipcRenderer } from 'electron'; + +(async () => { + // util.js is an ESM module so we need to use dynamic import + const { isTest } = await import('./util.js'); + + if (isTest) { + require('wdio-electron-service/preload'); + } + + const validChannels = ['increase-window-size', 'decrease-window-size']; + + const invoke = (channel: string, ...data: unknown[]) => + validChannels.includes(channel) ? ipcRenderer.invoke(channel, data) : Promise.reject(); + + contextBridge.exposeInMainWorld('api', { + invoke, + }); +})(); diff --git a/apps/forge-esm/src/preload.ts b/apps/forge-esm/src/preload.ts deleted file mode 100644 index f26f1b3b..00000000 --- a/apps/forge-esm/src/preload.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { contextBridge, ipcRenderer } from 'electron'; -import { isTest } from './util.js'; - -if (isTest) { - import('wdio-electron-service/preload'); -} - -const validChannels = ['increase-window-size', 'decrease-window-size']; - -const invoke = (channel: string, ...data: unknown[]) => - validChannels.includes(channel) ? ipcRenderer.invoke(channel, data) : Promise.reject(); - -contextBridge.exposeInMainWorld('api', { - invoke, -}); diff --git a/apps/forge-esm/tsconfig.json b/apps/forge-esm/tsconfig.json index 2fd95501..b390bb1f 100644 --- a/apps/forge-esm/tsconfig.json +++ b/apps/forge-esm/tsconfig.json @@ -7,5 +7,5 @@ "outDir": "dist" }, "exclude": ["node_modules"], - "include": ["src/*.ts"] + "include": ["src/*.{cts,ts}"] } diff --git a/apps/no-binary-esm/src/preload.cts b/apps/no-binary-esm/src/preload.cts new file mode 100644 index 00000000..b8a8be1d --- /dev/null +++ b/apps/no-binary-esm/src/preload.cts @@ -0,0 +1,19 @@ +import { contextBridge, ipcRenderer } from 'electron'; + +(async () => { + // util.js is an ESM module so we need to use dynamic import + const { isTest } = await import('./util.js'); + + if (isTest) { + require('wdio-electron-service/preload'); + } + + const validChannels = ['increase-window-size', 'decrease-window-size']; + + const invoke = (channel: string, ...data: unknown[]) => + validChannels.includes(channel) ? ipcRenderer.invoke(channel, data) : Promise.reject(); + + contextBridge.exposeInMainWorld('api', { + invoke, + }); +})(); diff --git a/apps/no-binary-esm/src/preload.ts b/apps/no-binary-esm/src/preload.ts deleted file mode 100644 index f26f1b3b..00000000 --- a/apps/no-binary-esm/src/preload.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { contextBridge, ipcRenderer } from 'electron'; -import { isTest } from './util.js'; - -if (isTest) { - import('wdio-electron-service/preload'); -} - -const validChannels = ['increase-window-size', 'decrease-window-size']; - -const invoke = (channel: string, ...data: unknown[]) => - validChannels.includes(channel) ? ipcRenderer.invoke(channel, data) : Promise.reject(); - -contextBridge.exposeInMainWorld('api', { - invoke, -}); diff --git a/apps/no-binary-esm/tsconfig.json b/apps/no-binary-esm/tsconfig.json index 2fd95501..b390bb1f 100644 --- a/apps/no-binary-esm/tsconfig.json +++ b/apps/no-binary-esm/tsconfig.json @@ -7,5 +7,5 @@ "outDir": "dist" }, "exclude": ["node_modules"], - "include": ["src/*.ts"] + "include": ["src/*.{cts,ts}"] } From 8bddfe777f09dbfc4450f76665192fc8004f45dd Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:22:01 +0100 Subject: [PATCH 44/52] refactor: instantiate plugins once --- apps/forge-esm/rollup.config.js | 9 ++++++--- apps/no-binary-cjs/rollup.config.mjs | 7 +++++-- apps/no-binary-esm/rollup.config.js | 9 ++++++--- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/apps/forge-esm/rollup.config.js b/apps/forge-esm/rollup.config.js index 8c056970..a7e45e02 100644 --- a/apps/forge-esm/rollup.config.js +++ b/apps/forge-esm/rollup.config.js @@ -2,15 +2,18 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import { defineConfig } from 'rollup'; +const nodeResolvePlugin = nodeResolve(); +const commonjsPlugin = commonjs(); + export default defineConfig([ { - input: 'dist/preload.js', + input: 'dist/preload.cjs', output: { file: 'dist/preload.bundle.cjs', inlineDynamicImports: true, format: 'cjs', }, - plugins: [nodeResolve(), commonjs()], + plugins: [nodeResolvePlugin, commonjsPlugin], external: ['electron'], }, { @@ -20,7 +23,7 @@ export default defineConfig([ inlineDynamicImports: true, format: 'esm', }, - plugins: [nodeResolve()], + plugins: [nodeResolvePlugin], external: ['electron'], }, ]); diff --git a/apps/no-binary-cjs/rollup.config.mjs b/apps/no-binary-cjs/rollup.config.mjs index 4f9875b7..d370037c 100644 --- a/apps/no-binary-cjs/rollup.config.mjs +++ b/apps/no-binary-cjs/rollup.config.mjs @@ -2,6 +2,9 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import { defineConfig } from 'rollup'; +const nodeResolvePlugin = nodeResolve(); +const commonjsPlugin = commonjs(); + export default defineConfig([ { input: 'dist/preload.js', @@ -10,7 +13,7 @@ export default defineConfig([ inlineDynamicImports: true, format: 'cjs', }, - plugins: [nodeResolve(), commonjs()], + plugins: [nodeResolvePlugin, commonjsPlugin], external: ['electron'], }, { @@ -20,7 +23,7 @@ export default defineConfig([ inlineDynamicImports: true, format: 'cjs', }, - plugins: [nodeResolve(), commonjs()], + plugins: [nodeResolvePlugin, commonjsPlugin], external: ['electron'], }, ]); diff --git a/apps/no-binary-esm/rollup.config.js b/apps/no-binary-esm/rollup.config.js index 8c056970..a7e45e02 100644 --- a/apps/no-binary-esm/rollup.config.js +++ b/apps/no-binary-esm/rollup.config.js @@ -2,15 +2,18 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import { defineConfig } from 'rollup'; +const nodeResolvePlugin = nodeResolve(); +const commonjsPlugin = commonjs(); + export default defineConfig([ { - input: 'dist/preload.js', + input: 'dist/preload.cjs', output: { file: 'dist/preload.bundle.cjs', inlineDynamicImports: true, format: 'cjs', }, - plugins: [nodeResolve(), commonjs()], + plugins: [nodeResolvePlugin, commonjsPlugin], external: ['electron'], }, { @@ -20,7 +23,7 @@ export default defineConfig([ inlineDynamicImports: true, format: 'esm', }, - plugins: [nodeResolve()], + plugins: [nodeResolvePlugin], external: ['electron'], }, ]); From 4895655b3ef331f25b4752f2f4298c1f228c1111 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:22:32 +0100 Subject: [PATCH 45/52] chore: rename plugin import --- e2e/rollup.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/rollup.config.js b/e2e/rollup.config.js index b52cc877..fafedb62 100644 --- a/e2e/rollup.config.js +++ b/e2e/rollup.config.js @@ -1,7 +1,7 @@ -import typescript from '@rollup/plugin-typescript'; +import rollupTS from '@rollup/plugin-typescript'; import { defineConfig } from 'rollup'; -const tsPlugin = typescript({ tsconfig: 'tsconfig.json' }); +const tsPlugin = rollupTS({ tsconfig: 'tsconfig.json' }); export default defineConfig([ { From 7cfe7aa0640b231d18b961e92e41009615e656e9 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:23:29 +0100 Subject: [PATCH 46/52] chore: use top level await --- apps/forge-esm/src/main.ts | 3 +-- apps/no-binary-esm/src/main.ts | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/forge-esm/src/main.ts b/apps/forge-esm/src/main.ts index 84dcd65f..25532c99 100644 --- a/apps/forge-esm/src/main.ts +++ b/apps/forge-esm/src/main.ts @@ -2,11 +2,10 @@ import { app, BrowserWindow, ipcMain } from 'electron'; import { isTest } from './util.js'; if (isTest) { - import('wdio-electron-service/main'); + await import('wdio-electron-service/main'); } const appPath = app.getAppPath(); - const appRootPath = `${appPath}/dist`; let mainWindow: BrowserWindow; diff --git a/apps/no-binary-esm/src/main.ts b/apps/no-binary-esm/src/main.ts index 1d08f31a..d041896f 100644 --- a/apps/no-binary-esm/src/main.ts +++ b/apps/no-binary-esm/src/main.ts @@ -2,7 +2,7 @@ import { app, BrowserWindow, ipcMain } from 'electron'; import { isTest } from './util.js'; if (isTest) { - import('wdio-electron-service/main'); + await import('wdio-electron-service/main'); } const appPath = app.getAppPath(); From fc3159ff4c3ac687c74d88665b4710422236be37 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:24:00 +0100 Subject: [PATCH 47/52] chore: improve verbiage --- e2e/api.spec.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/e2e/api.spec.ts b/e2e/api.spec.ts index 7955d270..60286ddf 100644 --- a/e2e/api.spec.ts +++ b/e2e/api.spec.ts @@ -284,21 +284,21 @@ describe('execute', () => { it('should handle executing a function which declares a function', async () => { expect( await browser.execute(() => { - function newFunc() { - return 'boom!'; + function innerFunc() { + return 'executed inner function'; } - return newFunc(); + return innerFunc(); }), - ).toEqual('boom!'); + ).toEqual('executed inner function'); }); - it('should handle executing a function which declares a fat arrow function', async () => { + it('should handle executing a function which declares an arrow function', async () => { expect( await browser.execute(() => { - const newFunc = () => 'boom!'; - return newFunc(); + const innerFunc = () => 'executed inner function'; + return innerFunc(); }), - ).toEqual('boom!'); + ).toEqual('executed inner function'); }); }); From 9102cd38a18223a95835ccbe1dec337a4683fa54 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:27:18 +0100 Subject: [PATCH 48/52] chore: update lockfile --- pnpm-lock.yaml | 49 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d7c0d8a..bc0a6f21 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,9 +53,6 @@ importers: husky: specifier: ^9.1.5 version: 9.1.5 - jsdom: - specifier: ^25.0.0 - version: 25.0.0 lint-staged: specifier: ^15.2.10 version: 15.2.10 @@ -7597,6 +7594,7 @@ snapshots: cssstyle@4.1.0: dependencies: rrweb-cssom: 0.7.1 + optional: true data-uri-to-buffer@4.0.1: {} @@ -7606,6 +7604,7 @@ snapshots: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 + optional: true debug@2.6.9: dependencies: @@ -7629,7 +7628,8 @@ snapshots: decamelize@6.0.0: {} - decimal.js@10.4.3: {} + decimal.js@10.4.3: + optional: true decompress-response@6.0.0: dependencies: @@ -8664,6 +8664,7 @@ snapshots: html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 + optional: true html-escaper@2.0.2: {} @@ -8922,7 +8923,8 @@ snapshots: is-plain-obj@4.1.0: {} - is-potential-custom-element-name@1.0.1: {} + is-potential-custom-element-name@1.0.1: + optional: true is-reference@1.2.1: dependencies: @@ -9106,6 +9108,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true json-buffer@3.0.1: {} @@ -9606,7 +9609,8 @@ snapshots: dependencies: boolbase: 1.0.0 - nwsapi@2.2.12: {} + nwsapi@2.2.12: + optional: true object-inspect@1.13.2: {} @@ -9947,7 +9951,8 @@ snapshots: proxy-from-env@1.1.0: {} - psl@1.9.0: {} + psl@1.9.0: + optional: true pump@3.0.0: dependencies: @@ -9962,7 +9967,8 @@ snapshots: query-selector-shadow-dom@1.0.1: {} - querystringify@2.2.0: {} + querystringify@2.2.0: + optional: true queue-microtask@1.2.3: {} @@ -10133,7 +10139,8 @@ snapshots: require-directory@2.1.1: {} - requires-port@1.0.0: {} + requires-port@1.0.0: + optional: true resedit@1.7.1: dependencies: @@ -10237,7 +10244,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.21.2 fsevents: 2.3.3 - rrweb-cssom@0.7.1: {} + rrweb-cssom@0.7.1: + optional: true run-applescript@7.0.0: {} @@ -10268,6 +10276,7 @@ snapshots: saxes@6.0.0: dependencies: xmlchars: 2.2.0 + optional: true semver-compare@1.0.0: optional: true @@ -10557,7 +10566,8 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - symbol-tree@3.2.4: {} + symbol-tree@3.2.4: + optional: true tapable@2.2.1: {} @@ -10655,12 +10665,14 @@ snapshots: punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 + optional: true tr46@0.0.3: {} tr46@5.0.0: dependencies: punycode: 2.3.1 + optional: true trim-repeated@1.0.0: dependencies: @@ -10764,7 +10776,8 @@ snapshots: universalify@0.1.2: {} - universalify@0.2.0: {} + universalify@0.2.0: + optional: true universalify@2.0.1: {} @@ -10793,6 +10806,7 @@ snapshots: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 + optional: true urlpattern-polyfill@10.0.0: {} @@ -10884,6 +10898,7 @@ snapshots: w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 + optional: true wait-port@1.1.0: dependencies: @@ -10951,7 +10966,8 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} + webidl-conversions@7.0.0: + optional: true whatwg-encoding@3.1.1: dependencies: @@ -10963,6 +10979,7 @@ snapshots: dependencies: tr46: 5.0.0 webidl-conversions: 7.0.0 + optional: true whatwg-url@5.0.0: dependencies: @@ -11064,11 +11081,13 @@ snapshots: xdg-basedir@5.1.0: {} - xml-name-validator@5.0.0: {} + xml-name-validator@5.0.0: + optional: true xmlbuilder@15.1.1: {} - xmlchars@2.2.0: {} + xmlchars@2.2.0: + optional: true xvfb-maybe@0.2.1: dependencies: From c99d3cf18f54e96057693f17ec69408f98e6ba77 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 14:31:18 +0100 Subject: [PATCH 49/52] chore: fix include --- apps/forge-esm/tsconfig.json | 2 +- apps/no-binary-esm/tsconfig.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/forge-esm/tsconfig.json b/apps/forge-esm/tsconfig.json index b390bb1f..aab29c2f 100644 --- a/apps/forge-esm/tsconfig.json +++ b/apps/forge-esm/tsconfig.json @@ -7,5 +7,5 @@ "outDir": "dist" }, "exclude": ["node_modules"], - "include": ["src/*.{cts,ts}"] + "include": ["src/*.ts", "src/preload.cts"] } diff --git a/apps/no-binary-esm/tsconfig.json b/apps/no-binary-esm/tsconfig.json index b390bb1f..aab29c2f 100644 --- a/apps/no-binary-esm/tsconfig.json +++ b/apps/no-binary-esm/tsconfig.json @@ -7,5 +7,5 @@ "outDir": "dist" }, "exclude": ["node_modules"], - "include": ["src/*.{cts,ts}"] + "include": ["src/*.ts", "src/preload.cts"] } From 700b2ba3c93fc551316c5491181ec05a71ea0189 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 15:10:45 +0100 Subject: [PATCH 50/52] chore: slim down tsconfigs --- apps/builder-cjs/tsconfig.json | 3 +-- apps/builder-esm/tsconfig.json | 3 +-- apps/forge-cjs/tsconfig.json | 2 -- apps/forge-esm/tsconfig.json | 3 +-- apps/no-binary-cjs/tsconfig.json | 2 -- apps/no-binary-esm/tsconfig.json | 3 +-- e2e/tsconfig.json | 1 - packages/@wdio_electron-types/tsconfig.json | 3 --- packages/@wdio_electron-utils/tsconfig.cjs.json | 3 +-- packages/@wdio_electron-utils/tsconfig.json | 3 --- packages/wdio-electron-service/tsconfig.cjs.json | 3 +-- packages/wdio-electron-service/tsconfig.json | 12 +----------- 12 files changed, 7 insertions(+), 34 deletions(-) diff --git a/apps/builder-cjs/tsconfig.json b/apps/builder-cjs/tsconfig.json index 11867b21..6bbf6ce2 100644 --- a/apps/builder-cjs/tsconfig.json +++ b/apps/builder-cjs/tsconfig.json @@ -1,8 +1,7 @@ { "extends": "../../tsconfig.base.cjs.json", "compilerOptions": { - "target": "ESNext", - "types": ["node"], + "types": [], "typeRoots": ["./node_modules", "./node_modules/@types", "../../@types"], "outDir": "dist" }, diff --git a/apps/builder-esm/tsconfig.json b/apps/builder-esm/tsconfig.json index 744146b6..47541063 100644 --- a/apps/builder-esm/tsconfig.json +++ b/apps/builder-esm/tsconfig.json @@ -1,8 +1,7 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "target": "ESNext", - "types": ["node"], + "types": [], "typeRoots": ["./node_modules", "./node_modules/@types", "../../@types"], "outDir": "dist" }, diff --git a/apps/forge-cjs/tsconfig.json b/apps/forge-cjs/tsconfig.json index 4c74099b..2b2b036f 100644 --- a/apps/forge-cjs/tsconfig.json +++ b/apps/forge-cjs/tsconfig.json @@ -1,8 +1,6 @@ { "extends": "../../tsconfig.base.cjs.json", "compilerOptions": { - "target": "ES2023", - "baseUrl": ".", "types": [], "typeRoots": ["./node_modules", "./node_modules/@types", "../../node_modules/@types", "../../@types"], "outDir": "dist" diff --git a/apps/forge-esm/tsconfig.json b/apps/forge-esm/tsconfig.json index aab29c2f..d378ab0c 100644 --- a/apps/forge-esm/tsconfig.json +++ b/apps/forge-esm/tsconfig.json @@ -1,8 +1,7 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "target": "ESNext", - "types": ["node"], + "types": [], "typeRoots": ["./node_modules", "./node_modules/@types", "../../node_modules/@types", "../../@types"], "outDir": "dist" }, diff --git a/apps/no-binary-cjs/tsconfig.json b/apps/no-binary-cjs/tsconfig.json index 4c74099b..2b2b036f 100644 --- a/apps/no-binary-cjs/tsconfig.json +++ b/apps/no-binary-cjs/tsconfig.json @@ -1,8 +1,6 @@ { "extends": "../../tsconfig.base.cjs.json", "compilerOptions": { - "target": "ES2023", - "baseUrl": ".", "types": [], "typeRoots": ["./node_modules", "./node_modules/@types", "../../node_modules/@types", "../../@types"], "outDir": "dist" diff --git a/apps/no-binary-esm/tsconfig.json b/apps/no-binary-esm/tsconfig.json index aab29c2f..d378ab0c 100644 --- a/apps/no-binary-esm/tsconfig.json +++ b/apps/no-binary-esm/tsconfig.json @@ -1,8 +1,7 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "target": "ESNext", - "types": ["node"], + "types": [], "typeRoots": ["./node_modules", "./node_modules/@types", "../../node_modules/@types", "../../@types"], "outDir": "dist" }, diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json index 4241941f..4059eb28 100755 --- a/e2e/tsconfig.json +++ b/e2e/tsconfig.json @@ -8,7 +8,6 @@ "noEmit": true, "module": "NodeNext", "moduleResolution": "NodeNext", - "baseUrl": ".", "types": ["node", "@wdio/globals/types", "mocha"], "typeRoots": ["./node_modules", "./node_modules/@types"] }, diff --git a/packages/@wdio_electron-types/tsconfig.json b/packages/@wdio_electron-types/tsconfig.json index a01afa26..c1c27a82 100755 --- a/packages/@wdio_electron-types/tsconfig.json +++ b/packages/@wdio_electron-types/tsconfig.json @@ -3,10 +3,7 @@ "include": ["src/**/*.ts"], "exclude": ["src/cjs", "node_modules", "coverage", "dist", "test"], "compilerOptions": { - "baseUrl": ".", "outDir": "dist", - "target": "ES2023", - "noEmit": false, "types": [], "typeRoots": ["./node_modules", "./node_modules/@types", "../../@types"] } diff --git a/packages/@wdio_electron-utils/tsconfig.cjs.json b/packages/@wdio_electron-utils/tsconfig.cjs.json index 66517f86..5f6afc37 100644 --- a/packages/@wdio_electron-utils/tsconfig.cjs.json +++ b/packages/@wdio_electron-utils/tsconfig.cjs.json @@ -2,7 +2,6 @@ "extends": "../../tsconfig.base.cjs.json", "include": ["./src/cjs/*.ts", "./src/cjs/package.json"], "compilerOptions": { - "outDir": "./dist/cjs", - "target": "ES2023" + "outDir": "./dist/cjs" } } diff --git a/packages/@wdio_electron-utils/tsconfig.json b/packages/@wdio_electron-utils/tsconfig.json index 20c47989..7d7005b9 100755 --- a/packages/@wdio_electron-utils/tsconfig.json +++ b/packages/@wdio_electron-utils/tsconfig.json @@ -3,9 +3,6 @@ "include": ["src/*.ts"], "exclude": ["src/cjs", "node_modules", "coverage", "dist", "test"], "compilerOptions": { - "baseUrl": ".", - "target": "ES2023", - "noEmit": false, "types": ["node", "vitest/jsdom"], "typeRoots": ["./node_modules", "./node_modules/@types", "../../@types"] } diff --git a/packages/wdio-electron-service/tsconfig.cjs.json b/packages/wdio-electron-service/tsconfig.cjs.json index f9e20962..86588033 100644 --- a/packages/wdio-electron-service/tsconfig.cjs.json +++ b/packages/wdio-electron-service/tsconfig.cjs.json @@ -3,7 +3,6 @@ "include": ["src/cjs/**/*", "src/cjs/package.json"], "exclude": ["src/*.ts", "src/commands/*.ts", "node_modules", "coverage", "dist", "test"], "compilerOptions": { - "rootDir": "src/cjs", - "target": "ES2023" + "rootDir": "src/cjs" } } diff --git a/packages/wdio-electron-service/tsconfig.json b/packages/wdio-electron-service/tsconfig.json index 7ec06b4d..dfc186e4 100755 --- a/packages/wdio-electron-service/tsconfig.json +++ b/packages/wdio-electron-service/tsconfig.json @@ -1,18 +1,8 @@ { "extends": "../../tsconfig.base.json", - "include": [ - "src/**/*.ts", - "src/cjs/preload.ts", - "src/cjs/main.ts", - "src/cjs/classes.ts", - "src/cjs/session.ts", - "src/cjs/index.ts" - ], + "include": ["src/**/*.ts"], "exclude": ["src/cjs", "node_modules", "coverage", "dist", "test"], "compilerOptions": { - "baseUrl": ".", - "target": "ES2023", - "noEmit": false, "types": ["node", "electron-to-chromium", "vitest/jsdom"], "typeRoots": ["./node_modules", "./node_modules/@types", "../../@types"] } From a6e6be47294c81fd68a27cbdfa308752be2e7486 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 15:24:47 +0100 Subject: [PATCH 51/52] fix: add workaround for rollup ts plugin overwriting module value --- e2e/rollup.config.js | 3 ++- e2e/tsconfig.json | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/e2e/rollup.config.js b/e2e/rollup.config.js index fafedb62..b7974b8e 100644 --- a/e2e/rollup.config.js +++ b/e2e/rollup.config.js @@ -1,7 +1,8 @@ import rollupTS from '@rollup/plugin-typescript'; import { defineConfig } from 'rollup'; -const tsPlugin = rollupTS({ tsconfig: 'tsconfig.json' }); +// Workaround for https://github.com/rollup/plugins/issues/1583 +const tsPlugin = rollupTS({ tsconfig: 'tsconfig.json', module: 'nodeNext' }); export default defineConfig([ { diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json index 4059eb28..c85c2eb9 100755 --- a/e2e/tsconfig.json +++ b/e2e/tsconfig.json @@ -6,8 +6,6 @@ "sourceMap": false, "inlineSources": false, "noEmit": true, - "module": "NodeNext", - "moduleResolution": "NodeNext", "types": ["node", "@wdio/globals/types", "mocha"], "typeRoots": ["./node_modules", "./node_modules/@types"] }, From 5eabaaf939a891db23dd7b6defdf45c3a2737750 Mon Sep 17 00:00:00 2001 From: goosewobbler <goosewobbler@protonmail.com> Date: Wed, 11 Sep 2024 15:37:00 +0100 Subject: [PATCH 52/52] chore: update `@electron/packager`, remove asar version pin workaround --- apps/forge-cjs/package.json | 3 -- apps/forge-esm/package.json | 3 -- packages/@wdio_electron-types/package.json | 2 +- packages/@wdio_electron-utils/package.json | 2 +- pnpm-lock.yaml | 43 +++++++++++----------- 5 files changed, 24 insertions(+), 29 deletions(-) diff --git a/apps/forge-cjs/package.json b/apps/forge-cjs/package.json index 9e2865c0..70028a14 100644 --- a/apps/forge-cjs/package.json +++ b/apps/forge-cjs/package.json @@ -31,8 +31,5 @@ "tsx": "^4.19.0", "typescript": "^5.6.2", "webdriverio": "^9.0.9" - }, - "resolutions": { - "@electron/asar": "3.2.10" } } diff --git a/apps/forge-esm/package.json b/apps/forge-esm/package.json index efcb30ad..5e975e13 100644 --- a/apps/forge-esm/package.json +++ b/apps/forge-esm/package.json @@ -32,8 +32,5 @@ "tsx": "^4.19.0", "typescript": "^5.6.2", "webdriverio": "^9.0.9" - }, - "resolutions": { - "@electron/asar": "3.2.10" } } diff --git a/packages/@wdio_electron-types/package.json b/packages/@wdio_electron-types/package.json index 99100b9c..60d13a82 100644 --- a/packages/@wdio_electron-types/package.json +++ b/packages/@wdio_electron-types/package.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@electron-forge/shared-types": "^7.4.0", - "@electron/packager": "^18.3.4", + "@electron/packager": "^18.3.5", "@wdio/globals": "^9.0.9", "@wdio/types": "^9.0.8", "builder-util": "25.0.3", diff --git a/packages/@wdio_electron-utils/package.json b/packages/@wdio_electron-utils/package.json index 3a2a5b16..4fd706a2 100644 --- a/packages/@wdio_electron-utils/package.json +++ b/packages/@wdio_electron-utils/package.json @@ -38,7 +38,7 @@ "test": "pnpm test:unit" }, "dependencies": { - "@electron/packager": "^18.3.4", + "@electron/packager": "^18.3.5", "@wdio/logger": "^9.0.8", "debug": "^4.3.7", "find-versions": "^6.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bc0a6f21..bf62d88d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -416,8 +416,8 @@ importers: specifier: ^7.4.0 version: 7.4.0 '@electron/packager': - specifier: ^18.3.4 - version: 18.3.4 + specifier: ^18.3.5 + version: 18.3.5 '@wdio/globals': specifier: ^9.0.9 version: 9.0.9(@wdio/logger@9.0.8) @@ -446,8 +446,8 @@ importers: packages/@wdio_electron-utils: dependencies: '@electron/packager': - specifier: ^18.3.4 - version: 18.3.4 + specifier: ^18.3.5 + version: 18.3.5 '@wdio/logger': specifier: ^9.0.8 version: 9.0.8 @@ -669,8 +669,8 @@ packages: resolution: {integrity: sha512-F4jbnDn4yIZjmky1FZ6rgBKTM05AZQQfHkyJW2hdS4pDKJjdKAqWytoZKDi1/S6Cr6tN+DD0TFGD3V0i6HPHYQ==} engines: {node: '>= 14.17.5'} - '@electron/asar@3.2.10': - resolution: {integrity: sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw==} + '@electron/asar@3.2.13': + resolution: {integrity: sha512-pY5z2qQSwbFzJsBdgfJIzXf5ElHTVMutC2dxh0FD60njknMu3n1NnTABOcQwbb5/v5soqE79m9UjaJryBf3epg==} engines: {node: '>=10.12.0'} hasBin: true @@ -695,8 +695,8 @@ packages: engines: {node: '>=12.0.0'} hasBin: true - '@electron/packager@18.3.4': - resolution: {integrity: sha512-u/IxB5nelg+areXbSEWJxg1r4z0TcS1D1Dax106PsgwgPtcFvB6jjGxZVLA0WHSrLpkj6qfigHSuVXzxMTH+Qw==} + '@electron/packager@18.3.5': + resolution: {integrity: sha512-ClgTxXTt3MesWAcjIxIkgxELjTcllw1FRoVsihP7uT48kpDMqI71p4XvnMWbq8PvU57TcrKICAaLkxRhbc+/wQ==} engines: {node: '>= 16.13.0'} hasBin: true @@ -5607,7 +5607,7 @@ snapshots: '@electron-forge/template-webpack-typescript': 7.4.0 '@electron-forge/tracer': 7.4.0 '@electron/get': 3.1.0 - '@electron/packager': 18.3.4 + '@electron/packager': 18.3.5 '@electron/rebuild': 3.6.0 '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 @@ -5661,7 +5661,7 @@ snapshots: '@electron-forge/shared-types@7.4.0': dependencies: '@electron-forge/tracer': 7.4.0 - '@electron/packager': 18.3.4 + '@electron/packager': 18.3.5 '@electron/rebuild': 3.6.0 listr2: 7.0.2 transitivePeerDependencies: @@ -5719,8 +5719,9 @@ snapshots: dependencies: chrome-trace-event: 1.0.4 - '@electron/asar@3.2.10': + '@electron/asar@3.2.13': dependencies: + '@types/glob': 7.2.0 commander: 5.1.0 glob: 7.2.3 minimatch: 3.1.2 @@ -5763,7 +5764,7 @@ snapshots: '@electron/notarize@2.4.0': dependencies: - debug: 4.3.6 + debug: 4.3.7(supports-color@8.1.1) fs-extra: 9.1.0 promise-retry: 2.0.1 transitivePeerDependencies: @@ -5772,7 +5773,7 @@ snapshots: '@electron/osx-sign@1.3.1': dependencies: compare-version: 0.1.2 - debug: 4.3.6 + debug: 4.3.7(supports-color@8.1.1) fs-extra: 10.1.0 isbinaryfile: 4.0.10 minimist: 1.2.8 @@ -5780,15 +5781,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/packager@18.3.4': + '@electron/packager@18.3.5': dependencies: - '@electron/asar': 3.2.10 + '@electron/asar': 3.2.13 '@electron/get': 3.1.0 '@electron/notarize': 2.4.0 '@electron/osx-sign': 1.3.1 '@electron/universal': 2.0.1 '@electron/windows-sign': 1.1.3 - debug: 4.3.6 + debug: 4.3.7(supports-color@8.1.1) extract-zip: 2.0.1 filenamify: 4.3.0 fs-extra: 11.2.0 @@ -5826,9 +5827,9 @@ snapshots: '@electron/universal@2.0.1': dependencies: - '@electron/asar': 3.2.10 + '@electron/asar': 3.2.13 '@malept/cross-spawn-promise': 2.0.0 - debug: 4.3.6 + debug: 4.3.7(supports-color@8.1.1) dir-compare: 4.2.0 fs-extra: 11.2.0 minimatch: 9.0.5 @@ -5839,7 +5840,7 @@ snapshots: '@electron/windows-sign@1.1.3': dependencies: cross-dirname: 0.1.0 - debug: 4.3.6 + debug: 4.3.7(supports-color@8.1.1) fs-extra: 11.2.0 minimist: 1.2.8 postject: 1.0.0-alpha.6 @@ -8383,7 +8384,7 @@ snapshots: galactus@1.0.0: dependencies: - debug: 4.3.6 + debug: 4.3.7(supports-color@8.1.1) flora-colossus: 2.0.0 fs-extra: 10.1.0 transitivePeerDependencies: @@ -8507,7 +8508,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.0.8 once: 1.4.0 path-is-absolute: 1.0.1