diff --git a/package-lock.json b/package-lock.json index d1f6f07..4d6e6a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,41 +9,41 @@ "version": "1.7.6", "license": "MIT", "dependencies": { - "@headlessui/react": "^2.1.10", + "@headlessui/react": "^2.2.0", "clsx": "^2.1.1", - "csv-parse": "^5.5.6", - "csv-stringify": "^6.5.1", - "electron-log": "^5.2.0", + "csv-parse": "^5.6.0", + "csv-stringify": "^6.5.2", + "electron-log": "^5.2.4", "electron-store": "^10.0.0", "electron-unhandled": "^5.0.0", "electron-util": "^0.18.1", "electron-window-state": "^5.0.3", "humanize-duration": "^3.32.1", - "ky": "^1.7.2", + "ky": "^1.7.4", "md5": "^2.3.0", "os-name": "^6.0.0", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-dropzone": "^14.2.9", - "react-error-boundary": "^4.1.1", + "react-dropzone": "^14.3.5", + "react-error-boundary": "^5.0.0", "react-navigator-status": "^0.1.2", "react-router-dom": "^5.3.4", - "update-electron-app": "^3.0.0", - "use-immer": "^0.10.0" + "update-electron-app": "^3.1.0", + "use-immer": "^0.11.0" }, "devDependencies": { - "@electron-forge/cli": "^7.5.0", - "@electron-forge/maker-deb": "^7.5.0", - "@electron-forge/maker-dmg": "^7.5.0", - "@electron-forge/maker-rpm": "^7.5.0", - "@electron-forge/maker-squirrel": "^7.5.0", - "@electron-forge/maker-zip": "^7.5.0", - "@electron-forge/plugin-auto-unpack-natives": "^7.5.0", - "@electron-forge/plugin-fuses": "^7.5.0", - "@electron-forge/plugin-vite": "^7.5.0", - "@electron-forge/publisher-github": "^7.5.0", + "@electron-forge/cli": "^7.6.0", + "@electron-forge/maker-deb": "^7.6.0", + "@electron-forge/maker-dmg": "^7.6.0", + "@electron-forge/maker-rpm": "^7.6.0", + "@electron-forge/maker-squirrel": "^7.6.0", + "@electron-forge/maker-zip": "^7.6.0", + "@electron-forge/plugin-auto-unpack-natives": "^7.6.0", + "@electron-forge/plugin-fuses": "^7.6.0", + "@electron-forge/plugin-vite": "^7.6.0", + "@electron-forge/publisher-github": "^7.6.0", "@electron/fuses": "^1.8.0", - "@heroicons/react": "^2.1.5", + "@heroicons/react": "^2.2.0", "@types/electron-squirrel-startup": "^1.0.2", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.1", @@ -51,21 +51,20 @@ "@typescript-eslint/parser": "^5.62.0", "autoprefixer": "^10.4.20", "cross-env": "^7.0.3", - "dotenv": "^16.4.5", - "electron": "33.0.1", + "dotenv": "^16.4.7", + "electron": "33.2.1", "electron-squirrel-startup": "^1.0.1", "eslint": "^8.57.1", "eslint-plugin-import": "^2.31.0", - "postcss": "^8.4.47", - "prettier": "^3.3.3", + "postcss": "^8.4.49", + "prettier": "^3.4.2", "prettier-plugin-organize-imports": "^4.1.0", - "prettier-plugin-packagejson": "^2.5.3", - "prettier-plugin-tailwindcss": "^0.6.8", - "tailwindcss": "^3.4.14", + "prettier-plugin-packagejson": "^2.5.6", + "prettier-plugin-tailwindcss": "^0.6.9", + "tailwindcss": "^3.4.17", "ts-node": "^10.9.2", - "typescript": "~4.5.4", - "vite": "^5.4.9", - "vite-plugin-static-copy": "^0.17.1" + "typescript": "~5.7.2", + "vite": "^6.0.6" } }, "node_modules/@alloc/quick-lru": { @@ -107,9 +106,9 @@ } }, "node_modules/@electron-forge/cli": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-7.5.0.tgz", - "integrity": "sha512-dlxr4ac5ONWs1Wmbgh18rclxcp9Fe5SzCF9ookp08Z1w4YP9FbQd1SHs0oLKWLF6qH9qdX8H2EWB9Nt6tOzC5g==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-7.6.0.tgz", + "integrity": "sha512-5G7rBbvTb4HJDiCuhncBzNaRj1e1dEmrk6jExpziqv4Y8p9b+nxfdOjsjWu0hvAl4k2V65Rnm1uEkAA7MmlZOQ==", "dev": true, "funding": [ { @@ -123,8 +122,8 @@ ], "license": "MIT", "dependencies": { - "@electron-forge/core": "7.5.0", - "@electron-forge/shared-types": "7.5.0", + "@electron-forge/core": "7.6.0", + "@electron-forge/shared-types": "7.6.0", "@electron/get": "^3.0.0", "chalk": "^4.0.0", "commander": "^4.1.1", @@ -153,9 +152,9 @@ } }, "node_modules/@electron-forge/core": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-7.5.0.tgz", - "integrity": "sha512-Hg/fXabRZtMbyrtnpzpb3i49qNai+juCg+6bgyjYfWgJGr5VGH947lWd7skujH5qJ+Y7FgvANDGnenZuQwxZNw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-7.6.0.tgz", + "integrity": "sha512-DgkjpoK+SPExNTLZL1v81zl0RswQWvMXkMnMqZYf0/S/KHKTXWsoE9KTzr8fDGpiG3nUJXWMqHyny9zLoUdKXQ==", "dev": true, "funding": [ { @@ -169,20 +168,20 @@ ], "license": "MIT", "dependencies": { - "@electron-forge/core-utils": "7.5.0", - "@electron-forge/maker-base": "7.5.0", - "@electron-forge/plugin-base": "7.5.0", - "@electron-forge/publisher-base": "7.5.0", - "@electron-forge/shared-types": "7.5.0", - "@electron-forge/template-base": "7.5.0", - "@electron-forge/template-vite": "7.5.0", - "@electron-forge/template-vite-typescript": "7.5.0", - "@electron-forge/template-webpack": "7.5.0", - "@electron-forge/template-webpack-typescript": "7.5.0", - "@electron-forge/tracer": "7.5.0", + "@electron-forge/core-utils": "7.6.0", + "@electron-forge/maker-base": "7.6.0", + "@electron-forge/plugin-base": "7.6.0", + "@electron-forge/publisher-base": "7.6.0", + "@electron-forge/shared-types": "7.6.0", + "@electron-forge/template-base": "7.6.0", + "@electron-forge/template-vite": "7.6.0", + "@electron-forge/template-vite-typescript": "7.6.0", + "@electron-forge/template-webpack": "7.6.0", + "@electron-forge/template-webpack-typescript": "7.6.0", + "@electron-forge/tracer": "7.6.0", "@electron/get": "^3.0.0", "@electron/packager": "^18.3.5", - "@electron/rebuild": "^3.2.10", + "@electron/rebuild": "^3.7.0", "@malept/cross-spawn-promise": "^2.0.0", "chalk": "^4.0.0", "debug": "^4.3.1", @@ -210,14 +209,14 @@ } }, "node_modules/@electron-forge/core-utils": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-7.5.0.tgz", - "integrity": "sha512-PtyQT6qeOEJsi4ltoB7Jb6YUUCwK3gDt5gVyAF2aJ8eZi9rJ0hasHc5vjcmBaz9FwDMjYZrBD8oRBhNgbhEakQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-7.6.0.tgz", + "integrity": "sha512-7XVKHPI87p558kVen280yB1UC2cVGHvrMfnPFv4zm3TQHEVaKWKW+5y+UZsKUnGAukNlahHWuHF/1S8dRCJNEg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.5.0", - "@electron/rebuild": "^3.2.10", + "@electron-forge/shared-types": "7.6.0", + "@electron/rebuild": "^3.7.0", "@malept/cross-spawn-promise": "^2.0.0", "chalk": "^4.0.0", "debug": "^4.3.1", @@ -232,13 +231,13 @@ } }, "node_modules/@electron-forge/maker-base": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-7.5.0.tgz", - "integrity": "sha512-+jluKW2UPxaI1+qQQ8fqaUVVbZohRjOSF0Iti7STRFbgJKJitzPB24Cjji9qJCKIx5klMeEiwp0YPAE/d9Xt8g==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-7.6.0.tgz", + "integrity": "sha512-GrVYhiA/g0NXrI13LcXrT+JKLlq8kkYyO6w0jQORqDFeRSLRoLhrru5w0msg0wINGugBe+/NwyAyFZ2KaQ6o4g==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.5.0", + "@electron-forge/shared-types": "7.6.0", "fs-extra": "^10.0.0", "which": "^2.0.2" }, @@ -247,14 +246,14 @@ } }, "node_modules/@electron-forge/maker-deb": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-7.5.0.tgz", - "integrity": "sha512-rMXYJzu2LuyDQ5TX4VzQ2OSWDFC7Y1nJpBoyJvXfkA5fF5NNScOFYPv1YzEYAXMcG5hCOVLorsG9HDTEC8uh9g==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-7.6.0.tgz", + "integrity": "sha512-vTg/wJwfdWM4Hm1NlU0g30ODn6z3NBukQdWOS2xXJQ/Y0KnQRVN7ThSlxxzWJy0tI6hGAlpziJjpXozTfhM/Nw==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/maker-base": "7.5.0", - "@electron-forge/shared-types": "7.5.0" + "@electron-forge/maker-base": "7.6.0", + "@electron-forge/shared-types": "7.6.0" }, "engines": { "node": ">= 16.4.0" @@ -264,14 +263,14 @@ } }, "node_modules/@electron-forge/maker-dmg": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-dmg/-/maker-dmg-7.5.0.tgz", - "integrity": "sha512-OcySukBT6FQJRbb0CKXnre4e0JinJfDGteCOLypB8UsN5Wg/4lIDB0hMhBmWGPJkZXKUDGkB1lhkdcLKbzT50Q==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-dmg/-/maker-dmg-7.6.0.tgz", + "integrity": "sha512-Wa4XG9r4RldF5uy7vef5/BR8o/P+BmltZIbZulnFwhOYEu4Quj+SDF1bet7y3tM2i1am/sEocFcBHXC7CRk8xg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/maker-base": "7.5.0", - "@electron-forge/shared-types": "7.5.0", + "@electron-forge/maker-base": "7.6.0", + "@electron-forge/shared-types": "7.6.0", "fs-extra": "^10.0.0" }, "engines": { @@ -282,14 +281,14 @@ } }, "node_modules/@electron-forge/maker-rpm": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-rpm/-/maker-rpm-7.5.0.tgz", - "integrity": "sha512-NzrtEqa61D++GoaURpicj9oxwOA/z0wcZaeipsrzUEBXE53UAo47tdIZjh396MhC0z9Mr6bxgDwpPUZF9QgfDA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-rpm/-/maker-rpm-7.6.0.tgz", + "integrity": "sha512-pZGpZ+Oum7uyykwi73e+s/LnWDsG+B0t1iU9jCaZObIR0lcISK5VemeIlgm1A4HlDHODdBZ5AEJfIJ5p9t7w/w==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/maker-base": "7.5.0", - "@electron-forge/shared-types": "7.5.0" + "@electron-forge/maker-base": "7.6.0", + "@electron-forge/shared-types": "7.6.0" }, "engines": { "node": ">= 16.4.0" @@ -299,14 +298,14 @@ } }, "node_modules/@electron-forge/maker-squirrel": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-7.5.0.tgz", - "integrity": "sha512-fz3vbp1BnbQWeZVVM3lKOGhrCVKLjAXKDTntBL2+8Rz02a63eozGjOtC5KZYXax6nM4TF6LvwjagY/qTs5jFag==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-7.6.0.tgz", + "integrity": "sha512-8tqsJBRAe37YZSKv1fPc1tijQljkSlUQCaeun37ZOM/viurSeydt5nu2M+UDmJHAfD/PRZMjnYvCCWH+08wGVg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/maker-base": "7.5.0", - "@electron-forge/shared-types": "7.5.0", + "@electron-forge/maker-base": "7.6.0", + "@electron-forge/shared-types": "7.6.0", "fs-extra": "^10.0.0" }, "engines": { @@ -317,14 +316,14 @@ } }, "node_modules/@electron-forge/maker-zip": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-7.5.0.tgz", - "integrity": "sha512-gIO3bEbubOJqWV6kd0b9nBwTrFfFQv/K8PAqg6e0uSZiy7QuSCFZVAZse02gO3AzxVDSVjjTQ4nmXBXC4Glh1A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-7.6.0.tgz", + "integrity": "sha512-sDPQoEs6CnkxsydvnfZByBGf+RREky2xqiusWCvaPnUoLRpq96SFaBb1BRCS6tQKQHKkaEUXEC5pBdrYGLHPVg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/maker-base": "7.5.0", - "@electron-forge/shared-types": "7.5.0", + "@electron-forge/maker-base": "7.6.0", + "@electron-forge/shared-types": "7.6.0", "cross-zip": "^4.0.0", "fs-extra": "^10.0.0", "got": "^11.8.5" @@ -334,41 +333,41 @@ } }, "node_modules/@electron-forge/plugin-auto-unpack-natives": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/plugin-auto-unpack-natives/-/plugin-auto-unpack-natives-7.5.0.tgz", - "integrity": "sha512-cT/yTAr5Zd81HANi5bdyCoSG9nzIrB1WIEkFA7sWuyATiOjk9SGKn1aM543XWJ/TFkTg0800JpyocsSC9wOzEg==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-auto-unpack-natives/-/plugin-auto-unpack-natives-7.6.0.tgz", + "integrity": "sha512-rSWRLJinRIxtlkLke0uJzOLksRnXszu3hZrzlgOWChDuMFM298yb6gxWAjYh94VoNxXrUHl9Cd4ia/5+wgPwwg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/plugin-base": "7.5.0", - "@electron-forge/shared-types": "7.5.0" + "@electron-forge/plugin-base": "7.6.0", + "@electron-forge/shared-types": "7.6.0" }, "engines": { "node": ">= 16.4.0" } }, "node_modules/@electron-forge/plugin-base": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-7.5.0.tgz", - "integrity": "sha512-44AbXSb5lDY8uHIo0mJ91atOSWgxv3iuECk07/gDBiuMPX62dwHnLteEjQF4GBXJZTpnV7SxhD+d2AUBQmoojw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-7.6.0.tgz", + "integrity": "sha512-9llu4algWZJAJFVVZtd/Xa71c0QVxRmoMrpHX2SB+XJ+ZlFVdXrlnhn2hc/CnM0by9cBElyAL3cx3533OKS7lA==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.5.0" + "@electron-forge/shared-types": "7.6.0" }, "engines": { "node": ">= 16.4.0" } }, "node_modules/@electron-forge/plugin-fuses": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/plugin-fuses/-/plugin-fuses-7.5.0.tgz", - "integrity": "sha512-nF5C4TN/rzN95F5HwAkyYTgy44Mu3EAys8O5zShzg7rye8d5BTnx2peAGtROZcChSaHRql09EeoOswNtuJNMcw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-fuses/-/plugin-fuses-7.6.0.tgz", + "integrity": "sha512-3M6LN0B/y9cZvjpAX7zKVGTNximOEIlYvh2HJJvRARrwOE3eGRBWZsPZg7etqSZtxS6ENtUt/kM88KYOyLfB0w==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/plugin-base": "7.5.0", - "@electron-forge/shared-types": "7.5.0" + "@electron-forge/plugin-base": "7.6.0", + "@electron-forge/shared-types": "7.6.0" }, "engines": { "node": ">= 16.4.0" @@ -378,16 +377,16 @@ } }, "node_modules/@electron-forge/plugin-vite": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/plugin-vite/-/plugin-vite-7.5.0.tgz", - "integrity": "sha512-aJHJUL1vL6gtJlo3fyxPRqKe1X1zIVl//jPnrHFFQI5XyUQrOX58mHpZKpDws/b1bfGx68r6aaOaNhooXjwWAw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-vite/-/plugin-vite-7.6.0.tgz", + "integrity": "sha512-9HyiufhVXJ8SWhL9bzRESUa7JpF89EPZ79aYG+/qFmDbO7SxVMxF/z8oSPA1CsuvyfMzNSkPy8oCUoUvbv4Qmg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/core-utils": "7.5.0", - "@electron-forge/plugin-base": "7.5.0", - "@electron-forge/shared-types": "7.5.0", - "@electron-forge/web-multi-logger": "7.5.0", + "@electron-forge/core-utils": "7.6.0", + "@electron-forge/plugin-base": "7.6.0", + "@electron-forge/shared-types": "7.6.0", + "@electron-forge/web-multi-logger": "7.6.0", "chalk": "^4.0.0", "debug": "^4.3.1", "fs-extra": "^10.0.0", @@ -398,27 +397,27 @@ } }, "node_modules/@electron-forge/publisher-base": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-7.5.0.tgz", - "integrity": "sha512-PcF3jWA+oXRwNVWjKW6GxHJywJ62QXpYF/8SMs7kgKzBDzLqrbUnWuaXoCP5kCP+AxM495ZU5L2dyJek1eM+VA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-7.6.0.tgz", + "integrity": "sha512-IL9bbIb/4J4I1bfW53RAmE/Al835XJsOwFXTLUnxnaGtbWg5jz7eiyw9Vl8XvvfHN1Dpoa9f94to8keU2MXgDg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.5.0" + "@electron-forge/shared-types": "7.6.0" }, "engines": { "node": ">= 16.4.0" } }, "node_modules/@electron-forge/publisher-github": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/publisher-github/-/publisher-github-7.5.0.tgz", - "integrity": "sha512-876lMpsNzVcfJ0sdq/aP93dal7mMcnEa78AQoQb/vmewvwR7TtNjYyv/+Wtyu/M/BVyZ4sZB8Dd/C2xOMFSyrQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/publisher-github/-/publisher-github-7.6.0.tgz", + "integrity": "sha512-hK69MeB0o+gLc/xlVRebs4m2NEBWi26Ep4GMpAu718NXaTpOINpGc9jzw+U2n3qX1lN8iIFxovg3s+fMtSquJg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/publisher-base": "7.5.0", - "@electron-forge/shared-types": "7.5.0", + "@electron-forge/publisher-base": "7.6.0", + "@electron-forge/shared-types": "7.6.0", "@octokit/core": "^3.2.4", "@octokit/plugin-retry": "^3.0.9", "@octokit/request-error": "^2.0.5", @@ -435,15 +434,15 @@ } }, "node_modules/@electron-forge/shared-types": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-7.5.0.tgz", - "integrity": "sha512-VXuLVGYa3ZulBlmjA40ZEpk+iPH5ebN0v7t27wDt3rm23bph2aQrL7uSTLXhobenXYBVKggXnQt6rJ9A7FCDNQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-7.6.0.tgz", + "integrity": "sha512-qpJRaPo/tx/+t3iFdUWnK4Tk/elo+Izk3yS+BhzfaF0XOK8wS+NNYW4vycK6eVMxN3Yu7/924MQFtPlCKlWHvA==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/tracer": "7.5.0", + "@electron-forge/tracer": "7.6.0", "@electron/packager": "^18.3.5", - "@electron/rebuild": "^3.2.10", + "@electron/rebuild": "^3.7.0", "listr2": "^7.0.2" }, "engines": { @@ -451,13 +450,13 @@ } }, "node_modules/@electron-forge/template-base": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-7.5.0.tgz", - "integrity": "sha512-wEz4FI90jje4FdwJ4FzqUejodfioNcJjlgG2Ci1FiRn4Qv0jX4MP8SEgKmnD44181/44HgMa429zxRv/fDYzOw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-7.6.0.tgz", + "integrity": "sha512-lhvab8a/knuGnpzep8BMOEkgnkHGr11QELGBzslEnA6rwZi9DDyEgmMCk6VWOVQNHMeuEqh5XlgjVqJmjW6nIQ==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.5.0", + "@electron-forge/shared-types": "7.6.0", "@malept/cross-spawn-promise": "^2.0.0", "debug": "^4.3.1", "fs-extra": "^10.0.0", @@ -468,14 +467,14 @@ } }, "node_modules/@electron-forge/template-vite": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-7.5.0.tgz", - "integrity": "sha512-AkMO5nW5jC8ijCYeoAK7hu+K5o7NMoHNsn71eepJ/kjOnSxXjJeBVGmP4DgzF2zc6AgeRz2TCKx6P8GUtFG5cw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-7.6.0.tgz", + "integrity": "sha512-C0V0dGDO1hLXnAM9lGnZU0esNOTbxwcgILWJXv0mYErBkmputAIi3HM1Is3h3JdSijXgVbRWcIQxFxJlOCpB/A==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.5.0", - "@electron-forge/template-base": "7.5.0", + "@electron-forge/shared-types": "7.6.0", + "@electron-forge/template-base": "7.6.0", "fs-extra": "^10.0.0" }, "engines": { @@ -483,14 +482,14 @@ } }, "node_modules/@electron-forge/template-vite-typescript": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-7.5.0.tgz", - "integrity": "sha512-bD9QQ6uEsDHp6/V7odCkoK53egy0A4LEh++F1VYFt7SWJ5+InkcSLww7ELz2hrNmpmXb+euRrNagL1gorPToSA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-7.6.0.tgz", + "integrity": "sha512-i2Bt5Hehoq2CNNrUQjl8DQX7VatBMQ6mv+CCa+m+EV92nUYxXsoFva62/5ITpc3gFAGd1upw/S7dTbHV6GOwsA==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.5.0", - "@electron-forge/template-base": "7.5.0", + "@electron-forge/shared-types": "7.6.0", + "@electron-forge/template-base": "7.6.0", "fs-extra": "^10.0.0" }, "engines": { @@ -498,14 +497,14 @@ } }, "node_modules/@electron-forge/template-webpack": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-7.5.0.tgz", - "integrity": "sha512-Il9dO4VMhxibsYTsKRkccWUN3WFg55PEQFL93oarFcEtAT3sjMx/1bZDj/2AIHqbwIf7IrCylPKiPP2uUNOM9Q==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-7.6.0.tgz", + "integrity": "sha512-+HEf0ryUfLpHvl27TXSdP2Ob69+ktNtr5EnmroZGGIxhSAtEs4HloPtDF9PSfBzm38pZhQBZn78kY9LbITTGjg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.5.0", - "@electron-forge/template-base": "7.5.0", + "@electron-forge/shared-types": "7.6.0", + "@electron-forge/template-base": "7.6.0", "fs-extra": "^10.0.0" }, "engines": { @@ -513,14 +512,14 @@ } }, "node_modules/@electron-forge/template-webpack-typescript": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-7.5.0.tgz", - "integrity": "sha512-Q11xAzFxWtES0bwykMd8MAzrVRtmSruXQxQIvqM7Qf3VmU8joq8v5njmn13LeCDkcRGjALiJqO8EsgsW3bttNw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-7.6.0.tgz", + "integrity": "sha512-fDj4DkGxJJjGL8lpowFnkX7PvV9koLHKJuyusK8p8ayVMGoHpHrIcVCrV06tKYOvhFrL/ahW+CKKvjlxF8niEg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.5.0", - "@electron-forge/template-base": "7.5.0", + "@electron-forge/shared-types": "7.6.0", + "@electron-forge/template-base": "7.6.0", "fs-extra": "^10.0.0" }, "engines": { @@ -528,9 +527,9 @@ } }, "node_modules/@electron-forge/tracer": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/tracer/-/tracer-7.5.0.tgz", - "integrity": "sha512-1dE0wKCmv/K3BXCH70o2jp/y2kXgZQm73gIvzyadySXYwu2L4BWxhAO+Q+JsnbUk+nclHEup5ph4D0JoPIWLcQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/tracer/-/tracer-7.6.0.tgz", + "integrity": "sha512-Rn76RHqNhLyZDnu+xY/X73+bv+Q09XKaZBL/WvlYBbvrrHe26NOHJ3IHXxkWRokSWd4B7lOGLGKm3j1Il8dVbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -541,9 +540,9 @@ } }, "node_modules/@electron-forge/web-multi-logger": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@electron-forge/web-multi-logger/-/web-multi-logger-7.5.0.tgz", - "integrity": "sha512-NE7Y9dPp67ipIbht8rCy10SeZweyw4GaQse0dykfxbTzcmPfnhvgDHPk4aqUW4S1249Chd6XI1PkLKnbTlTjxg==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@electron-forge/web-multi-logger/-/web-multi-logger-7.6.0.tgz", + "integrity": "sha512-Ln4Rn1H/hxs9USvwWmvUYnOIR8kobtglYWJXCERrua8A0zCWsVrs3edO/oKrg68eBd30tiDiJYGLme1ZEXxt+A==", "dev": true, "license": "MIT", "dependencies": { @@ -775,9 +774,9 @@ } }, "node_modules/@electron/osx-sign": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.1.tgz", - "integrity": "sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.2.tgz", + "integrity": "sha512-KqVlm9WMWq19lBpCXQoThC/Koaiji2zotUDYwZDaZlZZym+FXY9mQW8wN6sUQ93nkVc42f3TQ1S/XN9S1kjM5Q==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -797,9 +796,9 @@ } }, "node_modules/@electron/packager": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.3.5.tgz", - "integrity": "sha512-ClgTxXTt3MesWAcjIxIkgxELjTcllw1FRoVsihP7uT48kpDMqI71p4XvnMWbq8PvU57TcrKICAaLkxRhbc+/wQ==", + "version": "18.3.6", + "resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.3.6.tgz", + "integrity": "sha512-1eXHB5t+SQKvUiDpWGpvr90ZSSbXj+isrh3YbjCTjKT4bE4SQrKSBfukEAaBvp67+GXHFtCHjQgN9qSTFIge+Q==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -849,9 +848,9 @@ } }, "node_modules/@electron/rebuild": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.7.0.tgz", - "integrity": "sha512-VW++CNSlZwMYP7MyXEbrKjpzEwhB5kDNbzGtiPEjwYysqyTCF+YbNJ210Dj3AjWsGSV4iEEwNkmJN9yGZmVvmw==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.7.1.tgz", + "integrity": "sha512-sKGD+xav4Gh25+LcLY0rjIwcCFTw+f/HU1pB48UVbwxXXRGaXEqIH0AaYKN46dgd/7+6kuiDXzoyAEvx1zCsdw==", "dev": true, "license": "MIT", "dependencies": { @@ -973,9 +972,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", "cpu": [ "ppc64" ], @@ -986,13 +985,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", "cpu": [ "arm" ], @@ -1003,13 +1002,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", "cpu": [ "arm64" ], @@ -1020,13 +1019,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", "cpu": [ "x64" ], @@ -1037,13 +1036,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", "cpu": [ "arm64" ], @@ -1054,13 +1053,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", "cpu": [ "x64" ], @@ -1071,13 +1070,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", "cpu": [ "arm64" ], @@ -1088,13 +1087,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", "cpu": [ "x64" ], @@ -1105,13 +1104,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", "cpu": [ "arm" ], @@ -1122,13 +1121,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", "cpu": [ "arm64" ], @@ -1139,13 +1138,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", "cpu": [ "ia32" ], @@ -1156,13 +1155,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", "cpu": [ "loong64" ], @@ -1173,13 +1172,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", "cpu": [ "mips64el" ], @@ -1190,13 +1189,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", "cpu": [ "ppc64" ], @@ -1207,13 +1206,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", "cpu": [ "riscv64" ], @@ -1224,13 +1223,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", "cpu": [ "s390x" ], @@ -1241,13 +1240,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", "cpu": [ "x64" ], @@ -1258,13 +1257,30 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", "cpu": [ "x64" ], @@ -1275,13 +1291,30 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", "cpu": [ "x64" ], @@ -1292,13 +1325,13 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", "cpu": [ "x64" ], @@ -1309,13 +1342,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", "cpu": [ "arm64" ], @@ -1326,13 +1359,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", "cpu": [ "ia32" ], @@ -1343,13 +1376,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", "cpu": [ "x64" ], @@ -1360,7 +1393,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -1484,9 +1517,9 @@ "license": "MIT" }, "node_modules/@headlessui/react": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.1.10.tgz", - "integrity": "sha512-6mLa2fjMDAFQi+/R10B+zU3edsUk/MDtENB2zHho0lqKU1uzhAfJLUduWds4nCo8wbl3vULtC5rJfZAQ1yqIng==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.0.tgz", + "integrity": "sha512-RzCEg+LXsuI7mHiSomsu/gBJSjpupm6A1qIZ5sWjd7JhARNlMiSA4kKfJpCKwU9tE+zMRterhhrP74PvfJrpXQ==", "license": "MIT", "dependencies": { "@floating-ui/react": "^0.26.16", @@ -1498,18 +1531,18 @@ "node": ">=10" }, "peerDependencies": { - "react": "^18", - "react-dom": "^18" + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" } }, "node_modules/@heroicons/react": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.1.5.tgz", - "integrity": "sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz", + "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==", "dev": true, "license": "MIT", "peerDependencies": { - "react": ">= 16" + "react": ">= 16 || ^19.0.0-rc" } }, "node_modules/@humanwhocodes/config-array": { @@ -2798,9 +2831,9 @@ } }, "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4110,9 +4143,9 @@ } }, "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==", "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -4177,15 +4210,15 @@ "license": "MIT" }, "node_modules/csv-parse": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.6.tgz", - "integrity": "sha512-uNpm30m/AGSkLxxy7d9yRXpJQFrZzVWLFBkS+6ngPcZkw/5k3L/jjFuj7tVnEpRn+QgmiXr21nDlhCiUK4ij2A==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.6.0.tgz", + "integrity": "sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==", "license": "MIT" }, "node_modules/csv-stringify": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.5.1.tgz", - "integrity": "sha512-+9lpZfwpLntpTIEpFbwQyWuW/hmI/eHuJZD1XzeZpfZTqkf1fyvBbBLXTJJMsBuuS11uTShMqPwzx4A6ffXgRQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.5.2.tgz", + "integrity": "sha512-RFPahj0sXcmUyjrObAK+DOWtMvMIFV328n4qZJhgX3x2RqkQgOTU2mCUmiFR0CzM6AzChlRSUErjiJeEt8BaQA==", "license": "MIT" }, "node_modules/data-view-buffer": { @@ -4528,9 +4561,9 @@ } }, "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -4568,9 +4601,9 @@ "license": "MIT" }, "node_modules/electron": { - "version": "33.0.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-33.0.1.tgz", - "integrity": "sha512-PipPnWH4gvf7o+P8jlKQZGgPfb5eHcLgTrnKkFzb98MXhyPjVJYCR7YWqcawZ8IfyJCut8vMxLuBFLT1Ag8TSQ==", + "version": "33.2.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-33.2.1.tgz", + "integrity": "sha512-SG/nmSsK9Qg1p6wAW+ZfqU+AV8cmXMTIklUL18NnOKfZLlum4ZsDoVdmmmlL39ZmeCaq27dr7CgslRPahfoVJg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -5023,9 +5056,9 @@ } }, "node_modules/electron-log": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-5.2.0.tgz", - "integrity": "sha512-VjLkvaLmbP3AOGOh5Fob9M8bFU0mmeSAb5G2EoTBx+kQLf2XA/0byzjsVGBTHhikbT+m1AB27NEQUv9wX9nM8w==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-5.2.4.tgz", + "integrity": "sha512-iX12WXc5XAaKeHg2QpiFjVwL+S1NVHPFd3V5RXtCmKhpAzXsVQnR3UEc0LovM6p6NkUQxDWnkdkaam9FNUVmCA==", "license": "MIT", "engines": { "node": ">= 14" @@ -5601,9 +5634,9 @@ "optional": true }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -5611,32 +5644,34 @@ "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" } }, "node_modules/escalade": { @@ -6018,9 +6053,9 @@ } }, "node_modules/execa/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, "license": "MIT", "dependencies": { @@ -6124,9 +6159,9 @@ "license": "Apache-2.0" }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, "license": "MIT", "dependencies": { @@ -6149,7 +6184,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -6164,6 +6199,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express-ws": { @@ -6310,21 +6349,21 @@ } }, "node_modules/file-selector": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", - "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-2.1.2.tgz", + "integrity": "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==", "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.7.0" }, "engines": { "node": ">= 12" } }, "node_modules/file-selector/node_modules/tslib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", - "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/filename-reserved-regex": { @@ -8079,9 +8118,9 @@ } }, "node_modules/ky": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.7.2.tgz", - "integrity": "sha512-OzIvbHKKDpi60TnF9t7UUVAF1B4mcqc02z5PIvrm08Wyb+yOcz63GRvEuVxNT18a9E1SrNouhB4W2NNLeD7Ykg==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.7.4.tgz", + "integrity": "sha512-zYEr/gh7uLW2l4su11bmQ2M9xLgQLjyvx58UyNM/6nuqyWFHPX5ktMjvpev3F8QWdjSsHUpnWew4PBCswBNuMQ==", "license": "MIT", "engines": { "node": ">=18" @@ -8105,13 +8144,16 @@ } }, "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/lines-and-columns": { @@ -8711,9 +8753,9 @@ "optional": true }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, "funding": [ { @@ -9408,9 +9450,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true, "license": "MIT" }, @@ -9581,9 +9623,9 @@ } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "funding": [ { @@ -9602,7 +9644,7 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -9683,19 +9725,6 @@ } } }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, "node_modules/postcss-nested": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", @@ -9780,9 +9809,9 @@ } }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, "license": "MIT", "bin": { @@ -9813,13 +9842,13 @@ } }, "node_modules/prettier-plugin-packagejson": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.5.3.tgz", - "integrity": "sha512-ATMEEXr+ywls1kgrZEWl4SBPEm0uDdyDAjyNzUC0/Z8WZTD3RqbJcQDR+Dau+wYkW9KHK6zqQIsFyfn+9aduWg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.5.6.tgz", + "integrity": "sha512-TY7KiLtyt6Tlf53BEbXUWkN0+TRdHKgIMmtXtDCyHH6yWnZ50Lwq6Vb6lyjapZrhDTXooC4EtlY5iLe1sCgi5w==", "dev": true, "license": "MIT", "dependencies": { - "sort-package-json": "2.10.1", + "sort-package-json": "2.12.0", "synckit": "0.9.2" }, "peerDependencies": { @@ -9832,9 +9861,9 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.8.tgz", - "integrity": "sha512-dGu3kdm7SXPkiW4nzeWKCl3uoImdd5CTZEJGxyypEPL37Wj0HT2pLqjrvSei1nTeuQfO4PUfjeW5cTUNRLZ4sA==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.9.tgz", + "integrity": "sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==", "dev": true, "license": "MIT", "engines": { @@ -10111,13 +10140,13 @@ } }, "node_modules/react-dropzone": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.9.tgz", - "integrity": "sha512-jRZsMC7h48WONsOLHcmhyn3cRWJoIPQjPApvt/sJVfnYaB3Qltn025AoRTTJaj4WdmmgmLl6tUQg1s0wOhpodQ==", + "version": "14.3.5", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.3.5.tgz", + "integrity": "sha512-9nDUaEEpqZLOz5v5SUcFA0CjM4vq8YbqO0WRls+EYT7+DvxUdzDPKNCPLqGfj3YL9MsniCLCD4RFA6M95V6KMQ==", "license": "MIT", "dependencies": { - "attr-accept": "^2.2.2", - "file-selector": "^0.6.0", + "attr-accept": "^2.2.4", + "file-selector": "^2.1.0", "prop-types": "^15.8.1" }, "engines": { @@ -10128,16 +10157,13 @@ } }, "node_modules/react-error-boundary": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-4.1.1.tgz", - "integrity": "sha512-EOAEsbVm2EQD8zPS4m24SiaR/506RPC3CjMcjJ5JWKECsctyLsDTKxB26Hvl7jcz7KweSOkBYAcY/hmMpMn2jA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-5.0.0.tgz", + "integrity": "sha512-tnjAxG+IkpLephNcePNA7v6F/QpWLH8He65+DmedchDwg162JZqx4NmbXj0mlAYVVEd81OW7aFhmbsScYfiAFQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5" }, - "engines": { - "pnpm": "=9" - }, "peerDependencies": { "react": ">=16.13.1" } @@ -11058,9 +11084,9 @@ "license": "MIT" }, "node_modules/sort-package-json": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-2.10.1.tgz", - "integrity": "sha512-d76wfhgUuGypKqY72Unm5LFnMpACbdxXsLPcL27pOsSrmVqH3PztFp1uq+Z22suk15h7vXmTesuh2aEjdCqb5w==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-2.12.0.tgz", + "integrity": "sha512-/HrPQAeeLaa+vbAH/znjuhwUluuiM/zL5XX9kop8UpDgjtyWKt43hGDk2vd/TBdDpzIyzIHVUgmYofzYrAQjew==", "dev": true, "license": "MIT", "dependencies": { @@ -11068,48 +11094,15 @@ "detect-newline": "^4.0.0", "get-stdin": "^9.0.0", "git-hooks-list": "^3.0.0", - "globby": "^13.1.2", "is-plain-obj": "^4.1.0", "semver": "^7.6.0", - "sort-object-keys": "^1.1.3" + "sort-object-keys": "^1.1.3", + "tinyglobby": "^0.2.9" }, "bin": { "sort-package-json": "cli.js" } }, - "node_modules/sort-package-json/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sort-package-json/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11554,6 +11547,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "license": "MIT" }, @@ -11627,34 +11621,34 @@ "license": "MIT" }, "node_modules/tailwindcss": { - "version": "3.4.14", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.14.tgz", - "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", "dev": true, "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.21.0", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", @@ -11793,6 +11787,48 @@ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", "license": "MIT" }, + "node_modules/tinyglobby": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", + "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", @@ -12095,9 +12131,9 @@ } }, "node_modules/typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -12105,7 +12141,7 @@ "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/uint8array-extras": { @@ -12239,13 +12275,12 @@ } }, "node_modules/update-electron-app": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/update-electron-app/-/update-electron-app-3.0.0.tgz", - "integrity": "sha512-Ccs46fgUEcMpSRPMNw82DFMux2MGi5tkKkEpV723JmtPNI3qAtxvTeiYkKczN2/LehA3U7JGrGr4MhraxGdRTw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/update-electron-app/-/update-electron-app-3.1.0.tgz", + "integrity": "sha512-6U5BXxw+CTtk9pXgRBFosuaOlsXjHKq3heLZMAt6j/5cNMOuEZiN576b70zccMXO8WQuoprUPtSRyseGoXE7Jw==", "license": "MIT", "dependencies": { "github-url-to-object": "^4.0.4", - "is-url": "^1.2.4", "ms": "^2.1.1" } }, @@ -12260,13 +12295,13 @@ } }, "node_modules/use-immer": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/use-immer/-/use-immer-0.10.0.tgz", - "integrity": "sha512-/eVwNR4TG9Tm/dd+aHYLLaI0FLfYKlkTqKMkn78Ah/EYVzWd/zJIgpkdoFEKbhQJOGo8XN7/mWrTx0exp1c+Ug==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/use-immer/-/use-immer-0.11.0.tgz", + "integrity": "sha512-RNAqi3GqsWJ4bcCd4LMBgdzvPmTABam24DUaFiKfX9s3MSorNRz9RDZYJkllJoMHUxVLMDetwAuCDeyWNrp1yA==", "license": "MIT", "peerDependencies": { "immer": ">=8.0.0", - "react": "^16.8.0 || ^17.0.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/username": { @@ -12335,21 +12370,21 @@ } }, "node_modules/vite": { - "version": "5.4.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.9.tgz", - "integrity": "sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.6.tgz", + "integrity": "sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.24.2", + "postcss": "^8.4.49", + "rollup": "^4.23.0" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -12358,19 +12393,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", - "terser": "^5.4.0" + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -12391,43 +12432,15 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, - "node_modules/vite-plugin-static-copy": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-0.17.1.tgz", - "integrity": "sha512-9h3iaVs0bqnqZOM5YHJXGHqdC5VAVlTZ2ARYsuNpzhEJUHmFqXY7dAK4ZFpjEQ4WLFKcaN8yWbczr81n01U4sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.3", - "fast-glob": "^3.2.11", - "fs-extra": "^11.1.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" - } - }, - "node_modules/vite-plugin-static-copy/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -12952,9 +12965,9 @@ } }, "node_modules/yarn-or-npm/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 9c8fbc1..952dd89 100644 --- a/package.json +++ b/package.json @@ -37,41 +37,41 @@ "upload-debug-symbols": "node sentry-symbols.js" }, "dependencies": { - "@headlessui/react": "^2.1.10", + "@headlessui/react": "^2.2.0", "clsx": "^2.1.1", - "csv-parse": "^5.5.6", - "csv-stringify": "^6.5.1", - "electron-log": "^5.2.0", + "csv-parse": "^5.6.0", + "csv-stringify": "^6.5.2", + "electron-log": "^5.2.4", "electron-store": "^10.0.0", "electron-unhandled": "^5.0.0", "electron-util": "^0.18.1", "electron-window-state": "^5.0.3", "humanize-duration": "^3.32.1", - "ky": "^1.7.2", + "ky": "^1.7.4", "md5": "^2.3.0", "os-name": "^6.0.0", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-dropzone": "^14.2.9", - "react-error-boundary": "^4.1.1", + "react-dropzone": "^14.3.5", + "react-error-boundary": "^5.0.0", "react-navigator-status": "^0.1.2", "react-router-dom": "^5.3.4", - "update-electron-app": "^3.0.0", - "use-immer": "^0.10.0" + "update-electron-app": "^3.1.0", + "use-immer": "^0.11.0" }, "devDependencies": { - "@electron-forge/cli": "^7.5.0", - "@electron-forge/maker-deb": "^7.5.0", - "@electron-forge/maker-dmg": "^7.5.0", - "@electron-forge/maker-rpm": "^7.5.0", - "@electron-forge/maker-squirrel": "^7.5.0", - "@electron-forge/maker-zip": "^7.5.0", - "@electron-forge/plugin-auto-unpack-natives": "^7.5.0", - "@electron-forge/plugin-fuses": "^7.5.0", - "@electron-forge/plugin-vite": "^7.5.0", - "@electron-forge/publisher-github": "^7.5.0", + "@electron-forge/cli": "^7.6.0", + "@electron-forge/maker-deb": "^7.6.0", + "@electron-forge/maker-dmg": "^7.6.0", + "@electron-forge/maker-rpm": "^7.6.0", + "@electron-forge/maker-squirrel": "^7.6.0", + "@electron-forge/maker-zip": "^7.6.0", + "@electron-forge/plugin-auto-unpack-natives": "^7.6.0", + "@electron-forge/plugin-fuses": "^7.6.0", + "@electron-forge/plugin-vite": "^7.6.0", + "@electron-forge/publisher-github": "^7.6.0", "@electron/fuses": "^1.8.0", - "@heroicons/react": "^2.1.5", + "@heroicons/react": "^2.2.0", "@types/electron-squirrel-startup": "^1.0.2", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.1", @@ -79,21 +79,20 @@ "@typescript-eslint/parser": "^5.62.0", "autoprefixer": "^10.4.20", "cross-env": "^7.0.3", - "dotenv": "^16.4.5", - "electron": "33.0.1", + "dotenv": "^16.4.7", + "electron": "33.2.1", "electron-squirrel-startup": "^1.0.1", "eslint": "^8.57.1", "eslint-plugin-import": "^2.31.0", - "postcss": "^8.4.47", - "prettier": "^3.3.3", + "postcss": "^8.4.49", + "prettier": "^3.4.2", "prettier-plugin-organize-imports": "^4.1.0", - "prettier-plugin-packagejson": "^2.5.3", - "prettier-plugin-tailwindcss": "^0.6.8", - "tailwindcss": "^3.4.14", + "prettier-plugin-packagejson": "^2.5.6", + "prettier-plugin-tailwindcss": "^0.6.9", + "tailwindcss": "^3.4.17", "ts-node": "^10.9.2", - "typescript": "~4.5.4", - "vite": "^5.4.9", - "vite-plugin-static-copy": "^0.17.1" + "typescript": "~5.7.2", + "vite": "^6.0.6" }, "productName": "forge-vite-ts" } diff --git a/src/main.ts b/src/main.ts index ac8cef4..f5ed4ff 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,6 +1,7 @@ import { app, BrowserWindow, dialog, ipcMain, shell } from 'electron'; import logger from 'electron-log/main'; import startup from 'electron-squirrel-startup'; +// eslint-disable-next-line import/no-unresolved import { enforceMacOSAppLocation, isDev } from 'electron-util/main'; import windowStateKeeper from 'electron-window-state'; import path from 'path'; diff --git a/src/pages/ApiKey.tsx b/src/pages/ApiKey.tsx index a30f947..af162cd 100644 --- a/src/pages/ApiKey.tsx +++ b/src/pages/ApiKey.tsx @@ -32,7 +32,6 @@ export function ApiKey() { } }) .catch(handleError); - // eslint-disable-next-line react-hooks/exhaustive-deps }, [history, handleError]); const onApiKeyChange = async (event) => { diff --git a/src/services/errors.ts b/src/services/errors.ts index d335f97..9f4bfe8 100644 --- a/src/services/errors.ts +++ b/src/services/errors.ts @@ -1,11 +1,14 @@ import { app, ipcMain, shell } from 'electron'; // import unhandled from 'electron-unhandled'; +// eslint-disable-next-line import/no-unresolved // import { openNewGitHubIssue } from 'electron-util'; import osName from 'os-name'; +// Module format "cjs" does not support top-level await. Use the "es" or "system" output formats rather. // unhandled({ // reportButton: (error) => { -// openIssue(error.message, error.stack); +// console.log(error); +// // openIssue(error.message, error.stack); // }, // logger: (error) => { // console.error(error, true); @@ -17,7 +20,7 @@ ipcMain.on('relaunchApp', () => { app.exit(); }); -function getBody(message, stack) { +function getBody(message: string, stack: string) { return `### What happened? @@ -62,11 +65,11 @@ ipcMain.on('openEmail', (_, { message, stack }) => { ); }); -ipcMain.on('openIssue', (_, { message, stack }) => { - // openIssue(message, stack); -}); +// ipcMain.on('openIssue', (_, { message, stack }) => { +// openIssue(message, stack); +// }); -// const openIssue = (message, stack) => { +// const openIssue = (message: string, stack: string) => { // openNewGitHubIssue({ // user: 'agrc', // repo: 'api-client', diff --git a/src/services/geocode.ts b/src/services/geocode.ts index f756233..76e678f 100644 --- a/src/services/geocode.ts +++ b/src/services/geocode.ts @@ -1,21 +1,12 @@ import { parse } from 'csv-parse'; import { stringify } from 'csv-stringify'; -import { app, ipcMain, nativeImage } from 'electron'; -// import url from 'url'; +import { app, ipcMain } from 'electron'; import log from 'electron-log/main'; import fs from 'fs'; import ky from 'ky'; import path from 'path'; // import { trackEvent } from './analytics'; -// import md5 from 'md5'; // import '../../tests/mocks/server'; -// does this not work because we are not in a tsx file? -import dragIconUrl from '../assets/draganddrop.png'; - -const dragIcon = nativeImage.createFromPath(dragIconUrl); - -// const __filename = url.fileURLToPath(import.meta.url); -// const __dirname = path.dirname(__filename); const SPACES = / +/; const INVALID_CHARS = /[^a-zA-Z0-9]/g; @@ -28,7 +19,7 @@ const client = ky.create({ }, }); -const cleanseStreet = (data) => { +const cleanseStreet = (data: string) => { const replacement = ' '; // & -> and @@ -39,7 +30,7 @@ const cleanseStreet = (data) => { return street.trim(); }; -const cleanseZone = (data) => { +const cleanseZone = (data: number) => { let zone = data.toString().replace(INVALID_CHARS, ' '); zone = zone.replace(SPACES, ' ').trim(); @@ -57,12 +48,12 @@ const coolYourJets = () => { return new Promise((resolve) => setTimeout(resolve, Math.random() * (max - min) + min)); }; -let cancelled; +let cancelled: string; export const cancelGeocode = (status = 'cancelled') => { cancelled = status; }; -export const checkApiKey = async (apiKey) => { +export const checkApiKey = async (apiKey: string) => { log.info(`Checking API key: ${apiKey}`); let response; diff --git a/tsconfig.json b/tsconfig.json index e549388..5d7115f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "target": "ESNext", - "module": "ESNext", + "module": "CommonJS", "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, @@ -9,7 +9,7 @@ "sourceMap": true, "baseUrl": ".", "outDir": "dist", - "moduleResolution": "Bundler", + "moduleResolution": "node", "resolveJsonModule": true, "jsx": "react-jsx", } diff --git a/vendor/vite-plugin-static-copy.cjs b/vendor/vite-plugin-static-copy.cjs new file mode 100644 index 0000000..5b96165 --- /dev/null +++ b/vendor/vite-plugin-static-copy.cjs @@ -0,0 +1,1053 @@ +'use strict'; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if ((from && typeof from === 'object') || typeof from === 'function') { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { + get: () => from[key], + enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, + }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => ( + (target = mod != null ? __create(__getProtoOf(mod)) : {}), + __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, 'default', { value: mod, enumerable: true }) : target, + mod, + ) +); +var __toCommonJS = (mod) => __copyProps(__defProp({}, '__esModule', { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + viteStaticCopy: () => viteStaticCopy, +}); +module.exports = __toCommonJS(src_exports); + +// src/options.ts +var resolveOptions = (options) => { + var _a, _b; + return { + targets: options.targets, + structured: options.structured ?? false, + silent: options.silent ?? false, + watch: { + options: ((_a = options.watch) == null ? void 0 : _a.options) ?? {}, + reloadPageOnChange: ((_b = options.watch) == null ? void 0 : _b.reloadPageOnChange) ?? false, + }, + }; +}; + +// node_modules/.pnpm/@polka+url@1.0.0-next.23/node_modules/@polka/url/build.mjs +var qs = __toESM(require('querystring'), 1); +function parse2(req) { + let raw = req.url; + if (raw == null) return; + let prev = req._parsedUrl; + if (prev && prev.raw === raw) return prev; + let pathname = raw, + search = '', + query; + if (raw.length > 1) { + let idx = raw.indexOf('?', 1); + if (idx !== -1) { + search = raw.substring(idx); + pathname = raw.substring(0, idx); + if (search.length > 1) { + query = qs.parse(search.substring(1)); + } + } + } + return (req._parsedUrl = { pathname, search, query, raw }); +} + +// node_modules/.pnpm/mrmime@1.0.1/node_modules/mrmime/index.mjs +var mimes = { + ez: 'application/andrew-inset', + aw: 'application/applixware', + atom: 'application/atom+xml', + atomcat: 'application/atomcat+xml', + atomdeleted: 'application/atomdeleted+xml', + atomsvc: 'application/atomsvc+xml', + dwd: 'application/atsc-dwd+xml', + held: 'application/atsc-held+xml', + rsat: 'application/atsc-rsat+xml', + bdoc: 'application/bdoc', + xcs: 'application/calendar+xml', + ccxml: 'application/ccxml+xml', + cdfx: 'application/cdfx+xml', + cdmia: 'application/cdmi-capability', + cdmic: 'application/cdmi-container', + cdmid: 'application/cdmi-domain', + cdmio: 'application/cdmi-object', + cdmiq: 'application/cdmi-queue', + cu: 'application/cu-seeme', + mpd: 'application/dash+xml', + davmount: 'application/davmount+xml', + dbk: 'application/docbook+xml', + dssc: 'application/dssc+der', + xdssc: 'application/dssc+xml', + es: 'application/ecmascript', + ecma: 'application/ecmascript', + emma: 'application/emma+xml', + emotionml: 'application/emotionml+xml', + epub: 'application/epub+zip', + exi: 'application/exi', + fdt: 'application/fdt+xml', + pfr: 'application/font-tdpfr', + geojson: 'application/geo+json', + gml: 'application/gml+xml', + gpx: 'application/gpx+xml', + gxf: 'application/gxf', + gz: 'application/gzip', + hjson: 'application/hjson', + stk: 'application/hyperstudio', + ink: 'application/inkml+xml', + inkml: 'application/inkml+xml', + ipfix: 'application/ipfix', + its: 'application/its+xml', + jar: 'application/java-archive', + war: 'application/java-archive', + ear: 'application/java-archive', + ser: 'application/java-serialized-object', + class: 'application/java-vm', + js: 'application/javascript', + mjs: 'application/javascript', + json: 'application/json', + map: 'application/json', + json5: 'application/json5', + jsonml: 'application/jsonml+json', + jsonld: 'application/ld+json', + lgr: 'application/lgr+xml', + lostxml: 'application/lost+xml', + hqx: 'application/mac-binhex40', + cpt: 'application/mac-compactpro', + mads: 'application/mads+xml', + webmanifest: 'application/manifest+json', + mrc: 'application/marc', + mrcx: 'application/marcxml+xml', + ma: 'application/mathematica', + nb: 'application/mathematica', + mb: 'application/mathematica', + mathml: 'application/mathml+xml', + mbox: 'application/mbox', + mscml: 'application/mediaservercontrol+xml', + metalink: 'application/metalink+xml', + meta4: 'application/metalink4+xml', + mets: 'application/mets+xml', + maei: 'application/mmt-aei+xml', + musd: 'application/mmt-usd+xml', + mods: 'application/mods+xml', + m21: 'application/mp21', + mp21: 'application/mp21', + mp4s: 'application/mp4', + m4p: 'application/mp4', + doc: 'application/msword', + dot: 'application/msword', + mxf: 'application/mxf', + nq: 'application/n-quads', + nt: 'application/n-triples', + cjs: 'application/node', + bin: 'application/octet-stream', + dms: 'application/octet-stream', + lrf: 'application/octet-stream', + mar: 'application/octet-stream', + so: 'application/octet-stream', + dist: 'application/octet-stream', + distz: 'application/octet-stream', + pkg: 'application/octet-stream', + bpk: 'application/octet-stream', + dump: 'application/octet-stream', + elc: 'application/octet-stream', + deploy: 'application/octet-stream', + exe: 'application/octet-stream', + dll: 'application/octet-stream', + deb: 'application/octet-stream', + dmg: 'application/octet-stream', + iso: 'application/octet-stream', + img: 'application/octet-stream', + msi: 'application/octet-stream', + msp: 'application/octet-stream', + msm: 'application/octet-stream', + buffer: 'application/octet-stream', + oda: 'application/oda', + opf: 'application/oebps-package+xml', + ogx: 'application/ogg', + omdoc: 'application/omdoc+xml', + onetoc: 'application/onenote', + onetoc2: 'application/onenote', + onetmp: 'application/onenote', + onepkg: 'application/onenote', + oxps: 'application/oxps', + relo: 'application/p2p-overlay+xml', + xer: 'application/patch-ops-error+xml', + pdf: 'application/pdf', + pgp: 'application/pgp-encrypted', + asc: 'application/pgp-signature', + sig: 'application/pgp-signature', + prf: 'application/pics-rules', + p10: 'application/pkcs10', + p7m: 'application/pkcs7-mime', + p7c: 'application/pkcs7-mime', + p7s: 'application/pkcs7-signature', + p8: 'application/pkcs8', + ac: 'application/pkix-attr-cert', + cer: 'application/pkix-cert', + crl: 'application/pkix-crl', + pkipath: 'application/pkix-pkipath', + pki: 'application/pkixcmp', + pls: 'application/pls+xml', + ai: 'application/postscript', + eps: 'application/postscript', + ps: 'application/postscript', + provx: 'application/provenance+xml', + cww: 'application/prs.cww', + pskcxml: 'application/pskc+xml', + raml: 'application/raml+yaml', + rdf: 'application/rdf+xml', + owl: 'application/rdf+xml', + rif: 'application/reginfo+xml', + rnc: 'application/relax-ng-compact-syntax', + rl: 'application/resource-lists+xml', + rld: 'application/resource-lists-diff+xml', + rs: 'application/rls-services+xml', + rapd: 'application/route-apd+xml', + sls: 'application/route-s-tsid+xml', + rusd: 'application/route-usd+xml', + gbr: 'application/rpki-ghostbusters', + mft: 'application/rpki-manifest', + roa: 'application/rpki-roa', + rsd: 'application/rsd+xml', + rss: 'application/rss+xml', + rtf: 'application/rtf', + sbml: 'application/sbml+xml', + scq: 'application/scvp-cv-request', + scs: 'application/scvp-cv-response', + spq: 'application/scvp-vp-request', + spp: 'application/scvp-vp-response', + sdp: 'application/sdp', + senmlx: 'application/senml+xml', + sensmlx: 'application/sensml+xml', + setpay: 'application/set-payment-initiation', + setreg: 'application/set-registration-initiation', + shf: 'application/shf+xml', + siv: 'application/sieve', + sieve: 'application/sieve', + smi: 'application/smil+xml', + smil: 'application/smil+xml', + rq: 'application/sparql-query', + srx: 'application/sparql-results+xml', + gram: 'application/srgs', + grxml: 'application/srgs+xml', + sru: 'application/sru+xml', + ssdl: 'application/ssdl+xml', + ssml: 'application/ssml+xml', + swidtag: 'application/swid+xml', + tei: 'application/tei+xml', + teicorpus: 'application/tei+xml', + tfi: 'application/thraud+xml', + tsd: 'application/timestamped-data', + toml: 'application/toml', + trig: 'application/trig', + ttml: 'application/ttml+xml', + ubj: 'application/ubjson', + rsheet: 'application/urc-ressheet+xml', + td: 'application/urc-targetdesc+xml', + vxml: 'application/voicexml+xml', + wasm: 'application/wasm', + wgt: 'application/widget', + hlp: 'application/winhlp', + wsdl: 'application/wsdl+xml', + wspolicy: 'application/wspolicy+xml', + xaml: 'application/xaml+xml', + xav: 'application/xcap-att+xml', + xca: 'application/xcap-caps+xml', + xdf: 'application/xcap-diff+xml', + xel: 'application/xcap-el+xml', + xns: 'application/xcap-ns+xml', + xenc: 'application/xenc+xml', + xhtml: 'application/xhtml+xml', + xht: 'application/xhtml+xml', + xlf: 'application/xliff+xml', + xml: 'application/xml', + xsl: 'application/xml', + xsd: 'application/xml', + rng: 'application/xml', + dtd: 'application/xml-dtd', + xop: 'application/xop+xml', + xpl: 'application/xproc+xml', + xslt: 'application/xml', + xspf: 'application/xspf+xml', + mxml: 'application/xv+xml', + xhvml: 'application/xv+xml', + xvml: 'application/xv+xml', + xvm: 'application/xv+xml', + yang: 'application/yang', + yin: 'application/yin+xml', + zip: 'application/zip', + '3gpp': 'video/3gpp', + adp: 'audio/adpcm', + amr: 'audio/amr', + au: 'audio/basic', + snd: 'audio/basic', + mid: 'audio/midi', + midi: 'audio/midi', + kar: 'audio/midi', + rmi: 'audio/midi', + mxmf: 'audio/mobile-xmf', + mp3: 'audio/mpeg', + m4a: 'audio/mp4', + mp4a: 'audio/mp4', + mpga: 'audio/mpeg', + mp2: 'audio/mpeg', + mp2a: 'audio/mpeg', + m2a: 'audio/mpeg', + m3a: 'audio/mpeg', + oga: 'audio/ogg', + ogg: 'audio/ogg', + spx: 'audio/ogg', + opus: 'audio/ogg', + s3m: 'audio/s3m', + sil: 'audio/silk', + wav: 'audio/wav', + weba: 'audio/webm', + xm: 'audio/xm', + ttc: 'font/collection', + otf: 'font/otf', + ttf: 'font/ttf', + woff: 'font/woff', + woff2: 'font/woff2', + exr: 'image/aces', + apng: 'image/apng', + avif: 'image/avif', + bmp: 'image/bmp', + cgm: 'image/cgm', + drle: 'image/dicom-rle', + emf: 'image/emf', + fits: 'image/fits', + g3: 'image/g3fax', + gif: 'image/gif', + heic: 'image/heic', + heics: 'image/heic-sequence', + heif: 'image/heif', + heifs: 'image/heif-sequence', + hej2: 'image/hej2k', + hsj2: 'image/hsj2', + ief: 'image/ief', + jls: 'image/jls', + jp2: 'image/jp2', + jpg2: 'image/jp2', + jpeg: 'image/jpeg', + jpg: 'image/jpeg', + jpe: 'image/jpeg', + jph: 'image/jph', + jhc: 'image/jphc', + jpm: 'image/jpm', + jpx: 'image/jpx', + jpf: 'image/jpx', + jxr: 'image/jxr', + jxra: 'image/jxra', + jxrs: 'image/jxrs', + jxs: 'image/jxs', + jxsc: 'image/jxsc', + jxsi: 'image/jxsi', + jxss: 'image/jxss', + ktx: 'image/ktx', + ktx2: 'image/ktx2', + png: 'image/png', + btif: 'image/prs.btif', + pti: 'image/prs.pti', + sgi: 'image/sgi', + svg: 'image/svg+xml', + svgz: 'image/svg+xml', + t38: 'image/t38', + tif: 'image/tiff', + tiff: 'image/tiff', + tfx: 'image/tiff-fx', + webp: 'image/webp', + wmf: 'image/wmf', + 'disposition-notification': 'message/disposition-notification', + u8msg: 'message/global', + u8dsn: 'message/global-delivery-status', + u8mdn: 'message/global-disposition-notification', + u8hdr: 'message/global-headers', + eml: 'message/rfc822', + mime: 'message/rfc822', + '3mf': 'model/3mf', + gltf: 'model/gltf+json', + glb: 'model/gltf-binary', + igs: 'model/iges', + iges: 'model/iges', + msh: 'model/mesh', + mesh: 'model/mesh', + silo: 'model/mesh', + mtl: 'model/mtl', + obj: 'model/obj', + stpz: 'model/step+zip', + stpxz: 'model/step-xml+zip', + stl: 'model/stl', + wrl: 'model/vrml', + vrml: 'model/vrml', + x3db: 'model/x3d+fastinfoset', + x3dbz: 'model/x3d+binary', + x3dv: 'model/x3d-vrml', + x3dvz: 'model/x3d+vrml', + x3d: 'model/x3d+xml', + x3dz: 'model/x3d+xml', + appcache: 'text/cache-manifest', + manifest: 'text/cache-manifest', + ics: 'text/calendar', + ifb: 'text/calendar', + coffee: 'text/coffeescript', + litcoffee: 'text/coffeescript', + css: 'text/css', + csv: 'text/csv', + html: 'text/html', + htm: 'text/html', + shtml: 'text/html', + jade: 'text/jade', + jsx: 'text/jsx', + less: 'text/less', + markdown: 'text/markdown', + md: 'text/markdown', + mml: 'text/mathml', + mdx: 'text/mdx', + n3: 'text/n3', + txt: 'text/plain', + text: 'text/plain', + conf: 'text/plain', + def: 'text/plain', + list: 'text/plain', + log: 'text/plain', + in: 'text/plain', + ini: 'text/plain', + dsc: 'text/prs.lines.tag', + rtx: 'text/richtext', + sgml: 'text/sgml', + sgm: 'text/sgml', + shex: 'text/shex', + slim: 'text/slim', + slm: 'text/slim', + spdx: 'text/spdx', + stylus: 'text/stylus', + styl: 'text/stylus', + tsv: 'text/tab-separated-values', + t: 'text/troff', + tr: 'text/troff', + roff: 'text/troff', + man: 'text/troff', + me: 'text/troff', + ms: 'text/troff', + ttl: 'text/turtle', + uri: 'text/uri-list', + uris: 'text/uri-list', + urls: 'text/uri-list', + vcard: 'text/vcard', + vtt: 'text/vtt', + yaml: 'text/yaml', + yml: 'text/yaml', + '3gp': 'video/3gpp', + '3g2': 'video/3gpp2', + h261: 'video/h261', + h263: 'video/h263', + h264: 'video/h264', + m4s: 'video/iso.segment', + jpgv: 'video/jpeg', + jpgm: 'image/jpm', + mj2: 'video/mj2', + mjp2: 'video/mj2', + ts: 'video/mp2t', + mp4: 'video/mp4', + mp4v: 'video/mp4', + mpg4: 'video/mp4', + mpeg: 'video/mpeg', + mpg: 'video/mpeg', + mpe: 'video/mpeg', + m1v: 'video/mpeg', + m2v: 'video/mpeg', + ogv: 'video/ogg', + qt: 'video/quicktime', + mov: 'video/quicktime', + webm: 'video/webm', +}; +function lookup(extn) { + let tmp = ('' + extn).trim().toLowerCase(); + let idx = tmp.lastIndexOf('.'); + return mimes[!~idx ? tmp : tmp.substring(++idx)]; +} + +// src/middleware.ts +var import_node_fs = require('fs'); +var import_node_path2 = require('path'); + +// src/utils.ts +var import_fast_glob = __toESM(require('fast-glob'), 1); +var import_node_path = __toESM(require('path'), 1); +var import_fs_extra = __toESM(require('fs-extra'), 1); +var import_picocolors = __toESM(require('picocolors'), 1); +var import_node_crypto = require('crypto'); +async function renameTarget(target, rename, src) { + const parsedPath = import_node_path.default.parse(target); + if (typeof rename === 'string') { + return rename; + } + return rename(parsedPath.name, parsedPath.ext.replace('.', ''), src); +} +var collectCopyTargets = async (root, targets, structured) => { + const copyTargets = []; + for (const target of targets) { + const { src, dest, rename, transform, preserveTimestamps, dereference, overwrite } = target; + const matchedPaths = await (0, import_fast_glob.default)(src, { + onlyFiles: false, + dot: true, + cwd: root, + }); + for (const matchedPath of matchedPaths) { + if (transform) { + const srcStat = await import_fs_extra.default.stat(import_node_path.default.resolve(root, matchedPath)); + if (!srcStat.isFile()) { + throw new Error(`"transform" option only supports a file: '${matchedPath}' is not a file`); + } + } + const { base, dir } = import_node_path.default.parse(matchedPath); + let destDir; + if (!structured || !dir) { + destDir = dest; + } else { + const dirClean = dir.replace(/^(?:\.\.\/)+/, ''); + const destClean = `${dest}/${dirClean}`.replace(/^\/+|\/+$/g, ''); + destDir = destClean; + } + copyTargets.push({ + src: matchedPath, + dest: import_node_path.default.join(destDir, rename ? await renameTarget(base, rename, matchedPath) : base), + transform, + preserveTimestamps: preserveTimestamps ?? false, + dereference: dereference ?? true, + overwrite: overwrite ?? true, + }); + } + } + return copyTargets; +}; +async function getTransformedContent(file, transform) { + if (transform.encoding === 'buffer') { + const content2 = await import_fs_extra.default.readFile(file); + return transform.handler(content2, file); + } + const content = await import_fs_extra.default.readFile(file, transform.encoding); + return transform.handler(content, file); +} +async function transformCopy(transform, src, dest, overwrite) { + if (overwrite === false || overwrite === 'error') { + const exists = await fsExists(dest); + if (exists) { + if (overwrite === false) { + return { copied: false }; + } + if (overwrite === 'error') { + throw new Error(`File ${dest} already exists`); + } + } + } + const transformedContent = await getTransformedContent(src, transform); + if (transformedContent === null) { + return { copied: false }; + } + await import_fs_extra.default.outputFile(dest, transformedContent); + return { copied: true }; +} +var copyAll = async (rootSrc, rootDest, targets, structured) => { + const copyTargets = await collectCopyTargets(rootSrc, targets, structured); + let copiedCount = 0; + for (const copyTarget of copyTargets) { + const { src, dest, transform, preserveTimestamps, dereference, overwrite } = copyTarget; + const resolvedSrc = import_node_path.default.resolve(rootSrc, src); + const resolvedDest = import_node_path.default.resolve(rootSrc, rootDest, dest); + const transformOption = resolveTransformOption(transform); + if (transformOption) { + const result = await transformCopy(transformOption, resolvedSrc, resolvedDest, overwrite); + if (result.copied) { + copiedCount++; + } + } else { + await import_fs_extra.default.copy(resolvedSrc, resolvedDest, { + preserveTimestamps, + dereference, + overwrite: overwrite === true, + errorOnExist: overwrite === 'error', + }); + copiedCount++; + } + } + return { targets: copyTargets.length, copied: copiedCount }; +}; +var updateFileMapFromTargets = (targets, fileMap) => { + fileMap.clear(); + for (const target of [...targets].reverse()) { + let dest = target.dest.replace(/\\/g, '/'); + if (!dest.startsWith('/')) { + dest = `/${dest}`; + } + if (!fileMap.has(dest)) { + fileMap.set(dest, []); + } + fileMap.get(dest).push({ + src: target.src, + dest: target.dest, + overwrite: target.overwrite, + transform: target.transform, + }); + } +}; +var calculateMd5Base64 = (content) => (0, import_node_crypto.createHash)('md5').update(content).digest('base64'); +var formatConsole = (msg) => `${import_picocolors.default.cyan('[vite-plugin-static-copy]')} ${msg}`; +var outputCollectedLog = (logger, collectedMap) => { + if (collectedMap.size > 0) { + logger.info(formatConsole(import_picocolors.default.green(`Collected ${collectedMap.size} items.`))); + if (process.env.DEBUG === 'vite:plugin-static-copy') { + for (const [key, vals] of collectedMap) { + for (const val of vals) { + logger.info(formatConsole(` - '${key}' -> '${val.src}'${val.transform ? ' (with content transform)' : ''}`)); + } + } + } + } else { + logger.warn(formatConsole(import_picocolors.default.yellow('No items found.'))); + } +}; +var outputCopyLog = (logger, result) => { + if (result.targets > 0) { + const copiedMessage = import_picocolors.default.green(`Copied ${result.copied} items.`); + const skipped = result.targets - result.copied; + const skippedMessage = skipped > 0 ? ` ${import_picocolors.default.gray(`(Skipped ${skipped} items.)`)}` : ''; + logger.info(formatConsole(`${copiedMessage}${skippedMessage}`)); + } else { + logger.warn(formatConsole(import_picocolors.default.yellow('No items to copy.'))); + } +}; +function resolveTransformOption(transformOption) { + if (typeof transformOption === 'function') { + return { + handler: transformOption, + encoding: 'utf8', + }; + } + return transformOption; +} +async function fsExists(p) { + try { + await import_fs_extra.default.stat(p); + } catch (e) { + if (e.code === 'ENOENT') { + return false; + } + throw e; + } + return true; +} + +// src/middleware.ts +function shouldServeOverwriteCheck(overwrite, srcAbsolutePath, root, publicDir, dest) { + const publicDirDisabled = publicDir === ''; + if (overwrite === true || publicDirDisabled) { + return true; + } + const publicFile = (0, import_node_path2.resolve)(publicDir, dest); + if ((0, import_node_fs.existsSync)(publicFile)) { + if (overwrite === 'error' && (0, import_node_fs.existsSync)(srcAbsolutePath)) { + const destAbsolutePath = (0, import_node_path2.resolve)(root, dest); + throw new Error( + `File ${destAbsolutePath} will be copied from ${publicFile} (overwrite option is set to "error")`, + ); + } + return false; + } + return true; +} +function viaLocal(root, publicDir, fileMap, uri) { + if (uri.endsWith('/')) { + uri = uri.slice(0, -1); + } + const files = fileMap.get(uri); + if (files && files[0]) { + const file = files[0]; + const filepath = (0, import_node_path2.resolve)(root, file.src); + const overwriteCheck = shouldServeOverwriteCheck(file.overwrite, filepath, root, publicDir, file.dest); + if (overwriteCheck === false) { + return void 0; + } + const stats = (0, import_node_fs.statSync)(filepath); + return { filepath, stats, transform: file.transform }; + } + for (const [key, vals] of fileMap) { + const dir = key.endsWith('/') ? key : `${key}/`; + if (!uri.startsWith(dir)) continue; + for (const val of vals) { + const filepath = (0, import_node_path2.resolve)(root, val.src, uri.slice(dir.length)); + const overwriteCheck = shouldServeOverwriteCheck( + val.overwrite, + filepath, + root, + publicDir, + (0, import_node_path2.join)(val.dest, uri.slice(dir.length)), + ); + if (overwriteCheck === false) { + return void 0; + } + const stats = (0, import_node_fs.statSync)(filepath, { throwIfNoEntry: false }); + if (stats) { + return { filepath, stats }; + } + } + return void 0; + } + return void 0; +} +function getStaticHeaders(name, stats) { + let ctype = lookup(name) || ''; + if (ctype === 'text/html') ctype += ';charset=utf-8'; + const headers = { + 'Content-Length': stats.size, + 'Content-Type': ctype, + 'Last-Modified': stats.mtime.toUTCString(), + ETag: `W/"${stats.size}-${stats.mtime.getTime()}"`, + 'Cache-Control': 'no-cache', + }; + return headers; +} +function getTransformHeaders(name, encoding, content) { + let ctype = lookup(name) || ''; + if (ctype === 'text/html') ctype += ';charset=utf-8'; + const headers = { + 'Content-Length': Buffer.byteLength(content, encoding === 'buffer' ? void 0 : encoding), + 'Content-Type': ctype, + ETag: `W/"${calculateMd5Base64(content)}"`, + 'Cache-Control': 'no-cache', + }; + return headers; +} +function getMergeHeaders(headers, res) { + headers = { ...headers }; + for (const key in headers) { + const tmp = res.getHeader(key); + if (tmp) headers[key] = tmp; + } + const contentTypeHeader = res.getHeader('content-type'); + if (contentTypeHeader) { + headers['Content-Type'] = contentTypeHeader; + } + return headers; +} +function sendStatic(req, res, file, stats) { + const staticHeaders = getStaticHeaders(file, stats); + if (req.headers['if-none-match'] === staticHeaders['ETag']) { + res.writeHead(304); + res.end(); + return; + } + let code = 200; + const headers = getMergeHeaders(staticHeaders, res); + const opts = {}; + if (req.headers.range) { + code = 206; + const [x, y] = req.headers.range.replace('bytes=', '').split('-'); + let end = (y ? parseInt(y, 10) : 0) || stats.size - 1; + const start = (x ? parseInt(x, 10) : 0) || 0; + opts.end = end; + opts.start = start; + if (end >= stats.size) { + end = stats.size - 1; + } + if (start >= stats.size) { + res.setHeader('Content-Range', `bytes */${stats.size}`); + res.statusCode = 416; + res.end(); + return; + } + headers['Content-Range'] = `bytes ${start}-${end}/${stats.size}`; + headers['Content-Length'] = end - start + 1; + headers['Accept-Ranges'] = 'bytes'; + } + res.writeHead(code, headers); + (0, import_node_fs.createReadStream)(file, opts).pipe(res); +} +async function sendTransform(req, res, file, transform) { + const transformedContent = await getTransformedContent(file, transform); + if (transformedContent === null) { + return false; + } + const transformHeaders = getTransformHeaders(file, transform.encoding, transformedContent); + if (req.headers['if-none-match'] === transformHeaders['ETag']) { + res.writeHead(304); + res.end(); + return true; + } + const code = 200; + const headers = getMergeHeaders(transformHeaders, res); + res.writeHead(code, headers); + res.end(transformedContent); + return true; +} +function return404(res, next) { + if (next) { + next(); + return; + } + res.statusCode = 404; + res.end(); +} +function serveStaticCopyMiddleware({ root, publicDir }, fileMap) { + return async function viteServeStaticCopyMiddleware(req, res, next) { + let pathname = parse2(req).pathname; + if (pathname.includes('%')) { + try { + pathname = decodeURI(pathname); + } catch (err) {} + } + try { + const data = viaLocal(root, publicDir, fileMap, pathname); + if (!data) { + return404(res, next); + return; + } + if (/\.[tj]sx?$/.test(pathname)) { + res.setHeader('Content-Type', 'application/javascript'); + } + const transformOption = resolveTransformOption(data.transform); + if (transformOption) { + const sent = await sendTransform(req, res, data.filepath, transformOption); + if (!sent) { + return404(res, next); + return; + } + return; + } + sendStatic(req, res, data.filepath, data.stats); + } catch (e) { + if (e instanceof Error) { + next(e); + return; + } + throw e; + } + }; +} + +// node_modules/.pnpm/throttle-debounce@5.0.0/node_modules/throttle-debounce/esm/index.js +function throttle(delay, callback, options) { + var _ref = options || {}, + _ref$noTrailing = _ref.noTrailing, + noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing, + _ref$noLeading = _ref.noLeading, + noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading, + _ref$debounceMode = _ref.debounceMode, + debounceMode = _ref$debounceMode === void 0 ? void 0 : _ref$debounceMode; + var timeoutID; + var cancelled = false; + var lastExec = 0; + function clearExistingTimeout() { + if (timeoutID) { + clearTimeout(timeoutID); + } + } + function cancel(options2) { + var _ref2 = options2 || {}, + _ref2$upcomingOnly = _ref2.upcomingOnly, + upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly; + clearExistingTimeout(); + cancelled = !upcomingOnly; + } + function wrapper() { + for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) { + arguments_[_key] = arguments[_key]; + } + var self = this; + var elapsed = Date.now() - lastExec; + if (cancelled) { + return; + } + function exec() { + lastExec = Date.now(); + callback.apply(self, arguments_); + } + function clear() { + timeoutID = void 0; + } + if (!noLeading && debounceMode && !timeoutID) { + exec(); + } + clearExistingTimeout(); + if (debounceMode === void 0 && elapsed > delay) { + if (noLeading) { + lastExec = Date.now(); + if (!noTrailing) { + timeoutID = setTimeout(debounceMode ? clear : exec, delay); + } + } else { + exec(); + } + } else if (noTrailing !== true) { + timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === void 0 ? delay - elapsed : delay); + } + } + wrapper.cancel = cancel; + return wrapper; +} +function debounce(delay, callback, options) { + var _ref = options || {}, + _ref$atBegin = _ref.atBegin, + atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin; + return throttle(delay, callback, { + debounceMode: atBegin !== false, + }); +} + +// src/serve.ts +var import_chokidar = __toESM(require('chokidar'), 1); +var import_picocolors2 = __toESM(require('picocolors'), 1); +var servePlugin = ({ targets, structured, watch, silent }) => { + let config; + let watcher; + const fileMap = /* @__PURE__ */ new Map(); + const collectFileMap = async () => { + try { + const copyTargets = await collectCopyTargets(config.root, targets, structured); + updateFileMapFromTargets(copyTargets, fileMap); + } catch (e) { + config.logger.error(formatConsole(import_picocolors2.default.red(e.toString()))); + } + }; + const collectFileMapDebounce = debounce(100, async () => { + await collectFileMap(); + }); + return { + name: 'vite-plugin-static-copy:serve', + apply: 'serve', + configResolved(_config) { + config = _config; + }, + async buildStart() { + await collectFileMap(); + }, + configureServer({ httpServer, middlewares, ws }) { + const reloadPage = () => { + ws.send({ type: 'full-reload', path: '*' }); + }; + watcher = import_chokidar.default.watch( + targets.flatMap((target) => target.src), + { + cwd: config.root, + ignoreInitial: true, + ...watch.options, + }, + ); + watcher.on('add', async (path2) => { + if (!silent) { + config.logger.info(formatConsole(`${import_picocolors2.default.green('detected new file')} ${path2}`), { + timestamp: true, + }); + } + await collectFileMapDebounce(); + if (watch.reloadPageOnChange) { + reloadPage(); + } + }); + if (watch.reloadPageOnChange) { + watcher.on('change', (path2) => { + if (!silent) { + config.logger.info(formatConsole(`${import_picocolors2.default.green('file changed')} ${path2}`), { + timestamp: true, + }); + } + reloadPage(); + }); + watcher.on('unlink', (path2) => { + if (!silent) { + config.logger.info(formatConsole(`${import_picocolors2.default.green('file deleted')} ${path2}`), { + timestamp: true, + }); + } + reloadPage(); + }); + } + if (!silent) { + httpServer == null + ? void 0 + : httpServer.once('listening', () => { + setTimeout(() => { + outputCollectedLog(config.logger, fileMap); + }, 0); + }); + } + return () => { + middlewares.use(serveStaticCopyMiddleware(config, fileMap)); + const targetMiddlewareIndex = findMiddlewareIndex(middlewares.stack, [ + 'viteServePublicMiddleware', + 'viteTransformMiddleware', + ]); + const serveStaticCopyMiddlewareIndex = findMiddlewareIndex(middlewares.stack, 'viteServeStaticCopyMiddleware'); + const serveStaticCopyMiddlewareItem = middlewares.stack.splice(serveStaticCopyMiddlewareIndex, 1)[0]; + if (serveStaticCopyMiddlewareItem === void 0) throw new Error(); + middlewares.stack.splice(targetMiddlewareIndex, 0, serveStaticCopyMiddlewareItem); + }; + }, + async closeBundle() { + await watcher.close(); + }, + }; +}; +var findMiddlewareIndex = (stack, names) => { + const ns = Array.isArray(names) ? names : [names]; + for (const name of ns) { + const index = stack.findIndex( + (middleware) => typeof middleware.handle === 'function' && middleware.handle.name === name, + ); + if (index > 0) { + return index; + } + } + return -1; +}; + +// src/build.ts +var buildPlugin = ({ targets, structured, silent }) => { + let config; + return { + name: 'vite-plugin-static-copy:build', + apply: 'build', + configResolved(_config) { + config = _config; + }, + async writeBundle() { + const result = await copyAll(config.root, config.build.outDir, targets, structured); + if (!silent) outputCopyLog(config.logger, result); + }, + }; +}; + +// src/index.ts +var viteStaticCopy = (options) => { + const resolvedOptions = resolveOptions(options); + return [servePlugin(resolvedOptions), buildPlugin(resolvedOptions)]; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && + (module.exports = { + viteStaticCopy, + }); diff --git a/vite.main.config.ts b/vite.main.config.ts index db47ed4..76d58fa 100644 --- a/vite.main.config.ts +++ b/vite.main.config.ts @@ -1,5 +1,5 @@ import { defineConfig } from 'vite'; -import { viteStaticCopy } from 'vite-plugin-static-copy'; +import { viteStaticCopy } from './vendor/vite-plugin-static-copy.cjs'; // https://vitejs.dev/config export default defineConfig({