From 700cbd6db3e4b77d2ea0a6351718075893494b5d Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 17:08:00 +0500 Subject: [PATCH 01/17] Update packeges --- package-lock.json | 497 +++++++++++++++------------------------------- package.json | 15 +- 2 files changed, 162 insertions(+), 350 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8aac394..a468052 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,18 +9,17 @@ "version": "1.0.2", "license": "MIT", "devDependencies": { - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-replace": "^5.0.5", + "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-terser": "^0.4.4", - "@rollup/plugin-typescript": "^11.1.6", + "@rollup/plugin-typescript": "^12.1.2", "cross-env": "^7.0.3", - "rimraf": "^5.0.5", - "rollup": "^4.9.6", + "rimraf": "^6.0.1", + "rollup": "^4.34.9", "rollup-plugin-bundle-size": "^1.0.3", "strip-comments": "^2.0.1", - "terser": "^5.27.0", - "tslib": "^2.6.2", - "typescript": "^5.3.3" + "terser": "^5.39.0", + "tslib": "^2.8.1", + "typescript": "^5.8.2" } }, "node_modules/@isaacs/cliui": { @@ -28,6 +27,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -98,26 +98,16 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@rollup/plugin-node-resolve": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", - "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.0.tgz", + "integrity": "sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", "is-module": "^1.0.0", "resolve": "^1.22.1" }, @@ -133,27 +123,6 @@ } } }, - "node_modules/@rollup/plugin-replace": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz", - "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.30.3" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, "node_modules/@rollup/plugin-terser": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", @@ -177,10 +146,11 @@ } }, "node_modules/@rollup/plugin-typescript": { - "version": "11.1.6", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz", - "integrity": "sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==", + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.2.tgz", + "integrity": "sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.1.0", "resolve": "^1.22.1" @@ -224,180 +194,26 @@ } } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", - "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", - "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", - "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", - "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", - "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", - "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", - "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", - "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", - "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", - "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", - "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", - "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", - "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", + "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/resolve": { "version": "1.20.2", @@ -418,10 +234,11 @@ } }, "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -434,6 +251,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -445,13 +263,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -462,18 +282,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -525,6 +333,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -536,7 +345,8 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commander": { "version": "2.20.3", @@ -563,10 +373,11 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -595,13 +406,15 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "1.0.5", @@ -632,12 +445,13 @@ } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -647,20 +461,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -671,22 +471,24 @@ } }, "node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -737,21 +539,6 @@ "node": ">= 0.4" } }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -769,6 +556,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -786,42 +574,29 @@ "dev": true }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", + "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=14" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, + "license": "ISC", "engines": { - "node": ">=12" + "node": "20 || >=22" } }, "node_modules/maxmin": { @@ -840,25 +615,27 @@ } }, "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -881,6 +658,13 @@ "node": ">=0.10.0" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -897,16 +681,17 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -963,30 +748,33 @@ } }, "node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dev": true, + "license": "ISC", "dependencies": { - "glob": "^10.3.7" + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" }, "bin": { "rimraf": "dist/esm/bin.mjs" }, "engines": { - "node": ">=14" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/rollup": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", - "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.9.tgz", + "integrity": "sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "1.0.5" + "@types/estree": "1.0.6" }, "bin": { "rollup": "dist/bin/rollup" @@ -996,19 +784,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.6", - "@rollup/rollup-android-arm64": "4.9.6", - "@rollup/rollup-darwin-arm64": "4.9.6", - "@rollup/rollup-darwin-x64": "4.9.6", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", - "@rollup/rollup-linux-arm64-gnu": "4.9.6", - "@rollup/rollup-linux-arm64-musl": "4.9.6", - "@rollup/rollup-linux-riscv64-gnu": "4.9.6", - "@rollup/rollup-linux-x64-gnu": "4.9.6", - "@rollup/rollup-linux-x64-musl": "4.9.6", - "@rollup/rollup-win32-arm64-msvc": "4.9.6", - "@rollup/rollup-win32-ia32-msvc": "4.9.6", - "@rollup/rollup-win32-x64-msvc": "4.9.6", + "@rollup/rollup-android-arm-eabi": "4.34.9", + "@rollup/rollup-android-arm64": "4.34.9", + "@rollup/rollup-darwin-arm64": "4.34.9", + "@rollup/rollup-darwin-x64": "4.34.9", + "@rollup/rollup-freebsd-arm64": "4.34.9", + "@rollup/rollup-freebsd-x64": "4.34.9", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.9", + "@rollup/rollup-linux-arm-musleabihf": "4.34.9", + "@rollup/rollup-linux-arm64-gnu": "4.34.9", + "@rollup/rollup-linux-arm64-musl": "4.34.9", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.9", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.9", + "@rollup/rollup-linux-riscv64-gnu": "4.34.9", + "@rollup/rollup-linux-s390x-gnu": "4.34.9", + "@rollup/rollup-linux-x64-gnu": "4.34.9", + "@rollup/rollup-linux-x64-musl": "4.34.9", + "@rollup/rollup-win32-arm64-msvc": "4.34.9", + "@rollup/rollup-win32-ia32-msvc": "4.34.9", + "@rollup/rollup-win32-x64-msvc": "4.34.9", "fsevents": "~2.3.2" } }, @@ -1077,6 +871,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -1114,6 +909,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1132,6 +928,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -1146,6 +943,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1154,13 +952,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -1173,6 +973,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1189,6 +990,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -1201,6 +1003,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1236,10 +1039,11 @@ } }, "node_modules/terser": { - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", - "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -1254,16 +1058,18 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -1292,6 +1098,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -1310,6 +1117,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -1327,6 +1135,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1336,6 +1145,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1350,13 +1160,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -1371,6 +1183,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, diff --git a/package.json b/package.json index 9fcd12a..50218aa 100644 --- a/package.json +++ b/package.json @@ -28,17 +28,16 @@ "shortcut" ], "devDependencies": { - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-replace": "^5.0.5", + "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-terser": "^0.4.4", - "@rollup/plugin-typescript": "^11.1.6", + "@rollup/plugin-typescript": "^12.1.2", "cross-env": "^7.0.3", - "rimraf": "^5.0.5", - "rollup": "^4.9.6", + "rimraf": "^6.0.1", + "rollup": "^4.34.9", "rollup-plugin-bundle-size": "^1.0.3", "strip-comments": "^2.0.1", - "terser": "^5.27.0", - "tslib": "^2.6.2", - "typescript": "^5.3.3" + "terser": "^5.39.0", + "tslib": "^2.8.1", + "typescript": "^5.8.2" } } From 3eebbaec2518b95473dd2692d86f37cb7643453e Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 17:15:45 +0500 Subject: [PATCH 02/17] Update repo URL to "rameel/ramstack.hotkey" --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 50218aa..9f28ceb 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/rameel/hotkey.git" + "url": "git+https://github.com/rameel/ramstack.hotkey.git" }, "keywords": [ "hotkey", From c52d7ebe41a2fb101f414198ec480d119bb5f092 Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 17:21:46 +0500 Subject: [PATCH 03/17] Remove unnecessary plugin "@rollup/plugin-replace" --- rollup.config.mjs | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/rollup.config.mjs b/rollup.config.mjs index 65b0b43..7c532fc 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,12 +1,9 @@ -import replace from "@rollup/plugin-replace"; import resolve from "@rollup/plugin-node-resolve"; import size from "rollup-plugin-bundle-size"; import stripComments from "strip-comments"; import terser from "@rollup/plugin-terser"; import typescript from '@rollup/plugin-typescript'; -const production = process.env.NODE_ENV === "production"; - const terserOptions = { output: { comments: false @@ -28,12 +25,7 @@ const plugins = [ resolve(), typescript(), size(), - strip(), - replace({ - "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV), - "__DEV": !production, - preventAssignment: true - }) + strip() ]; export default [{ From 10efe47d62722564723ebcf01a9e87c476287c3e Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 17:22:19 +0500 Subject: [PATCH 04/17] Formatting --- rollup.config.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rollup.config.mjs b/rollup.config.mjs index 7c532fc..d426374 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -33,7 +33,7 @@ export default [{ output: [{ file: "dist/hotkey.esm.js", format: "esm" - },{ + }, { file: "dist/hotkey.esm.min.js", format: "esm", plugins: [terser(terserOptions)] @@ -57,7 +57,7 @@ function strip() { name: "strip", transform(source) { return { - code: stripComments(source) + code: stripComments(source, {}) }; } }; From c60841d5201493f210db9a5f72b3552597ac7328 Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 17:25:35 +0500 Subject: [PATCH 05/17] Add trimWs rollup plugin to remove trailing whitespace --- rollup.config.mjs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/rollup.config.mjs b/rollup.config.mjs index d426374..6aacbeb 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,3 +1,4 @@ +import path from "node:path"; import resolve from "@rollup/plugin-node-resolve"; import size from "rollup-plugin-bundle-size"; import stripComments from "strip-comments"; @@ -24,8 +25,9 @@ const terserOptions = { const plugins = [ resolve(), typescript(), - size(), - strip() + strip(), + trimWs(), + size() ]; export default [{ @@ -62,3 +64,15 @@ function strip() { } }; } + +function trimWs() { + return { + name: "trimWs", + generateBundle(options, bundle) { + if (options.file.match(/\.js$/)) { + const key = path.basename(options.file); + bundle[key].code = bundle[key].code.trim(); + } + } + }; +} From e8fed70eea7ee104343214c371d8895f11c2418f Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 17:26:44 +0500 Subject: [PATCH 06/17] Remove BOM and normalize line endings --- .editorconfig | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.editorconfig b/.editorconfig index 86830c3..01b3e9f 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,11 +1,11 @@ -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 4 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.json] -indent_size = 2 +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.json] +indent_size = 2 From 1abf607a659477596afa2113cea293f05d21ac3f Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 17:29:35 +0500 Subject: [PATCH 07/17] Remove outDir from tsconfig.json --- tsconfig.json | 1 - 1 file changed, 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index 27062d5..782a0f9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,6 @@ "module": "ES2020", "strict": true, "declaration": true, - "outDir": "./dist", "declarationDir": "./dist/types" }, "files": [ From 8c38593eb33e9b849c48edf54043abdda4556131 Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 17:35:25 +0500 Subject: [PATCH 08/17] Use snake_case for internal elements --- rollup.config.mjs | 20 ++++++++++---------- src/hotkey.ts | 10 +++++----- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/rollup.config.mjs b/rollup.config.mjs index 6aacbeb..fcc30b6 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,11 +1,11 @@ import path from "node:path"; import resolve from "@rollup/plugin-node-resolve"; import size from "rollup-plugin-bundle-size"; -import stripComments from "strip-comments"; +import strip_comments from "strip-comments"; import terser from "@rollup/plugin-terser"; import typescript from '@rollup/plugin-typescript'; -const terserOptions = { +const terser_options = { output: { comments: false }, @@ -25,8 +25,8 @@ const terserOptions = { const plugins = [ resolve(), typescript(), - strip(), - trimWs(), + remove_comments(), + trim_ws(), size() ]; @@ -38,7 +38,7 @@ export default [{ }, { file: "dist/hotkey.esm.min.js", format: "esm", - plugins: [terser(terserOptions)] + plugins: [terser(terser_options)] }, { name: "window", file: "dist/hotkey.js", @@ -49,25 +49,25 @@ export default [{ file: "dist/hotkey.min.js", format: "iife", extend: true, - plugins: [terser(terserOptions)] + plugins: [terser(terser_options)] }], plugins }] -function strip() { +function remove_comments() { return { name: "strip", transform(source) { return { - code: stripComments(source, {}) + code: strip_comments(source, {}) }; } }; } -function trimWs() { +function trim_ws() { return { - name: "trimWs", + name: "trim-ws", generateBundle(options, bundle) { if (options.file.match(/\.js$/)) { const key = path.basename(options.file); diff --git a/src/hotkey.ts b/src/hotkey.ts index f0f196a..f48f448 100644 --- a/src/hotkey.ts +++ b/src/hotkey.ts @@ -29,7 +29,7 @@ const aliases: Record = { "slash": "/" }; -const controlKeys: string[] = [ +const control_keys: string[] = [ "ctrlKey", "altKey", "shiftKey", @@ -71,7 +71,7 @@ export function registerHotkey( return listen(target, eventName, function (this: EventTarget, e: KeyboardEvent) { if (!(e.target as HTMLElement)?.closest("[data-hotkey-ignore]")) { if (info.code === e.code.toUpperCase()) { - if (controlKeys.every(n => info[n as keyof Hotkey] === e[n as keyof KeyboardEvent])) { + if (control_keys.every(n => info[n as keyof Hotkey] === e[n as keyof KeyboardEvent])) { handler.call(this, e); } } @@ -92,7 +92,7 @@ function describe(hotkey: string): Hotkey { break; default: - k.length || invalidKey(hotkey); + k.length || error_invalid_key(hotkey); k = k.toUpperCase(); data.code = k.length === 1 && k >= 'A' && k <= 'Z' ? `KEY${k}` : k; @@ -107,7 +107,7 @@ function describe(hotkey: string): Hotkey { metaKey: false }); - info.code || invalidKey(hotkey); + info.code || error_invalid_key(hotkey); return info; } @@ -116,7 +116,7 @@ function listen(target: EventTarget, type: string, callback: EventListener | nul return () => target.removeEventListener(type, callback, options); } -function invalidKey(hotkey: string): never { +function error_invalid_key(hotkey: string): never { error(`Invalid hotkey: '${hotkey}'`); } From 1177761a66be805ea6341944ecdd09ff4baa3c74 Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 17:56:02 +0500 Subject: [PATCH 09/17] Add github action for publishing package --- .github/workflows/publish.yml | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..12182de --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,58 @@ +name: Publish + +on: + push: + tags: + - "[0-9]+.[0-9]+.[0-9]+" + - "[0-9]+.[0-9]+.[0-9]+-[a-z]+.[0-9]+" + +permissions: + contents: write + +jobs: + publish: + if: github.repository == 'rameel/ramstack.hotkey.js' + name: "Publish Packages" + runs-on: ubuntu-latest + + steps: + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + registry-url: "https://registry.npmjs.org" + + - name: Checkout + uses: actions/checkout@v4 + + - name: Install dependencies + run: npm ci + + - name: Build packages + run: npm run build + + - name: Publish packages + run: | + for dir in dist/*; do + if [ -d "$dir" ]; then + cd "$dir" + npm publish --access public + cd - > /dev/null + fi + done + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + - name: Archive packages (.zip) + run: zip -r ramstack.hotkey-${{ github.ref_name }}.zip ./dist/* + + - name: Archive packages (.tar.gz) + run: tar -czvf ramstack.hotkey-${{ github.ref_name }}.tar.gz ./dist + + - name: Create release + uses: softprops/action-gh-release@v2 + with: + draft: true + files: | + ramstack.hotkey-${{ github.ref_name }}.zip + ramstack.hotkey-${{ github.ref_name }}.tar.gz From 01b6de3a8def8f75bc5a81cd380540dabcc383c7 Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 21:11:55 +0500 Subject: [PATCH 10/17] Add playwright tests --- .github/workflows/test.yml | 35 ++++++ .gitignore | 16 ++- package-lock.json | 82 +++++++++++++ package.json | 8 +- playwright.config.ts | 30 +++++ tests/generic.html | 21 ++++ tests/hotkey.spec.js | 243 +++++++++++++++++++++++++++++++++++++ 7 files changed, 427 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/test.yml create mode 100644 playwright.config.ts create mode 100644 tests/generic.html create mode 100644 tests/hotkey.spec.js diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..e26cb56 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,35 @@ +name: Build & Test +on: + pull_request: + branches: [main] + +jobs: + test: + name: "Build & Test" + runs-on: ubuntu-latest + timeout-minutes: 2 + + steps: + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Dependencies + run: npm ci + + - name: Install Playwright + run: npx playwright install --with-deps + + - name: Run tests (Playwright) + run: npm test + + - uses: actions/upload-artifact@v4 + if: ${{ !cancelled() }} + with: + name: playwright-report + path: playwright-report/ + retention-days: 2 diff --git a/.gitignore b/.gitignore index 0245aad..fb927e7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,10 @@ -coverage -node_modules/ -.idea/ -.vscode/ -.vs/ -dist/ +/coverage +/node_modules/ +/.idea/ +/.vscode/ +/.vs/ +/dist/ +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/package-lock.json b/package-lock.json index a468052..c9688c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,11 @@ "version": "1.0.2", "license": "MIT", "devDependencies": { + "@playwright/test": "^1.50.1", "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^12.1.2", + "@types/node": "^22.13.9", "cross-env": "^7.0.3", "rimraf": "^6.0.1", "rollup": "^4.34.9", @@ -98,6 +100,22 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@playwright/test": { + "version": "1.50.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.50.1.tgz", + "integrity": "sha512-Jii3aBg+CEDpgnuDxEp/h7BimHcUTDlpEtce89xEumlJ5ef2hqepZ+PWp1DDpYC/VO9fmWVI1IlEaoI5fK9FXQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.50.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@rollup/plugin-node-resolve": { "version": "16.0.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.0.tgz", @@ -215,6 +233,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "22.13.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.9.tgz", + "integrity": "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", @@ -461,6 +489,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -709,6 +752,38 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/playwright": { + "version": "1.50.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.50.1.tgz", + "integrity": "sha512-G8rwsOQJ63XG6BbKj2w5rHeavFjy5zynBA9zsJMMtBoe/Uf757oG12NXz6e6OirF7RCrTVAKFXbLmn1RbL7Qaw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.50.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.50.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.50.1.tgz", + "integrity": "sha512-ra9fsNWayuYumt+NiM069M6OkcRb1FZSK8bgi66AtpFoWkg2+y0bJSNmkFrWhMbEBbVKC/EruAHH3g0zmtwGmQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/pretty-bytes": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", @@ -1078,6 +1153,13 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 9f28ceb..12b94b3 100644 --- a/package.json +++ b/package.json @@ -14,9 +14,11 @@ "author": "rameel ", "license": "MIT", "scripts": { - "build": "cross-env NODE_ENV=production rollup -c", + "build": "rollup -c", "prebuild": "npm run clean", - "clean": "rimraf dist" + "clean": "rimraf dist", + "test": "cross-env NODE_OPTIONS=--no-warnings playwright test", + "pretest": "npm run build" }, "repository": { "type": "git", @@ -28,9 +30,11 @@ "shortcut" ], "devDependencies": { + "@playwright/test": "^1.50.1", "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^12.1.2", + "@types/node": "^22.13.9", "cross-env": "^7.0.3", "rimraf": "^6.0.1", "rollup": "^4.34.9", diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..354bcbb --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,30 @@ +import { defineConfig, devices } from "@playwright/test"; + +export default defineConfig({ + testDir: "./tests", + fullyParallel: true, + // Fail the build on CI if you accidentally left test.only in the source code. + forbidOnly: !!process.env.CI, + // Retry on CI only + retries: process.env.CI ? 2 : 0, + // Opt out of parallel tests on CI. + workers: process.env.CI ? 1 : undefined, + reporter: "html", + use: { + trace: "on-first-retry", + }, + projects: [ + { + name: "chromium", + use: { + ...devices["Desktop Chrome"] + }, + }, + { + name: "firefox", + use: { + ...devices["Desktop Firefox"] + }, + } + ] +}); diff --git a/tests/generic.html b/tests/generic.html new file mode 100644 index 0000000..5996730 --- /dev/null +++ b/tests/generic.html @@ -0,0 +1,21 @@ + + + + + + + + + + + +
+
+
+ +
+
+
+ + + diff --git a/tests/hotkey.spec.js b/tests/hotkey.spec.js new file mode 100644 index 0000000..92c19f8 --- /dev/null +++ b/tests/hotkey.spec.js @@ -0,0 +1,243 @@ +import { test, expect } from "@playwright/test"; + +test.beforeEach(async ({ page }) => { + await page.goto(`file://${process.cwd()}/tests/generic.html`); + await page.evaluate(() => { + window.hotkeyTriggered = false; + }); +}); + +test("should trigger when Ctrl+Up is pressed on document", async ({ page }) => { + await page.evaluate(() => { + window.registerHotkey(document, "Ctrl + Up", () => { + window.hotkeyTriggered = true; + }); + }); + + await page.keyboard.down("Control"); + await page.keyboard.press("ArrowUp"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(true); +}); + +test("should trigger when Ctrl+Up is pressed on window", async ({ page }) => { + await page.evaluate(() => { + window.registerHotkey(window, "Ctrl + Up", () => { + window.hotkeyTriggered = true; + }); + }); + + await page.keyboard.down("Control"); + await page.keyboard.press("ArrowUp"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(true); +}); + +test("should trigger when Ctrl+K is pressed on a specific element", async ({ page }) => { + await page.evaluate(() => { + const el = document.getElementById("text"); + + window.registerHotkey(el, "Ctrl + K", () => { + window.hotkeyTriggered = true; + }); + }); + + await page.locator("#text").focus(); + + await page.keyboard.down("Control"); + await page.keyboard.press("K"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(true); +}); + +test("should trigger when Shift+K is pressed on an element matching the selector", async ({ page }) => { + await page.evaluate(() => { + window.registerHotkey("#text", "Shift + K", () => { + window.hotkeyTriggered = true; + }); + }); + + await page.locator("#text").focus(); + + await page.keyboard.down("Shift"); + await page.keyboard.press("K"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(true); +}); + +test("should trigger when Ctrl+Alt+Shift+K is pressed", async ({ page }) => { + await page.evaluate(() => { + window.registerHotkey("#text", "Ctrl+Alt+Shift+K", () => { + window.hotkeyTriggered = true; + }); + }); + + await page.locator("#text").focus(); + + await page.keyboard.down("Control"); + await page.keyboard.down("Alt"); + await page.keyboard.down("Shift"); + await page.keyboard.press("K"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(true); +}); + +test("should trigger when Alt+Shift+K is pressed", async ({ page }) => { + await page.evaluate(() => { + window.registerHotkey("#text", "Alt+Shift+K", () => { + window.hotkeyTriggered = true; + }); + }); + + await page.locator("#text").focus(); + + await page.keyboard.down("Alt"); + await page.keyboard.down("Shift"); + await page.keyboard.press("K"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(true); +}); + +test("should trigger when Alt+K is pressed", async ({ page }) => { + await page.evaluate(() => { + window.registerHotkey("#text", "Alt+K", () => { + window.hotkeyTriggered = true; + }); + }); + + await page.locator("#text").focus(); + + await page.keyboard.down("Alt"); + await page.keyboard.press("K"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(true); +}); + +test("should trigger when K is pressed without modifiers", async ({ page }) => { + await page.evaluate(() => { + window.registerHotkey("#text", "K", () => { + window.hotkeyTriggered = true; + }); + }); + + await page.locator("#text").focus(); + await page.keyboard.press("K"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(true); +}); + +test("should not trigger hotkey when additional modifier keys are pressed", async ({ page }) => { + await page.evaluate(() => { + window.registerHotkey("#text", "Alt+K", () => { + window.hotkeyTriggered = true; + }); + }); + + await page.locator("#text").focus(); + + await page.keyboard.down("Shift"); + await page.keyboard.down("Alt"); + await page.keyboard.press("K"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(false); +}); + +test("should not trigger on elements with [data-hotkey-ignore]", async ({ page }) => { + await page.evaluate(() => { + const el = document.getElementById("ignored"); + + window.registerHotkey(el, "Ctrl + K", () => { + window.hotkeyTriggered = true; + }); + }); + + await page.locator("#ignored").focus(); + + await page.keyboard.down("Control"); + await page.keyboard.press("K"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(false); +}); + +test("should not trigger when parent has [data-hotkey-ignore]", async ({ page }) => { + await page.evaluate(() => { + const el = document.getElementById("ignored-via-parent"); + + window.registerHotkey(el, "Ctrl + K", () => { + window.hotkeyTriggered = true; + }); + }); + + await page.locator("#ignored-via-parent").focus(); + + await page.keyboard.down("Control"); + await page.keyboard.press("K"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(false); +}); + +test("should trigger on 'keydown'", async ({ page }) => { + await page.evaluate(() => { + const el = document.getElementById("text"); + + window.registerHotkey(el, "Ctrl + K", () => { + window.hotkeyTriggered = true; + }); + }); + + await page.locator("#text").focus(); + + await page.keyboard.down("Control"); + await page.keyboard.down("K"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(true); +}); + +test("should trigger on 'keyup'", async ({ page }) => { + await page.evaluate(() => { + const el = document.getElementById("text"); + + window.registerHotkey(el, "Ctrl + K", () => { + window.hotkeyTriggered = true; + }, "keyup"); + }); + + await page.locator("#text").focus(); + + await page.keyboard.down("Control"); + await page.keyboard.down("K"); + await page.keyboard.up("K"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(true); +}); + +test("should trigger on 'keyup' when using keyboard.press()", async ({ page }) => { + await page.evaluate(() => { + const el = document.getElementById("text"); + + window.registerHotkey(el, "Ctrl + K", () => { + window.hotkeyTriggered = true; + }, "keyup"); + }); + + await page.locator("#text").focus(); + + await page.keyboard.down("Control"); + await page.keyboard.press("K"); + + const triggered = await page.evaluate(() => window.hotkeyTriggered); + expect(triggered).toBe(true); +}); From e5ea3f13e90669543a6ebe4042d79eee484f9ffd Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 21:16:31 +0500 Subject: [PATCH 11/17] Update github action --- .github/workflows/test.yml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e26cb56..79b5080 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,15 +21,5 @@ jobs: - name: Install Dependencies run: npm ci - - name: Install Playwright - run: npx playwright install --with-deps - - name: Run tests (Playwright) - run: npm test - - - uses: actions/upload-artifact@v4 - if: ${{ !cancelled() }} - with: - name: playwright-report - path: playwright-report/ - retention-days: 2 + run: npm run build From 804fce25e5dcbdef679ac9181f2fc8071cc073aa Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 21:18:09 +0500 Subject: [PATCH 12/17] Update github action --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 79b5080..1d1e7ec 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@v4 - name: Install Dependencies - run: npm ci + run: npm i - name: Run tests (Playwright) run: npm run build From 80a8419299bd3628f56a2d699f5ed77deadca996 Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 21:22:49 +0500 Subject: [PATCH 13/17] Update github action --- package-lock.json | 19 +++++++++++++++++++ package.json | 3 +++ 2 files changed, 22 insertions(+) diff --git a/package-lock.json b/package-lock.json index c9688c1..d4bb566 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "@ramstack/hotkey", "version": "1.0.2", "license": "MIT", + "dependencies": { + "@rollup/rollup-linux-x64-gnu": "*" + }, "devDependencies": { "@playwright/test": "^1.50.1", "@rollup/plugin-node-resolve": "^16.0.0", @@ -22,6 +25,9 @@ "terser": "^5.39.0", "tslib": "^2.8.1", "typescript": "^5.8.2" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "^4.34.9" } }, "node_modules/@isaacs/cliui": { @@ -212,6 +218,19 @@ } } }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", + "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-win32-x64-msvc": { "version": "4.34.9", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", diff --git a/package.json b/package.json index 12b94b3..7a8f206 100644 --- a/package.json +++ b/package.json @@ -43,5 +43,8 @@ "terser": "^5.39.0", "tslib": "^2.8.1", "typescript": "^5.8.2" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "^4.34.9" } } From a72aaa6bae0c2355c06e968ba9cd1b284a6a15e8 Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 21:24:03 +0500 Subject: [PATCH 14/17] Update github action --- .github/workflows/test.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1d1e7ec..082ce14 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,5 +21,15 @@ jobs: - name: Install Dependencies run: npm i + - name: Install Playwright + run: npx playwright install --with-deps + - name: Run tests (Playwright) - run: npm run build + run: npm test + + - uses: actions/upload-artifact@v4 + if: ${{ !cancelled() }} + with: + name: playwright-report + path: playwright-report/ + retention-days: 2 From 2ea1e78f9939772eb9dac8ab0804ab0afa07499d Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 21:26:33 +0500 Subject: [PATCH 15/17] Update github action --- .github/workflows/test.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 082ce14..1784a9e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,10 +26,3 @@ jobs: - name: Run tests (Playwright) run: npm test - - - uses: actions/upload-artifact@v4 - if: ${{ !cancelled() }} - with: - name: playwright-report - path: playwright-report/ - retention-days: 2 From 63cf31c0a1cf7487340fc1db09a193aece248de8 Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 22:21:57 +0500 Subject: [PATCH 16/17] Update github action --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 12182de..80d3fb7 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@v4 - name: Install dependencies - run: npm ci + run: npm i - name: Build packages run: npm run build From 994f38e3fad2e662fa19f14730e2467191a0c6bf Mon Sep 17 00:00:00 2001 From: rameel Date: Thu, 6 Mar 2025 22:30:10 +0500 Subject: [PATCH 17/17] Add test for invalid target selector --- tests/hotkey.spec.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/hotkey.spec.js b/tests/hotkey.spec.js index 92c19f8..6fba396 100644 --- a/tests/hotkey.spec.js +++ b/tests/hotkey.spec.js @@ -241,3 +241,11 @@ test("should trigger on 'keyup' when using keyboard.press()", async ({ page }) = const triggered = await page.evaluate(() => window.hotkeyTriggered); expect(triggered).toBe(true); }); + +test("should thrown when target selector is invalid", async ({ page }) => { + await expect(page.evaluate(() => { + window.registerHotkey("#unknown", "K", () => { + window.hotkeyTriggered = true; + }); + })).rejects.toThrow("No element found for selector '#unknown'"); +});