authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-02-18 00:37:37-08:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-02-18 03:00:35-08:00
log34491f34f1c37991dab4dd12ba82ad2b917e8219
treeb1d76a2651ca09130704549a449b38f7703ae9df
parentc5e1b81a764db3ca4debd1826c1e779e9e56b4b2
signature Signed by SSH key SHA256:xbd+BjjhyBfwk7GVoURf9Yx0gzDerHbvYv7SddNWmAs

chore: remove puppeteer, replace with playwright


3 files changed, 50 insertions(+), 1083 deletions(-)

package-lock.json+26-1055
......@@ -19,7 +19,7 @@
1919 "lib": "file:lib",
2020 "marko": "^5.38.24",
2121 "msgpackr": "1.11.5",
22 "puppeteer": "24.23.0",
22 "playwright": "1.58.2",
2323 "source-map-support": "0.5.21",
2424 "typescript": "5.8.3",
2525 "unique-names-generator": "4.7.1",
......@@ -28,29 +28,6 @@
2828 }
2929 },
3030 "lib": {},
31 "node_modules/@babel/code-frame": {
32 "version": "7.27.1",
33 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
34 "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
35 "license": "MIT",
36 "dependencies": {
37 "@babel/helper-validator-identifier": "^7.27.1",
38 "js-tokens": "^4.0.0",
39 "picocolors": "^1.1.1"
40 },
41 "engines": {
42 "node": ">=6.9.0"
43 }
44 },
45 "node_modules/@babel/helper-validator-identifier": {
46 "version": "7.27.1",
47 "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
48 "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
49 "license": "MIT",
50 "engines": {
51 "node": ">=6.9.0"
52 }
53 },
5431 "node_modules/@clo/markodown": {
5532 "name": "@paperclover/markodown",
5633 "version": "1.0.0-rc.15",
......@@ -728,51 +705,12 @@
728705 "win32"
729706 ]
730707 },
731 "node_modules/@puppeteer/browsers": {
732 "version": "2.10.10",
733 "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.10.tgz",
734 "integrity": "sha512-3ZG500+ZeLql8rE0hjfhkycJjDj0pI/btEh3L9IkWUYcOrgP0xCNRq3HbtbqOPbvDhFaAWD88pDFtlLv8ns8gA==",
735 "license": "Apache-2.0",
736 "dependencies": {
737 "debug": "^4.4.3",
738 "extract-zip": "^2.0.1",
739 "progress": "^2.0.3",
740 "proxy-agent": "^6.5.0",
741 "semver": "^7.7.2",
742 "tar-fs": "^3.1.0",
743 "yargs": "^17.7.2"
744 },
745 "bin": {
746 "browsers": "lib/cjs/main-cli.js"
747 },
748 "engines": {
749 "node": ">=18"
750 }
751 },
752 "node_modules/@puppeteer/browsers/node_modules/semver": {
753 "version": "7.7.2",
754 "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
755 "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
756 "license": "ISC",
757 "bin": {
758 "semver": "bin/semver.js"
759 },
760 "engines": {
761 "node": ">=10"
762 }
763 },
764708 "node_modules/@svta/common-media-library": {
765709 "version": "0.12.4",
766710 "resolved": "https://registry.npmjs.org/@svta/common-media-library/-/common-media-library-0.12.4.tgz",
767711 "integrity": "sha512-9EuOoaNmz7JrfGwjsrD9SxF9otU5TNMnbLu1yU4BeLK0W5cDxVXXR58Z89q9u2AnHjIctscjMTYdlqQ1gojTuw==",
768712 "license": "Apache-2.0"
769713 },
770 "node_modules/@tootallnate/quickjs-emscripten": {
771 "version": "0.23.0",
772 "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
773 "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
774 "license": "MIT"
775 },
776714 "node_modules/@types/node": {
777715 "version": "24.0.10",
778716 "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.10.tgz",
......@@ -782,49 +720,6 @@
782720 "undici-types": "~7.8.0"
783721 }
784722 },
785 "node_modules/@types/yauzl": {
786 "version": "2.10.3",
787 "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
788 "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
789 "license": "MIT",
790 "optional": true,
791 "dependencies": {
792 "@types/node": "*"
793 }
794 },
795 "node_modules/agent-base": {
796 "version": "7.1.4",
797 "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
798 "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
799 "license": "MIT",
800 "engines": {
801 "node": ">= 14"
802 }
803 },
804 "node_modules/ansi-regex": {
805 "version": "5.0.1",
806 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
807 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
808 "license": "MIT",
809 "engines": {
810 "node": ">=8"
811 }
812 },
813 "node_modules/ansi-styles": {
814 "version": "4.3.0",
815 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
816 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
817 "license": "MIT",
818 "dependencies": {
819 "color-convert": "^2.0.1"
820 },
821 "engines": {
822 "node": ">=8"
823 },
824 "funding": {
825 "url": "https://github.com/chalk/ansi-styles?sponsor=1"
826 }
827 },
828723 "node_modules/app-module-path": {
829724 "version": "2.2.0",
830725 "resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz",
......@@ -837,12 +732,6 @@
837732 "integrity": "sha512-+F3InkcH2XOGK7Jf/ZQis4cwZ4wbfmpBKo5J+SAA9bglT1gVd0e9hroHWarU076pJrAfs8JKuRPwDqwPBOKHnw==",
838733 "license": "MIT"
839734 },
840 "node_modules/argparse": {
841 "version": "2.0.1",
842 "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
843 "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
844 "license": "Python-2.0"
845 },
846735 "node_modules/assertion-error": {
847736 "version": "1.1.0",
848737 "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
......@@ -852,121 +741,12 @@
852741 "node": "*"
853742 }
854743 },
855 "node_modules/ast-types": {
856 "version": "0.13.4",
857 "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
858 "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
859 "license": "MIT",
860 "dependencies": {
861 "tslib": "^2.0.1"
862 },
863 "engines": {
864 "node": ">=4"
865 }
866 },
867 "node_modules/b4a": {
868 "version": "1.7.3",
869 "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz",
870 "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==",
871 "license": "Apache-2.0",
872 "peerDependencies": {
873 "react-native-b4a": "*"
874 },
875 "peerDependenciesMeta": {
876 "react-native-b4a": {
877 "optional": true
878 }
879 }
880 },
881744 "node_modules/balanced-match": {
882745 "version": "1.0.2",
883746 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
884747 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
885748 "license": "MIT"
886749 },
887 "node_modules/bare-events": {
888 "version": "2.7.0",
889 "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.7.0.tgz",
890 "integrity": "sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==",
891 "license": "Apache-2.0"
892 },
893 "node_modules/bare-fs": {
894 "version": "4.4.5",
895 "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.4.5.tgz",
896 "integrity": "sha512-TCtu93KGLu6/aiGWzMr12TmSRS6nKdfhAnzTQRbXoSWxkbb9eRd53jQ51jG7g1gYjjtto3hbBrrhzg6djcgiKg==",
897 "license": "Apache-2.0",
898 "optional": true,
899 "dependencies": {
900 "bare-events": "^2.5.4",
901 "bare-path": "^3.0.0",
902 "bare-stream": "^2.6.4",
903 "bare-url": "^2.2.2",
904 "fast-fifo": "^1.3.2"
905 },
906 "engines": {
907 "bare": ">=1.16.0"
908 },
909 "peerDependencies": {
910 "bare-buffer": "*"
911 },
912 "peerDependenciesMeta": {
913 "bare-buffer": {
914 "optional": true
915 }
916 }
917 },
918 "node_modules/bare-os": {
919 "version": "3.6.2",
920 "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz",
921 "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==",
922 "license": "Apache-2.0",
923 "optional": true,
924 "engines": {
925 "bare": ">=1.14.0"
926 }
927 },
928 "node_modules/bare-path": {
929 "version": "3.0.0",
930 "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
931 "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
932 "license": "Apache-2.0",
933 "optional": true,
934 "dependencies": {
935 "bare-os": "^3.0.1"
936 }
937 },
938 "node_modules/bare-stream": {
939 "version": "2.7.0",
940 "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz",
941 "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==",
942 "license": "Apache-2.0",
943 "optional": true,
944 "dependencies": {
945 "streamx": "^2.21.0"
946 },
947 "peerDependencies": {
948 "bare-buffer": "*",
949 "bare-events": "*"
950 },
951 "peerDependenciesMeta": {
952 "bare-buffer": {
953 "optional": true
954 },
955 "bare-events": {
956 "optional": true
957 }
958 }
959 },
960 "node_modules/bare-url": {
961 "version": "2.2.2",
962 "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.2.2.tgz",
963 "integrity": "sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==",
964 "license": "Apache-2.0",
965 "optional": true,
966 "dependencies": {
967 "bare-path": "^3.0.0"
968 }
969 },
970750 "node_modules/baseline-browser-mapping": {
971751 "version": "2.9.19",
972752 "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz",
......@@ -976,15 +756,6 @@
976756 "baseline-browser-mapping": "dist/cli.js"
977757 }
978758 },
979 "node_modules/basic-ftp": {
980 "version": "5.0.5",
981 "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
982 "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
983 "license": "MIT",
984 "engines": {
985 "node": ">=10.0.0"
986 }
987 },
988759 "node_modules/bcp-47": {
989760 "version": "2.1.0",
990761 "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz",
......@@ -1073,30 +844,12 @@
1073844 "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1074845 }
1075846 },
1076 "node_modules/buffer-crc32": {
1077 "version": "0.2.13",
1078 "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
1079 "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
1080 "license": "MIT",
1081 "engines": {
1082 "node": "*"
1083 }
1084 },
1085847 "node_modules/buffer-from": {
1086848 "version": "1.1.2",
1087849 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
1088850 "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
1089851 "license": "MIT"
1090852 },
1091 "node_modules/callsites": {
1092 "version": "3.1.0",
1093 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1094 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1095 "license": "MIT",
1096 "engines": {
1097 "node": ">=6"
1098 }
1099 },
1100853 "node_modules/caniuse-lite": {
1101854 "version": "1.0.30001770",
1102855 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz",
......@@ -1131,33 +884,6 @@
1131884 "node": ">= 0.4.0"
1132885 }
1133886 },
1134 "node_modules/chromium-bidi": {
1135 "version": "9.1.0",
1136 "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-9.1.0.tgz",
1137 "integrity": "sha512-rlUzQ4WzIAWdIbY/viPShhZU2n21CxDUgazXVbw4Hu1MwaeUSEksSeM6DqPgpRjCLXRk702AVRxJxoOz0dw4OA==",
1138 "license": "Apache-2.0",
1139 "dependencies": {
1140 "mitt": "^3.0.1",
1141 "zod": "^3.24.1"
1142 },
1143 "peerDependencies": {
1144 "devtools-protocol": "*"
1145 }
1146 },
1147 "node_modules/cliui": {
1148 "version": "8.0.1",
1149 "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
1150 "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
1151 "license": "ISC",
1152 "dependencies": {
1153 "string-width": "^4.2.0",
1154 "strip-ansi": "^6.0.1",
1155 "wrap-ansi": "^7.0.0"
1156 },
1157 "engines": {
1158 "node": ">=12"
1159 }
1160 },
1161887 "node_modules/codem-isoboxer": {
1162888 "version": "0.3.10",
1163889 "resolved": "https://registry.npmjs.org/codem-isoboxer/-/codem-isoboxer-0.3.10.tgz",
......@@ -1179,24 +905,6 @@
1179905 "@codemirror/view": "^6.0.0"
1180906 }
1181907 },
1182 "node_modules/color-convert": {
1183 "version": "2.0.1",
1184 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1185 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1186 "license": "MIT",
1187 "dependencies": {
1188 "color-name": "~1.1.4"
1189 },
1190 "engines": {
1191 "node": ">=7.0.0"
1192 }
1193 },
1194 "node_modules/color-name": {
1195 "version": "1.1.4",
1196 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1197 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1198 "license": "MIT"
1199 },
1200908 "node_modules/complain": {
1201909 "version": "1.6.1",
1202910 "resolved": "https://registry.npmjs.org/complain/-/complain-1.6.1.tgz",
......@@ -1206,32 +914,6 @@
1206914 "error-stack-parser": "^2.0.1"
1207915 }
1208916 },
1209 "node_modules/cosmiconfig": {
1210 "version": "9.0.0",
1211 "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
1212 "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
1213 "license": "MIT",
1214 "dependencies": {
1215 "env-paths": "^2.2.1",
1216 "import-fresh": "^3.3.0",
1217 "js-yaml": "^4.1.0",
1218 "parse-json": "^5.2.0"
1219 },
1220 "engines": {
1221 "node": ">=14"
1222 },
1223 "funding": {
1224 "url": "https://github.com/sponsors/d-fischer"
1225 },
1226 "peerDependencies": {
1227 "typescript": ">=4.9.5"
1228 },
1229 "peerDependenciesMeta": {
1230 "typescript": {
1231 "optional": true
1232 }
1233 }
1234 },
1235917 "node_modules/crelt": {
1236918 "version": "1.0.6",
1237919 "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
......@@ -1262,32 +944,6 @@
1262944 "ua-parser-js": "^1.0.37"
1263945 }
1264946 },
1265 "node_modules/data-uri-to-buffer": {
1266 "version": "6.0.2",
1267 "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
1268 "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
1269 "license": "MIT",
1270 "engines": {
1271 "node": ">= 14"
1272 }
1273 },
1274 "node_modules/debug": {
1275 "version": "4.4.3",
1276 "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
1277 "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
1278 "license": "MIT",
1279 "dependencies": {
1280 "ms": "^2.1.3"
1281 },
1282 "engines": {
1283 "node": ">=6.0"
1284 },
1285 "peerDependenciesMeta": {
1286 "supports-color": {
1287 "optional": true
1288 }
1289 }
1290 },
1291947 "node_modules/deep-eql": {
1292948 "version": "0.1.3",
1293949 "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz",
......@@ -1309,20 +965,6 @@
1309965 "node": "*"
1310966 }
1311967 },
1312 "node_modules/degenerator": {
1313 "version": "5.0.1",
1314 "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
1315 "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
1316 "license": "MIT",
1317 "dependencies": {
1318 "ast-types": "^0.13.4",
1319 "escodegen": "^2.1.0",
1320 "esprima": "^4.0.1"
1321 },
1322 "engines": {
1323 "node": ">= 14"
1324 }
1325 },
1326968 "node_modules/detect-libc": {
1327969 "version": "2.0.4",
1328970 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
......@@ -1339,52 +981,12 @@
1339981 "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==",
1340982 "license": "MIT"
1341983 },
1342 "node_modules/devtools-protocol": {
1343 "version": "0.0.1508733",
1344 "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1508733.tgz",
1345 "integrity": "sha512-QJ1R5gtck6nDcdM+nlsaJXcelPEI7ZxSMw1ujHpO1c4+9l+Nue5qlebi9xO1Z2MGr92bFOQTW7/rrheh5hHxDg==",
1346 "license": "BSD-3-Clause",
1347 "peer": true
1348 },
1349984 "node_modules/electron-to-chromium": {
1350985 "version": "1.5.286",
1351986 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz",
1352987 "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==",
1353988 "license": "ISC"
1354989 },
1355 "node_modules/emoji-regex": {
1356 "version": "8.0.0",
1357 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1358 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1359 "license": "MIT"
1360 },
1361 "node_modules/end-of-stream": {
1362 "version": "1.4.5",
1363 "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
1364 "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
1365 "license": "MIT",
1366 "dependencies": {
1367 "once": "^1.4.0"
1368 }
1369 },
1370 "node_modules/env-paths": {
1371 "version": "2.2.1",
1372 "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
1373 "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
1374 "license": "MIT",
1375 "engines": {
1376 "node": ">=6"
1377 }
1378 },
1379 "node_modules/error-ex": {
1380 "version": "1.3.2",
1381 "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
1382 "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
1383 "license": "MIT",
1384 "dependencies": {
1385 "is-arrayish": "^0.2.1"
1386 }
1387 },
1388990 "node_modules/error-stack-parser": {
1389991 "version": "2.1.4",
1390992 "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
......@@ -1444,68 +1046,6 @@
14441046 "node": ">=6"
14451047 }
14461048 },
1447 "node_modules/escodegen": {
1448 "version": "2.1.0",
1449 "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
1450 "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
1451 "license": "BSD-2-Clause",
1452 "dependencies": {
1453 "esprima": "^4.0.1",
1454 "estraverse": "^5.2.0",
1455 "esutils": "^2.0.2"
1456 },
1457 "bin": {
1458 "escodegen": "bin/escodegen.js",
1459 "esgenerate": "bin/esgenerate.js"
1460 },
1461 "engines": {
1462 "node": ">=6.0"
1463 },
1464 "optionalDependencies": {
1465 "source-map": "~0.6.1"
1466 }
1467 },
1468 "node_modules/escodegen/node_modules/source-map": {
1469 "version": "0.6.1",
1470 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1471 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1472 "license": "BSD-3-Clause",
1473 "optional": true,
1474 "engines": {
1475 "node": ">=0.10.0"
1476 }
1477 },
1478 "node_modules/esprima": {
1479 "version": "4.0.1",
1480 "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
1481 "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
1482 "license": "BSD-2-Clause",
1483 "bin": {
1484 "esparse": "bin/esparse.js",
1485 "esvalidate": "bin/esvalidate.js"
1486 },
1487 "engines": {
1488 "node": ">=4"
1489 }
1490 },
1491 "node_modules/estraverse": {
1492 "version": "5.3.0",
1493 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
1494 "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
1495 "license": "BSD-2-Clause",
1496 "engines": {
1497 "node": ">=4.0"
1498 }
1499 },
1500 "node_modules/esutils": {
1501 "version": "2.0.3",
1502 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1503 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1504 "license": "BSD-2-Clause",
1505 "engines": {
1506 "node": ">=0.10.0"
1507 }
1508 },
15091049 "node_modules/events-light": {
15101050 "version": "1.0.5",
15111051 "resolved": "https://registry.npmjs.org/events-light/-/events-light-1.0.5.tgz",
......@@ -1515,92 +1055,24 @@
15151055 "chai": "^3.5.0"
15161056 }
15171057 },
1518 "node_modules/events-universal": {
1519 "version": "1.0.1",
1520 "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz",
1521 "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
1522 "license": "Apache-2.0",
1523 "dependencies": {
1524 "bare-events": "^2.7.0"
1525 }
1526 },
1527 "node_modules/extract-zip": {
1528 "version": "2.0.1",
1529 "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
1530 "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
1531 "license": "BSD-2-Clause",
1532 "dependencies": {
1533 "debug": "^4.1.1",
1534 "get-stream": "^5.1.0",
1535 "yauzl": "^2.10.0"
1536 },
1537 "bin": {
1538 "extract-zip": "cli.js"
1539 },
1540 "engines": {
1541 "node": ">= 10.17.0"
1542 },
1543 "optionalDependencies": {
1544 "@types/yauzl": "^2.9.1"
1545 }
1546 },
15471058 "node_modules/fast-deep-equal": {
15481059 "version": "3.1.3",
15491060 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
15501061 "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
15511062 "license": "MIT"
15521063 },
1553 "node_modules/fast-fifo": {
1554 "version": "1.3.2",
1555 "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
1556 "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
1557 "license": "MIT"
1558 },
1559 "node_modules/fd-slicer": {
1560 "version": "1.1.0",
1561 "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
1562 "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
1563 "license": "MIT",
1564 "dependencies": {
1565 "pend": "~1.2.0"
1566 }
1567 },
1568 "node_modules/get-caller-file": {
1569 "version": "2.0.5",
1570 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
1571 "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
1572 "license": "ISC",
1573 "engines": {
1574 "node": "6.* || 8.* || >= 10.*"
1575 }
1576 },
1577 "node_modules/get-stream": {
1578 "version": "5.2.0",
1579 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
1580 "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
1581 "license": "MIT",
1582 "dependencies": {
1583 "pump": "^3.0.0"
1584 },
1585 "engines": {
1586 "node": ">=8"
1587 },
1588 "funding": {
1589 "url": "https://github.com/sponsors/sindresorhus"
1590 }
1591 },
1592 "node_modules/get-uri": {
1593 "version": "6.0.5",
1594 "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz",
1595 "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==",
1064 "node_modules/fsevents": {
1065 "version": "2.3.2",
1066 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1067 "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1068 "hasInstallScript": true,
15961069 "license": "MIT",
1597 "dependencies": {
1598 "basic-ftp": "^5.0.2",
1599 "data-uri-to-buffer": "^6.0.2",
1600 "debug": "^4.3.4"
1601 },
1070 "optional": true,
1071 "os": [
1072 "darwin"
1073 ],
16021074 "engines": {
1603 "node": ">= 14"
1075 "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
16041076 }
16051077 },
16061078 "node_modules/he": {
......@@ -1650,63 +1122,12 @@
16501122 "integrity": "sha512-5aAmTYhhiyBaBArw51R9c1m5BxqN3QBRpvhKRanWwTW1I59Y9YHvfGOBU12dfy7dPqgkwFKCUh0LX+ia34HHFw==",
16511123 "license": "MIT"
16521124 },
1653 "node_modules/http-proxy-agent": {
1654 "version": "7.0.2",
1655 "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
1656 "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
1657 "license": "MIT",
1658 "dependencies": {
1659 "agent-base": "^7.1.0",
1660 "debug": "^4.3.4"
1661 },
1662 "engines": {
1663 "node": ">= 14"
1664 }
1665 },
1666 "node_modules/https-proxy-agent": {
1667 "version": "7.0.6",
1668 "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
1669 "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
1670 "license": "MIT",
1671 "dependencies": {
1672 "agent-base": "^7.1.2",
1673 "debug": "4"
1674 },
1675 "engines": {
1676 "node": ">= 14"
1677 }
1678 },
16791125 "node_modules/immediate": {
16801126 "version": "3.0.6",
16811127 "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
16821128 "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
16831129 "license": "MIT"
16841130 },
1685 "node_modules/import-fresh": {
1686 "version": "3.3.1",
1687 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
1688 "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
1689 "license": "MIT",
1690 "dependencies": {
1691 "parent-module": "^1.0.0",
1692 "resolve-from": "^4.0.0"
1693 },
1694 "engines": {
1695 "node": ">=6"
1696 },
1697 "funding": {
1698 "url": "https://github.com/sponsors/sindresorhus"
1699 }
1700 },
1701 "node_modules/import-fresh/node_modules/resolve-from": {
1702 "version": "4.0.0",
1703 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1704 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1705 "license": "MIT",
1706 "engines": {
1707 "node": ">=4"
1708 }
1709 },
17101131 "node_modules/imsc": {
17111132 "version": "1.1.5",
17121133 "resolved": "https://registry.npmjs.org/imsc/-/imsc-1.1.5.tgz",
......@@ -1716,15 +1137,6 @@
17161137 "sax": "1.2.1"
17171138 }
17181139 },
1719 "node_modules/ip-address": {
1720 "version": "10.0.1",
1721 "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz",
1722 "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==",
1723 "license": "MIT",
1724 "engines": {
1725 "node": ">= 12"
1726 }
1727 },
17281140 "node_modules/is-alphabetical": {
17291141 "version": "2.0.1",
17301142 "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
......@@ -1749,12 +1161,6 @@
17491161 "url": "https://github.com/sponsors/wooorm"
17501162 }
17511163 },
1752 "node_modules/is-arrayish": {
1753 "version": "0.2.1",
1754 "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
1755 "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
1756 "license": "MIT"
1757 },
17581164 "node_modules/is-decimal": {
17591165 "version": "2.0.1",
17601166 "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
......@@ -1765,33 +1171,6 @@
17651171 "url": "https://github.com/sponsors/wooorm"
17661172 }
17671173 },
1768 "node_modules/is-fullwidth-code-point": {
1769 "version": "3.0.0",
1770 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1771 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1772 "license": "MIT",
1773 "engines": {
1774 "node": ">=8"
1775 }
1776 },
1777 "node_modules/js-tokens": {
1778 "version": "4.0.0",
1779 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1780 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1781 "license": "MIT"
1782 },
1783 "node_modules/js-yaml": {
1784 "version": "4.1.1",
1785 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
1786 "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
1787 "license": "MIT",
1788 "dependencies": {
1789 "argparse": "^2.0.1"
1790 },
1791 "bin": {
1792 "js-yaml": "bin/js-yaml.js"
1793 }
1794 },
17951174 "node_modules/jsesc": {
17961175 "version": "3.1.0",
17971176 "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
......@@ -1804,12 +1183,6 @@
18041183 "node": ">=6"
18051184 }
18061185 },
1807 "node_modules/json-parse-even-better-errors": {
1808 "version": "2.3.1",
1809 "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
1810 "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
1811 "license": "MIT"
1812 },
18131186 "node_modules/kleur": {
18141187 "version": "4.1.5",
18151188 "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
......@@ -1850,12 +1223,6 @@
18501223 "immediate": "~3.0.5"
18511224 }
18521225 },
1853 "node_modules/lines-and-columns": {
1854 "version": "1.2.4",
1855 "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
1856 "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
1857 "license": "MIT"
1858 },
18591226 "node_modules/listener-tracker": {
18601227 "version": "2.0.0",
18611228 "resolved": "https://registry.npmjs.org/listener-tracker/-/listener-tracker-2.0.0.tgz",
......@@ -1924,18 +1291,6 @@
19241291 "url": "https://github.com/sponsors/isaacs"
19251292 }
19261293 },
1927 "node_modules/mitt": {
1928 "version": "3.0.1",
1929 "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
1930 "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
1931 "license": "MIT"
1932 },
1933 "node_modules/ms": {
1934 "version": "2.1.3",
1935 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1936 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1937 "license": "MIT"
1938 },
19391294 "node_modules/msgpackr": {
19401295 "version": "1.11.5",
19411296 "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz",
......@@ -1967,15 +1322,6 @@
19671322 "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3"
19681323 }
19691324 },
1970 "node_modules/netmask": {
1971 "version": "2.0.2",
1972 "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
1973 "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
1974 "license": "MIT",
1975 "engines": {
1976 "node": ">= 0.4.0"
1977 }
1978 },
19791325 "node_modules/node-gyp-build-optional-packages": {
19801326 "version": "5.2.2",
19811327 "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
......@@ -1997,182 +1343,43 @@
19971343 "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
19981344 "license": "MIT"
19991345 },
2000 "node_modules/once": {
2001 "version": "1.4.0",
2002 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2003 "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
2004 "license": "ISC",
2005 "dependencies": {
2006 "wrappy": "1"
2007 }
2008 },
2009 "node_modules/pac-proxy-agent": {
2010 "version": "7.2.0",
2011 "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
2012 "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==",
2013 "license": "MIT",
2014 "dependencies": {
2015 "@tootallnate/quickjs-emscripten": "^0.23.0",
2016 "agent-base": "^7.1.2",
2017 "debug": "^4.3.4",
2018 "get-uri": "^6.0.1",
2019 "http-proxy-agent": "^7.0.0",
2020 "https-proxy-agent": "^7.0.6",
2021 "pac-resolver": "^7.0.1",
2022 "socks-proxy-agent": "^8.0.5"
2023 },
2024 "engines": {
2025 "node": ">= 14"
2026 }
2027 },
2028 "node_modules/pac-resolver": {
2029 "version": "7.0.1",
2030 "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
2031 "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
2032 "license": "MIT",
2033 "dependencies": {
2034 "degenerator": "^5.0.0",
2035 "netmask": "^2.0.2"
2036 },
2037 "engines": {
2038 "node": ">= 14"
2039 }
2040 },
2041 "node_modules/parent-module": {
2042 "version": "1.0.1",
2043 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
2044 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
2045 "license": "MIT",
2046 "dependencies": {
2047 "callsites": "^3.0.0"
2048 },
2049 "engines": {
2050 "node": ">=6"
2051 }
2052 },
2053 "node_modules/parse-json": {
2054 "version": "5.2.0",
2055 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
2056 "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
2057 "license": "MIT",
2058 "dependencies": {
2059 "@babel/code-frame": "^7.0.0",
2060 "error-ex": "^1.3.1",
2061 "json-parse-even-better-errors": "^2.3.0",
2062 "lines-and-columns": "^1.1.6"
2063 },
2064 "engines": {
2065 "node": ">=8"
2066 },
2067 "funding": {
2068 "url": "https://github.com/sponsors/sindresorhus"
2069 }
2070 },
20711346 "node_modules/path-browserify": {
20721347 "version": "1.0.1",
20731348 "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
20741349 "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
20751350 "license": "MIT"
20761351 },
2077 "node_modules/pend": {
2078 "version": "1.2.0",
2079 "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
2080 "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
2081 "license": "MIT"
2082 },
20831352 "node_modules/picocolors": {
20841353 "version": "1.1.1",
20851354 "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
20861355 "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
20871356 "license": "ISC"
20881357 },
2089 "node_modules/progress": {
2090 "version": "2.0.3",
2091 "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
2092 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
2093 "license": "MIT",
2094 "engines": {
2095 "node": ">=0.4.0"
2096 }
2097 },
2098 "node_modules/proxy-agent": {
2099 "version": "6.5.0",
2100 "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz",
2101 "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==",
2102 "license": "MIT",
2103 "dependencies": {
2104 "agent-base": "^7.1.2",
2105 "debug": "^4.3.4",
2106 "http-proxy-agent": "^7.0.1",
2107 "https-proxy-agent": "^7.0.6",
2108 "lru-cache": "^7.14.1",
2109 "pac-proxy-agent": "^7.1.0",
2110 "proxy-from-env": "^1.1.0",
2111 "socks-proxy-agent": "^8.0.5"
2112 },
2113 "engines": {
2114 "node": ">= 14"
2115 }
2116 },
2117 "node_modules/proxy-agent/node_modules/lru-cache": {
2118 "version": "7.18.3",
2119 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
2120 "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
2121 "license": "ISC",
2122 "engines": {
2123 "node": ">=12"
2124 }
2125 },
2126 "node_modules/proxy-from-env": {
2127 "version": "1.1.0",
2128 "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
2129 "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
2130 "license": "MIT"
2131 },
2132 "node_modules/pump": {
2133 "version": "3.0.3",
2134 "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
2135 "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
2136 "license": "MIT",
2137 "dependencies": {
2138 "end-of-stream": "^1.1.0",
2139 "once": "^1.3.1"
2140 }
2141 },
2142 "node_modules/puppeteer": {
2143 "version": "24.23.0",
2144 "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.23.0.tgz",
2145 "integrity": "sha512-BVR1Lg8sJGKXY79JARdIssFWK2F6e1j+RyuJP66w4CUmpaXjENicmA3nNpUXA8lcTdDjAndtP+oNdni3T/qQqA==",
2146 "hasInstallScript": true,
1358 "node_modules/playwright": {
1359 "version": "1.58.2",
1360 "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz",
1361 "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==",
21471362 "license": "Apache-2.0",
21481363 "dependencies": {
2149 "@puppeteer/browsers": "2.10.10",
2150 "chromium-bidi": "9.1.0",
2151 "cosmiconfig": "^9.0.0",
2152 "devtools-protocol": "0.0.1508733",
2153 "puppeteer-core": "24.23.0",
2154 "typed-query-selector": "^2.12.0"
1364 "playwright-core": "1.58.2"
21551365 },
21561366 "bin": {
2157 "puppeteer": "lib/cjs/puppeteer/node/cli.js"
1367 "playwright": "cli.js"
21581368 },
21591369 "engines": {
21601370 "node": ">=18"
1371 },
1372 "optionalDependencies": {
1373 "fsevents": "2.3.2"
21611374 }
21621375 },
2163 "node_modules/puppeteer-core": {
2164 "version": "24.23.0",
2165 "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.23.0.tgz",
2166 "integrity": "sha512-yl25C59gb14sOdIiSnJ08XiPP+O2RjuyZmEG+RjYmCXO7au0jcLf7fRiyii96dXGUBW7Zwei/mVKfxMx/POeFw==",
1376 "node_modules/playwright-core": {
1377 "version": "1.58.2",
1378 "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz",
1379 "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==",
21671380 "license": "Apache-2.0",
2168 "dependencies": {
2169 "@puppeteer/browsers": "2.10.10",
2170 "chromium-bidi": "9.1.0",
2171 "debug": "^4.4.3",
2172 "devtools-protocol": "0.0.1508733",
2173 "typed-query-selector": "^2.12.0",
2174 "webdriver-bidi-protocol": "0.3.6",
2175 "ws": "^8.18.3"
1381 "bin": {
1382 "playwright-core": "cli.js"
21761383 },
21771384 "engines": {
21781385 "node": ">=18"
......@@ -2202,15 +1409,6 @@
22021409 "integrity": "sha512-ZvbtoduKQmD4PZeJPfH6Ql21qUWhaMxiHkIsH+FUnZqKDwNIXBtGg5zRZyHWomiGYk8n5+KMBPK7Mi4D0XWfNg==",
22031410 "license": "MIT"
22041411 },
2205 "node_modules/require-directory": {
2206 "version": "2.1.1",
2207 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
2208 "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
2209 "license": "MIT",
2210 "engines": {
2211 "node": ">=0.10.0"
2212 }
2213 },
22141412 "node_modules/resolve-from": {
22151413 "version": "5.0.0",
22161414 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
......@@ -2235,44 +1433,6 @@
22351433 "node": ">=0.12.0"
22361434 }
22371435 },
2238 "node_modules/smart-buffer": {
2239 "version": "4.2.0",
2240 "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
2241 "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
2242 "license": "MIT",
2243 "engines": {
2244 "node": ">= 6.0.0",
2245 "npm": ">= 3.0.0"
2246 }
2247 },
2248 "node_modules/socks": {
2249 "version": "2.8.7",
2250 "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
2251 "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
2252 "license": "MIT",
2253 "dependencies": {
2254 "ip-address": "^10.0.1",
2255 "smart-buffer": "^4.2.0"
2256 },
2257 "engines": {
2258 "node": ">= 10.0.0",
2259 "npm": ">= 3.0.0"
2260 }
2261 },
2262 "node_modules/socks-proxy-agent": {
2263 "version": "8.0.5",
2264 "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
2265 "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
2266 "license": "MIT",
2267 "dependencies": {
2268 "agent-base": "^7.1.2",
2269 "debug": "^4.3.4",
2270 "socks": "^2.8.3"
2271 },
2272 "engines": {
2273 "node": ">= 14"
2274 }
2275 },
22761436 "node_modules/source-map-support": {
22771437 "version": "0.5.21",
22781438 "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
......@@ -2298,89 +1458,12 @@
22981458 "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
22991459 "license": "MIT"
23001460 },
2301 "node_modules/streamx": {
2302 "version": "2.23.0",
2303 "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz",
2304 "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==",
2305 "license": "MIT",
2306 "dependencies": {
2307 "events-universal": "^1.0.0",
2308 "fast-fifo": "^1.3.2",
2309 "text-decoder": "^1.1.0"
2310 }
2311 },
2312 "node_modules/string-width": {
2313 "version": "4.2.3",
2314 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2315 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2316 "license": "MIT",
2317 "dependencies": {
2318 "emoji-regex": "^8.0.0",
2319 "is-fullwidth-code-point": "^3.0.0",
2320 "strip-ansi": "^6.0.1"
2321 },
2322 "engines": {
2323 "node": ">=8"
2324 }
2325 },
2326 "node_modules/strip-ansi": {
2327 "version": "6.0.1",
2328 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2329 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2330 "license": "MIT",
2331 "dependencies": {
2332 "ansi-regex": "^5.0.1"
2333 },
2334 "engines": {
2335 "node": ">=8"
2336 }
2337 },
23381461 "node_modules/style-mod": {
23391462 "version": "4.1.2",
23401463 "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz",
23411464 "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==",
23421465 "license": "MIT"
23431466 },
2344 "node_modules/tar-fs": {
2345 "version": "3.1.1",
2346 "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz",
2347 "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==",
2348 "license": "MIT",
2349 "dependencies": {
2350 "pump": "^3.0.0",
2351 "tar-stream": "^3.1.5"
2352 },
2353 "optionalDependencies": {
2354 "bare-fs": "^4.0.1",
2355 "bare-path": "^3.0.0"
2356 }
2357 },
2358 "node_modules/tar-stream": {
2359 "version": "3.1.7",
2360 "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
2361 "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
2362 "license": "MIT",
2363 "dependencies": {
2364 "b4a": "^1.6.4",
2365 "fast-fifo": "^1.2.0",
2366 "streamx": "^2.15.0"
2367 }
2368 },
2369 "node_modules/text-decoder": {
2370 "version": "1.2.3",
2371 "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
2372 "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
2373 "license": "Apache-2.0",
2374 "dependencies": {
2375 "b4a": "^1.6.4"
2376 }
2377 },
2378 "node_modules/tslib": {
2379 "version": "2.8.1",
2380 "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
2381 "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
2382 "license": "0BSD"
2383 },
23841467 "node_modules/type-detect": {
23851468 "version": "1.0.0",
23861469 "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz",
......@@ -2390,18 +1473,11 @@
23901473 "node": "*"
23911474 }
23921475 },
2393 "node_modules/typed-query-selector": {
2394 "version": "2.12.0",
2395 "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz",
2396 "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==",
2397 "license": "MIT"
2398 },
23991476 "node_modules/typescript": {
24001477 "version": "5.8.3",
24011478 "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
24021479 "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
24031480 "license": "Apache-2.0",
2404 "peer": true,
24051481 "bin": {
24061482 "tsc": "bin/tsc",
24071483 "tsserver": "bin/tsserver"
......@@ -2504,111 +1580,6 @@
25041580 "resolved": "https://registry.npmjs.org/warp10/-/warp10-2.1.0.tgz",
25051581 "integrity": "sha512-krhkqzJdUxAZv2Cx0Gz6dN1r7TTrG9RDewkDHBbJQIqbNTCdB5ZUHVh7VkA4DgrKW4ZXPPUQKCwmI/3btDse9A==",
25061582 "license": "MIT"
2507 },
2508 "node_modules/webdriver-bidi-protocol": {
2509 "version": "0.3.6",
2510 "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.6.tgz",
2511 "integrity": "sha512-mlGndEOA9yK9YAbvtxaPTqdi/kaCWYYfwrZvGzcmkr/3lWM+tQj53BxtpVd6qbC6+E5OnHXgCcAhre6AkXzxjA==",
2512 "license": "Apache-2.0"
2513 },
2514 "node_modules/wrap-ansi": {
2515 "version": "7.0.0",
2516 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2517 "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2518 "license": "MIT",
2519 "dependencies": {
2520 "ansi-styles": "^4.0.0",
2521 "string-width": "^4.1.0",
2522 "strip-ansi": "^6.0.0"
2523 },
2524 "engines": {
2525 "node": ">=10"
2526 },
2527 "funding": {
2528 "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2529 }
2530 },
2531 "node_modules/wrappy": {
2532 "version": "1.0.2",
2533 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2534 "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2535 "license": "ISC"
2536 },
2537 "node_modules/ws": {
2538 "version": "8.18.3",
2539 "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
2540 "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
2541 "license": "MIT",
2542 "engines": {
2543 "node": ">=10.0.0"
2544 },
2545 "peerDependencies": {
2546 "bufferutil": "^4.0.1",
2547 "utf-8-validate": ">=5.0.2"
2548 },
2549 "peerDependenciesMeta": {
2550 "bufferutil": {
2551 "optional": true
2552 },
2553 "utf-8-validate": {
2554 "optional": true
2555 }
2556 }
2557 },
2558 "node_modules/y18n": {
2559 "version": "5.0.8",
2560 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
2561 "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
2562 "license": "ISC",
2563 "engines": {
2564 "node": ">=10"
2565 }
2566 },
2567 "node_modules/yargs": {
2568 "version": "17.7.2",
2569 "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
2570 "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
2571 "license": "MIT",
2572 "dependencies": {
2573 "cliui": "^8.0.1",
2574 "escalade": "^3.1.1",
2575 "get-caller-file": "^2.0.5",
2576 "require-directory": "^2.1.1",
2577 "string-width": "^4.2.3",
2578 "y18n": "^5.0.5",
2579 "yargs-parser": "^21.1.1"
2580 },
2581 "engines": {
2582 "node": ">=12"
2583 }
2584 },
2585 "node_modules/yargs-parser": {
2586 "version": "21.1.1",
2587 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
2588 "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
2589 "license": "ISC",
2590 "engines": {
2591 "node": ">=12"
2592 }
2593 },
2594 "node_modules/yauzl": {
2595 "version": "2.10.0",
2596 "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
2597 "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
2598 "license": "MIT",
2599 "dependencies": {
2600 "buffer-crc32": "~0.2.3",
2601 "fd-slicer": "~1.1.0"
2602 }
2603 },
2604 "node_modules/zod": {
2605 "version": "3.25.76",
2606 "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
2607 "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
2608 "license": "MIT",
2609 "funding": {
2610 "url": "https://github.com/sponsors/colinhacks"
2611 }
26121583 }
26131584 }
26141585}
package.json+1-1
......@@ -15,7 +15,7 @@
1515 "lib": "file:lib",
1616 "marko": "^5.38.24",
1717 "msgpackr": "1.11.5",
18 "puppeteer": "24.23.0",
18 "playwright": "1.58.2",
1919 "source-map-support": "0.5.21",
2020 "typescript": "5.8.3",
2121 "unique-names-generator": "4.7.1",
src/q+a/image.tsx+23-27
......@@ -2,43 +2,39 @@ const port = Number(process.env.PORT ?? 3000);
22const width = 768;
33const cacheImageDir = path.resolve(".clover/question_images");
44
5// Cached browser session
65const getBrowser = RefCountedExpirable(
76 () =>
8 puppeteer.launch({
7 playwright.chromium.launch({
98 args: ["--no-sandbox", "--disable-setuid-sandbox"],
109 }),
1110 (b) => b.close(),
1211);
1312
1413export async function renderQuestionImage(question: Question) {
15 // this browser session will be reused if multiple images are generated
16 // either at the same time or within a 5-minute time span. the dispose
17 // symbol
1814 using sharedBrowser = await getBrowser();
1915 const b = sharedBrowser.value;
20
21 const p = await b.newPage();
22 await p.setUserAgent({ userAgent: "clover-qa-image" });
23 await p.setViewport({ width, height: 400 });
24 await p.goto(`http://localhost:${port}/q+a/${question.id}`);
25 try {
26 await p.waitForNetworkIdle({ idleTime: 100, timeout: 500 });
27 } catch (e) {}
28 const height = await p.evaluate(() => {
29 document.body.style.background = "#1a1b1c";
30 const e = document.querySelector("main")!;
31 return e.getBoundingClientRect().height;
32 });
33 const buf = await p.screenshot({
34 path: "screenshot.png",
35 type: "png",
36 captureBeyondViewport: true,
37 clip: { x: 0, width, y: 0, height: height, scale: 1.5 },
16 const ctx = await b.newContext({
17 userAgent: "clover-qa-image",
18 deviceScaleFactor: 1.5,
3819 });
39 await p.close();
40
41 return Buffer.from(buf);
20 try {
21 const p = await ctx.newPage();
22 await p.setViewportSize({ width, height: 400 });
23 await p.goto(`http://localhost:${port}/q+a/${question.id}`);
24 try {
25 await p.waitForLoadState("networkidle", { timeout: 500 });
26 } catch {}
27 const height = await p.evaluate(() => {
28 document.body.style.background = "#1a1b1c";
29 return document.querySelector("main")!.getBoundingClientRect().height;
30 });
31 return await p.screenshot({
32 type: "png",
33 clip: { x: 0, y: 0, width, height },
34 });
35 } finally {
36 await ctx.close();
37 }
4238}
4339
4440export async function getQuestionImage(
......@@ -77,7 +73,7 @@ export async function getQuestionImage(
7773import * as crypto from "node:crypto";
7874import * as fs from "#sitegen/fs";
7975import * as path from "node:path";
80import * as puppeteer from "puppeteer";
8176import { Question } from "@/q+a/models/Question.ts";
8277import { RefCountedExpirable } from "lib/async.ts";
8378import * as view from "#sitegen/view";
79import * as playwright from "playwright";