diff --git a/manifest.json b/manifest.json index 6473704..c0495d3 100644 --- a/manifest.json +++ b/manifest.json @@ -8,6 +8,7 @@ "isSingleInstall": false, "hasDevMode": true, "serveUrl": "https://apps-cdn.deskpro-service.com/__name__/__version__", + "secrets": "/r+RcJoWFqSX9UdSTGP2ViJRiZPqnjCPCpYxeoMHDD2Wr6eNNStVr5XtlWEqxVabmS2cyv0UWSalw5TjIV2foqVzw76o57fm1kuak+lyky3ezVuWrDEi4I808WzI70ZGFtO9JfB1HpMkvJ6/3rT2/W7KE2QnR2ZYoaJ0svQ+LRnUvcj2rfigf5S3ZMUQ/aX+0O8chQJmEdLBJ1Tkzksc05OlVXBnugUZ799SYBocM4O9zhp8GQnmWZlxNi0t4vuxs9FCR/7WxwgPcUhu3fi7ngzalc9pzzXhJ2IsawjUC82IypHzIi+JErOTACVXqBcsdDvAYmWw7qt1FLoUwLzFYWyBgYl8scH6dDSY6mndJIguZQH5+k2ZqFtpSsBgMHsvX0mjsnbqt+d0qdIs4/P9RK4AvLXvssJ5xZBu1ipPxfmC9rAN9yeKwlOMr4GlJry5iMKoPxc3CM24J8algEWikkcMuM6da1mh9NTdB0yL2cmYovE2xWLrqwS81BpfZ4rsC+OUOr8RI6hS61/pltXBqrm2ia7R7krw4WD4beEsJFxM+mhwj6VD7KWCDDfIjR72cnaZ/AEbD80pjJITLrgysm1E1BxFYyF+yScd0Oh/dLUTHlQXM8DLQ2dc4YiAdHU+O30MbNs7KbWSq5oqyDP4AjseUTOSvuPczr0EhcpnkgyK95pj/WsUK6S4dBIuFun7b8+L1Avk3jYCcx7hahm4blYZ1OpogunXCHhOVByjIJniVrVWbgLTc3xplj7rxMkdo5ybCFqAzf5LA++Lvf6zv2XJiyHK6B3Q9OwxA4/XfNcQzTCw3FvepqFMugSprLYw2OB5fdNGZyOyyhXY0wfQ56rrIBDZA6uxqNeLM7mm2ZN4ELkWF1LNCFYcHmkEUT6r+Cd+8HQP/WnBfXug2kwpzB5Y/DEr1cId1mQK9MariIN4+YzyaYI6YQ4SAgWG/BN6Cg7U3zwY/ojMuNw7NKwHRX+fm7t7ax9AS6joOOYaViyh3RE4hpVmzXnaVM3cJLujbJ36oAlR6c0M/H1TppF9KlWLXA1xcjlP8PuMMowwffBvXg4Hnkw1ERfbRNBrLXYRx1lWXOZdzs0/VwaYoJomVuvfMtVZgpjoPLaWySIBT2I=", "targets": [ { "target": "ticket_sidebar", @@ -24,18 +25,27 @@ } ], "settings": { + "use_deskpro_saas": { + "title": "Use Deskpro SAAS", + "type": "boolean", + "isRequired": false, + "isBackendOnly": false, + "order": 5 + }, "client_id": { "title": "Client ID", "type": "string", - "isRequired": true, + "isRequired": false, "isBackendOnly": false, + "condition": "settings.use_deskpro_saas != true", "order": 10 }, "client_secret": { "title": "Client secret", "type": "string", - "isRequired": true, + "isRequired": false, "isBackendOnly": true, + "condition": "settings.use_deskpro_saas != true", "order": 20 }, "dont_add_comment_when_linking_issue": { @@ -58,6 +68,7 @@ "title": "Callback URL", "type": "app_embedded", "options": { "entrypoint": "#/admin/callback" }, + "condition": "settings.use_deskpro_saas != true", "isRequired": false, "isBackendOnly": false, "order": 50 diff --git a/package.json b/package.json index 17ee0eb..fe28a5a 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ "bumpManifestVer": "node ./bin/bumpManifestVer.js" }, "dependencies": { - "@deskpro/app-sdk": "^5.1.1", - "@deskpro/deskpro-ui": "^8.2.0", + "@deskpro/app-sdk": "^6.0.3", + "@deskpro/deskpro-ui": "^8.2.1", "@fortawesome/free-solid-svg-icons": "^6.7.2", "@fortawesome/react-fontawesome": "^0.2.2", "@heroicons/react": "1.0.6", @@ -32,28 +32,26 @@ "react-dom": "^17.0.2", "react-error-boundary": "^3.1.4", "react-resize-observer": "^1.1.1", - "react-router-dom": "^6.28.1", + "react-router-dom": "^6.29.0", "react-time-ago": "^7.3.3", "showdown": "^2.1.0", "simplebar": "^6.3.0", - "styled-components": "^6.1.14", + "styled-components": "^6.1.15", "tippy.js": "^6.3.7", "ts-pattern": "^3.3.5", "use-debounce": "^8.0.4", - "uuid": "^9.0.1", "yup": "^0.32.11" }, "devDependencies": { "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^12.1.5", "@types/jest": "^29.5.14", - "@types/lodash": "^4.17.14", + "@types/lodash": "^4.17.15", "@types/react": "^18.3.18", "@types/react-copy-to-clipboard": "^5.0.7", "@types/react-dom": "^18.3.5", "@types/showdown": "^2.0.6", "@types/testing-library__jest-dom": "^5.14.9", - "@types/uuid": "^8.3.4", "@typescript-eslint/eslint-plugin": "5.6.0", "@typescript-eslint/parser": "5.6.0", "@vitejs/plugin-react": "^1.3.2", @@ -67,7 +65,7 @@ "rollup-plugin-copy": "3.4.0", "slugify": "^1.6.6", "ts-jest": "^29.2.5", - "typescript": "^5.7.2", - "vite": "^6.0.11" + "typescript": "^5.7.3", + "vite": "^6.1.0" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ce5ede6..dade996 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,11 +9,11 @@ importers: .: dependencies: '@deskpro/app-sdk': - specifier: ^5.1.1 - version: 5.1.1(@deskpro/deskpro-ui@8.2.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(styled-components@6.1.14(react-dom@17.0.2(react@17.0.2))(react@17.0.2)))(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.7.2) + specifier: ^6.0.3 + version: 6.0.3(@deskpro/deskpro-ui@8.2.1(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(styled-components@6.1.15(react-dom@17.0.2(react@17.0.2))(react@17.0.2)))(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.7.3) '@deskpro/deskpro-ui': - specifier: ^8.2.0 - version: 8.2.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(styled-components@6.1.14(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + specifier: ^8.2.1 + version: 8.2.1(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(styled-components@6.1.15(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) '@fortawesome/free-solid-svg-icons': specifier: ^6.7.2 version: 6.7.2 @@ -60,8 +60,8 @@ importers: specifier: ^1.1.1 version: 1.1.1(react@17.0.2) react-router-dom: - specifier: ^6.28.1 - version: 6.28.1(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + specifier: ^6.29.0 + version: 6.29.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) react-time-ago: specifier: ^7.3.3 version: 7.3.3(javascript-time-ago@2.5.11)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -72,8 +72,8 @@ importers: specifier: ^6.3.0 version: 6.3.0 styled-components: - specifier: ^6.1.14 - version: 6.1.14(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + specifier: ^6.1.15 + version: 6.1.15(react-dom@17.0.2(react@17.0.2))(react@17.0.2) tippy.js: specifier: ^6.3.7 version: 6.3.7 @@ -83,9 +83,6 @@ importers: use-debounce: specifier: ^8.0.4 version: 8.0.4(react@17.0.2) - uuid: - specifier: ^9.0.1 - version: 9.0.1 yup: specifier: ^0.32.11 version: 0.32.11 @@ -100,8 +97,8 @@ importers: specifier: ^29.5.14 version: 29.5.14 '@types/lodash': - specifier: ^4.17.14 - version: 4.17.14 + specifier: ^4.17.15 + version: 4.17.15 '@types/react': specifier: ^18.3.18 version: 18.3.18 @@ -117,15 +114,12 @@ importers: '@types/testing-library__jest-dom': specifier: ^5.14.9 version: 5.14.9 - '@types/uuid': - specifier: ^8.3.4 - version: 8.3.4 '@typescript-eslint/eslint-plugin': specifier: 5.6.0 - version: 5.6.0(@typescript-eslint/parser@5.6.0(eslint@8.4.1)(typescript@5.7.2))(eslint@8.4.1)(typescript@5.7.2) + version: 5.6.0(@typescript-eslint/parser@5.6.0(eslint@8.4.1)(typescript@5.7.3))(eslint@8.4.1)(typescript@5.7.3) '@typescript-eslint/parser': specifier: 5.6.0 - version: 5.6.0(eslint@8.4.1)(typescript@5.7.2) + version: 5.6.0(eslint@8.4.1)(typescript@5.7.3) '@vitejs/plugin-react': specifier: ^1.3.2 version: 1.3.2 @@ -146,7 +140,7 @@ importers: version: 4.3.0(eslint@8.4.1) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.10.5) + version: 29.7.0(@types/node@22.13.1) prettier: specifier: ^2.8.8 version: 2.8.8 @@ -158,13 +152,13 @@ importers: version: 1.6.6 ts-jest: specifier: ^29.2.5 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@22.10.5))(typescript@5.7.2) + version: 29.2.5(@babel/core@7.26.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.7))(jest@29.7.0(@types/node@22.13.1))(typescript@5.7.3) typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 vite: - specifier: ^6.0.11 - version: 6.0.11(@types/node@22.10.5)(sass@1.83.1) + specifier: ^6.1.0 + version: 6.1.0(@types/node@22.13.1)(sass@1.84.0) packages: @@ -179,24 +173,24 @@ packages: resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.3': - resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} + '@babel/compat-data@7.26.5': + resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.0': - resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + '@babel/core@7.26.7': + resolution: {integrity: sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.3': - resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} + '@babel/generator@7.26.5': + resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.25.9': resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.9': - resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.25.9': @@ -209,8 +203,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-plugin-utils@7.25.9': - resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.25.9': @@ -225,12 +219,12 @@ packages: resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.26.0': - resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + '@babel/helpers@7.26.7': + resolution: {integrity: sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.3': - resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + '@babel/parser@7.26.7': + resolution: {integrity: sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==} engines: {node: '>=6.0.0'} hasBin: true @@ -349,27 +343,27 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.26.0': - resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + '@babel/runtime@7.26.7': + resolution: {integrity: sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==} engines: {node: '>=6.9.0'} '@babel/template@7.25.9': resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.4': - resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} + '@babel/traverse@7.26.7': + resolution: {integrity: sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.3': - resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + '@babel/types@7.26.7': + resolution: {integrity: sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@deskpro/app-sdk@5.1.1': - resolution: {integrity: sha512-GVwjVb/8EX4aBHtDu7YqWKpVPxslyFy0nAEjbo59hycy73KPqV0UdOCQNM5LasZnrC1U6epV/BYVQrUDplTzuw==} + '@deskpro/app-sdk@6.0.3': + resolution: {integrity: sha512-7IYRxJ6SRCKrsSFO5bZwGYhRoEvX08LPv0pDGIxhNejrqp+eaDb8hjobKnPKwK22pRNJ/riExGPsbGXeSuuCZQ==} engines: {node: '>=20.0.0'} peerDependencies: '@deskpro/deskpro-ui': ^8.0.0 @@ -378,8 +372,8 @@ packages: react: ^18 react-dom: ^18 - '@deskpro/deskpro-ui@8.2.0': - resolution: {integrity: sha512-pUQa2mabmF8aToFVYdtwmhMYkLCjYxup6E5hr2Sj3GV0xEfn2UB4P8uwGautcfN49okpx/WcvgpM3667YKZfMQ==} + '@deskpro/deskpro-ui@8.2.1': + resolution: {integrity: sha512-ZQhE04AmIXtgOOJm4HGD0is5G+MZbnt1Petb/v/5NiwmVjpNwl84V/GyGohbXgTlc9mevBO3mjyk7bhqErfScg==} engines: {node: '>= 20.16.0'} peerDependencies: '@typescript/lib-dom': npm:@types/web @@ -756,191 +750,191 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@parcel/watcher-android-arm64@2.5.0': - resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==} + '@parcel/watcher-android-arm64@2.5.1': + resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.5.0': - resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==} + '@parcel/watcher-darwin-arm64@2.5.1': + resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.5.0': - resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==} + '@parcel/watcher-darwin-x64@2.5.1': + resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.5.0': - resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==} + '@parcel/watcher-freebsd-x64@2.5.1': + resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.5.0': - resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==} + '@parcel/watcher-linux-arm-glibc@2.5.1': + resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm-musl@2.5.0': - resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==} + '@parcel/watcher-linux-arm-musl@2.5.1': + resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm64-glibc@2.5.0': - resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==} + '@parcel/watcher-linux-arm64-glibc@2.5.1': + resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-musl@2.5.0': - resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==} + '@parcel/watcher-linux-arm64-musl@2.5.1': + resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-x64-glibc@2.5.0': - resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==} + '@parcel/watcher-linux-x64-glibc@2.5.1': + resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-linux-x64-musl@2.5.0': - resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==} + '@parcel/watcher-linux-x64-musl@2.5.1': + resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-win32-arm64@2.5.0': - resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==} + '@parcel/watcher-win32-arm64@2.5.1': + resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.5.0': - resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==} + '@parcel/watcher-win32-ia32@2.5.1': + resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.5.0': - resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==} + '@parcel/watcher-win32-x64@2.5.1': + resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.5.0': - resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==} + '@parcel/watcher@2.5.1': + resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@remix-run/router@1.21.0': - resolution: {integrity: sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==} + '@remix-run/router@1.22.0': + resolution: {integrity: sha512-MBOl8MeOzpK0HQQQshKB7pABXbmyHizdTpqnrIseTbsv0nAepwC2ENZa1aaBExNQcpLoXmWthhak8SABLzvGPw==} engines: {node: '>=14.0.0'} '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} - '@rollup/rollup-android-arm-eabi@4.31.0': - resolution: {integrity: sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA==} + '@rollup/rollup-android-arm-eabi@4.34.5': + resolution: {integrity: sha512-JXmmQcKQtpf3Z6lvA8akkrHDZ5AEfgc2hLMix1/X5BhQbezBQ0AP5GYLdU8jsQRme8qr2sscCe3wizp7UT0L9g==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.31.0': - resolution: {integrity: sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g==} + '@rollup/rollup-android-arm64@4.34.5': + resolution: {integrity: sha512-9/A8/ZBOprUjkrJoP9BBEq2vdSud6BPd3LChw09bJQiEZH5oN4kWIkHu90cA0Cj0cSF5cIaD76+0lA+d5KHmpQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.31.0': - resolution: {integrity: sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g==} + '@rollup/rollup-darwin-arm64@4.34.5': + resolution: {integrity: sha512-b9oCfgHKfc1AJEQ5sEpE8Kf6s7aeygj5bZAsl1hTpZc1V9cfZASFSXzzNj7o/BQNPbjmVkVxpCCLRhBfLXhJ5g==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.31.0': - resolution: {integrity: sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ==} + '@rollup/rollup-darwin-x64@4.34.5': + resolution: {integrity: sha512-Gz42gKBQPoFdMYdsVqkcpttYOO/0aP7f+1CgMaeZEz0gss7dop1TsO3hT77Iroz/TV7PdPUG/RYlj9EA39L4dw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.31.0': - resolution: {integrity: sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew==} + '@rollup/rollup-freebsd-arm64@4.34.5': + resolution: {integrity: sha512-JPkafjkOFaupd8VQYsXfGFKC2pfMr7hwSYGkVGNwhbW0k0lHHyIdhCSNBendJ4O7YlT4yRyKXoms1TL7saO7SQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.31.0': - resolution: {integrity: sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA==} + '@rollup/rollup-freebsd-x64@4.34.5': + resolution: {integrity: sha512-j6Q8VFqyI8hZM33h1JC6DZK2w8ejkXqEMozTrtIEGfRVMpVZL3GrLOOYEUkAgUSpJ9sb2w+FEpjGj7IHRcQfdw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.31.0': - resolution: {integrity: sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw==} + '@rollup/rollup-linux-arm-gnueabihf@4.34.5': + resolution: {integrity: sha512-6jyiXKF9Xq6x9yQjct5xrRT0VghJk5VzAfed3o0hgncwacZkzOdR0TXLRNjexsEXWN8tG7jWWwsVk7WeFi//gw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.31.0': - resolution: {integrity: sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg==} + '@rollup/rollup-linux-arm-musleabihf@4.34.5': + resolution: {integrity: sha512-cOTYe5tLcGAvGztRLIqx87LE7j/qjaAqFrrHsPFlnuhhhFO5LSr2AzvdQYuxomJMzMBrXkMRNl9bQEpDZ5bjLQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.31.0': - resolution: {integrity: sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA==} + '@rollup/rollup-linux-arm64-gnu@4.34.5': + resolution: {integrity: sha512-KHlrd+YqmS7rriW+LBb1kQNYmd5w1sAIG3z7HEpnQOrg/skeYYv9DAcclGL9gpFdpnzmiAEkzsTT74kZWUtChQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.31.0': - resolution: {integrity: sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g==} + '@rollup/rollup-linux-arm64-musl@4.34.5': + resolution: {integrity: sha512-uOb6hzDqym4Sw+qw3+svS3SmwQGVUhyTdPKyHDdlYg1Z0aHjdNmjwRY7zw/90/UfBe/yD7Mv2mYKhQpOfy4RYA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.31.0': - resolution: {integrity: sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.34.5': + resolution: {integrity: sha512-pARu8ZKANZH4wINLdHLKG69EPwJswM6A+Ox1a9LpiclRQoyjacFFTtXN3akKQ2ufJXDasO/pWvxKN9ZfCgEoFA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.31.0': - resolution: {integrity: sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.34.5': + resolution: {integrity: sha512-crUWn12NRmCdao2YwS1GvlPCVypMBMJlexTaantaP2+dAMd2eZBErFcKG8hZYEHjSbbk2UoH1aTlyeA4iKLqSA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.31.0': - resolution: {integrity: sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw==} + '@rollup/rollup-linux-riscv64-gnu@4.34.5': + resolution: {integrity: sha512-XtD/oMhCdixi3x8rCNyDRMUsLo1Z+1UQcK+oR7AsjglGov9ETiT3TNFhUPzaGC1jH+uaMtPhxrVRUub+pnAKTg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.31.0': - resolution: {integrity: sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ==} + '@rollup/rollup-linux-s390x-gnu@4.34.5': + resolution: {integrity: sha512-V3+BvgyHb21aF7lw0sc78Tv0+xLp4lm2OM7CKFVrBuppsMvtl/9O5y2OX4tdDT0EhIsDP/ObJPqDuEg1ZoTwSQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.31.0': - resolution: {integrity: sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g==} + '@rollup/rollup-linux-x64-gnu@4.34.5': + resolution: {integrity: sha512-SkCIXLGk42yldTcH8UXh++m0snVxp9DLf4meb1mWm0lC8jzxjFBwSLGtUSeLgQDsC05iBaIhyjNX46DlByrApQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.31.0': - resolution: {integrity: sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA==} + '@rollup/rollup-linux-x64-musl@4.34.5': + resolution: {integrity: sha512-iUcH3FBtBN2/Ce0rI84suRhD0+bB5BVEffqOwsGaX5py5TuYLOQa7S7oVBP0NKtB5rub3i9IvZtMXiD96l5v0A==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.31.0': - resolution: {integrity: sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw==} + '@rollup/rollup-win32-arm64-msvc@4.34.5': + resolution: {integrity: sha512-PUbWd+h/h6rUowalDYIdc9S9LJXbQDMcJe0BjABl3oT3efYRgZ8aUe8ZZDSie7y+fz6Z+rueNfdorIbkWv5Eqg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.31.0': - resolution: {integrity: sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ==} + '@rollup/rollup-win32-ia32-msvc@4.34.5': + resolution: {integrity: sha512-3vncGhOJiAUR85fnAXJyvSp2GaDWYByIQmW68ZAr+e8kIxgvJ1VaZbfHD5BO5X6hwRQdY6Um/XfA3l5c2lV+OQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.31.0': - resolution: {integrity: sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw==} + '@rollup/rollup-win32-x64-msvc@4.34.5': + resolution: {integrity: sha512-Mi8yVUlQOoeBpY72n75VLATptPGvj2lHa47rQdK9kZ4MoG5Ve86aVIU+PO3tBklTCBtILtdRfXS0EvIbXgmCAg==} cpu: [x64] os: [win32] @@ -1041,14 +1035,14 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/lodash@4.17.14': - resolution: {integrity: sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==} + '@types/lodash@4.17.15': + resolution: {integrity: sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==} '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/node@22.10.5': - resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==} + '@types/node@22.13.1': + resolution: {integrity: sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==} '@types/prop-types@15.7.14': resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} @@ -1084,9 +1078,6 @@ packages: '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -1270,8 +1261,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.24.3: - resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1315,8 +1306,8 @@ packages: can-use-dom@0.1.0: resolution: {integrity: sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ==} - caniuse-lite@1.0.30001690: - resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} + caniuse-lite@1.0.30001698: + resolution: {integrity: sha512-xJ3km2oiG/MbNU8G6zIq6XRZ6HtAOVXsbOrP/blGazi52kc5Yy7b6sDA5O+FbROzRrV7BSTllLHuNvmawYUJjw==} chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} @@ -1338,8 +1329,8 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - cjs-module-lexer@1.4.1: - resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -1379,8 +1370,8 @@ packages: copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} - core-js@3.39.0: - resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} + core-js@3.40.0: + resolution: {integrity: sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==} create-jest@29.7.0: resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} @@ -1440,8 +1431,8 @@ packages: supports-color: optional: true - decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} dedent@1.5.3: resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} @@ -1519,8 +1510,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.76: - resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} + electron-to-chromium@1.5.96: + resolution: {integrity: sha512-8AJUW6dh75Fm/ny8+kZKJzI1pgoE8bKLZlzDU2W1ENd+DXKJrx7I7l9hb8UWR4ojlnb5OlixMt00QWiYJoVw1w==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -1551,8 +1542,8 @@ packages: es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} esbuild@0.24.2: @@ -1678,8 +1669,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fastq@1.18.0: - resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + fastq@1.19.0: + resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} @@ -1709,8 +1700,9 @@ packages: flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.4: + resolution: {integrity: sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==} + engines: {node: '>= 0.4'} form-data@4.0.1: resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} @@ -1751,8 +1743,8 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - fuse.js@7.0.0: - resolution: {integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==} + fuse.js@7.1.0: + resolution: {integrity: sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==} engines: {node: '>=10'} gensync@1.0.0-beta.2: @@ -1889,8 +1881,8 @@ packages: immutable@5.0.3: resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} import-local@3.2.0: @@ -1935,8 +1927,8 @@ packages: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} - is-boolean-object@1.2.1: - resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} is-callable@1.2.7: @@ -2254,8 +2246,8 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - libphonenumber-js@1.11.17: - resolution: {integrity: sha512-Jr6v8thd5qRlOlc6CslSTzGzzQW03uiscab7KHQZX1Dfo4R6n6FDhZ0Hri6/X7edLIDv9gl4VMZXhxTjLnl0VQ==} + libphonenumber-js@1.11.19: + resolution: {integrity: sha512-bW/Yp/9dod6fmyR+XqSUL1N5JE7QRxQ3KrBIbYS1FTv32e5i3SEtQVX+71CYNv8maWNSOgnlCoNp9X78f/cKiA==} lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -2395,8 +2387,8 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-inspect@1.13.3: - resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} object-is@1.1.6: @@ -2496,21 +2488,21 @@ packages: popmotion@11.0.3: resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.4.49: resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.1: + resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2631,15 +2623,15 @@ packages: peerDependencies: react: '>=0.14' - react-router-dom@6.28.1: - resolution: {integrity: sha512-YraE27C/RdjcZwl5UCqF/ffXnZDxpJdk9Q6jw38SZHjXs7NNdpViq2l2c7fO7+4uWaEfcwfGCv3RSg4e1By/fQ==} + react-router-dom@6.29.0: + resolution: {integrity: sha512-pkEbJPATRJ2iotK+wUwHfy0xs2T59YPEN8BQxVCPeBZvK7kfPESRc/nyxzdcxR17hXgUPYx2whMwl+eo9cUdnQ==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' - react-router@6.28.1: - resolution: {integrity: sha512-2omQTA3rkMljmrvvo6WtewGdVh45SpL9hGiCI9uUrwGGfNFDIvGK4gYJsKlJoNVi6AQZcopSCballL+QGOm7fA==} + react-router@6.29.0: + resolution: {integrity: sha512-DXZJoE0q+KyeVw75Ck6GkPxFak63C4fGqZGNijnWgzB/HzSP1ZfTlBj5COaGWwhrMQ/R8bXiq5Ooy4KG+ReyjQ==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' @@ -2655,9 +2647,9 @@ packages: resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} engines: {node: '>=0.10.0'} - readdirp@4.0.2: - resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} - engines: {node: '>= 14.16.0'} + readdirp@4.1.1: + resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} + engines: {node: '>= 14.18.0'} redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} @@ -2718,8 +2710,8 @@ packages: resolution: {integrity: sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ==} engines: {node: '>=8.3'} - rollup@4.31.0: - resolution: {integrity: sha512-9cCE8P4rZLx9+PjoyqHLs31V9a9Vpvfo4qNcs6JCiGWYhw2gijSetFbH6SSy1whnkgcefnUwr8sad7tgqsGvnw==} + rollup@4.34.5: + resolution: {integrity: sha512-GyVCmpo9z/HYqFD8QWoBUnz1Q9xC22t8tPAZm/AvAcUg2U2/+DkboEvSioMwv042zE4I9N3FEhx7fiCT2YHzKQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2733,8 +2725,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.83.1: - resolution: {integrity: sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA==} + sass@1.84.0: + resolution: {integrity: sha512-XDAbhEPJRxi7H0SxrnOpiXFQoUJHwkR2u3Zc4el+fK/Tt5Hpzw5kkQ59qVDfvdaUq6gCrEZIbySFBM2T9DNKHg==} engines: {node: '>=14.0.0'} hasBin: true @@ -2749,8 +2741,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} engines: {node: '>=10'} hasBin: true @@ -2878,8 +2870,8 @@ packages: style-value-types@5.0.0: resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} - styled-components@6.1.14: - resolution: {integrity: sha512-KtfwhU5jw7UoxdM0g6XU9VZQFV4do+KrM8idiVCH5h4v49W+3p3yMe0icYwJgZQZepa5DbH04Qv8P0/RdcLcgg==} + styled-components@6.1.15: + resolution: {integrity: sha512-PpOTEztW87Ua2xbmLa7yssjNyUF9vE7wdldRfn1I2E6RTkqknkBYpj771OxM/xrvRGinLy2oysa7GOd7NcZZIA==} engines: {node: '>= 16'} peerDependencies: react: '>= 16.8.0' @@ -3005,8 +2997,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} hasBin: true @@ -3026,8 +3018,8 @@ packages: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} - update-browserslist-db@1.1.1: - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + update-browserslist-db@1.1.2: + resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -3059,10 +3051,6 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - v8-compile-cache@2.4.0: resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} @@ -3070,8 +3058,8 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} - vite@6.0.11: - resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} + vite@6.1.0: + resolution: {integrity: sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -3228,20 +3216,20 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.3': {} + '@babel/compat-data@7.26.5': {} - '@babel/core@7.26.0': + '@babel/core@7.26.7': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.3 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.3 + '@babel/generator': 7.26.5 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.7) + '@babel/helpers': 7.26.7 + '@babel/parser': 7.26.7 '@babel/template': 7.25.9 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.7 + '@babel/types': 7.26.7 convert-source-map: 2.0.0 debug: 4.4.0 gensync: 1.0.0-beta.2 @@ -3250,43 +3238,43 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.3': + '@babel/generator@7.26.5': dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.7 - '@babel/helper-compilation-targets@7.25.9': + '@babel/helper-compilation-targets@7.26.5': dependencies: - '@babel/compat-data': 7.26.3 + '@babel/compat-data': 7.26.5 '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.3 + browserslist: 4.24.4 lru-cache: 5.1.1 semver: 6.3.1 '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.7 + '@babel/types': 7.26.7 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 + '@babel/core': 7.26.7 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.7 transitivePeerDependencies: - supports-color - '@babel/helper-plugin-utils@7.25.9': {} + '@babel/helper-plugin-utils@7.26.5': {} '@babel/helper-string-parser@7.25.9': {} @@ -3294,160 +3282,160 @@ snapshots: '@babel/helper-validator-option@7.25.9': {} - '@babel/helpers@7.26.0': + '@babel/helpers@7.26.7': dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.7 - '@babel/parser@7.26.3': + '@babel/parser@7.26.7': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.7 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/core': 7.26.7 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.7) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.7)': dependencies: - '@babel/core': 7.26.0 + '@babel/core': 7.26.7 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.3 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.7) + '@babel/types': 7.26.7 transitivePeerDependencies: - supports-color - '@babel/runtime@7.26.0': + '@babel/runtime@7.26.7': dependencies: regenerator-runtime: 0.14.1 '@babel/template@7.25.9': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 - '@babel/traverse@7.26.4': + '@babel/traverse@7.26.7': dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.3 - '@babel/parser': 7.26.3 + '@babel/generator': 7.26.5 + '@babel/parser': 7.26.7 '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.7 debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.26.3': + '@babel/types@7.26.7': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 '@bcoe/v8-coverage@0.2.3': {} - '@deskpro/app-sdk@5.1.1(@deskpro/deskpro-ui@8.2.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(styled-components@6.1.14(react-dom@17.0.2(react@17.0.2))(react@17.0.2)))(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.7.2)': + '@deskpro/app-sdk@6.0.3(@deskpro/deskpro-ui@8.2.1(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(styled-components@6.1.15(react-dom@17.0.2(react@17.0.2))(react@17.0.2)))(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.7.3)': dependencies: - '@deskpro/deskpro-ui': 8.2.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(styled-components@6.1.14(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@deskpro/deskpro-ui': 8.2.1(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(styled-components@6.1.15(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) '@fortawesome/fontawesome-svg-core': 6.7.2 '@fortawesome/free-brands-svg-icons': 6.7.2 '@fortawesome/free-regular-svg-icons': 6.7.2 @@ -3458,28 +3446,28 @@ snapshots: '@types/react-dom': 18.3.5(@types/react@18.3.18) fast-check: 3.23.2 flatpickr: 4.6.13 - fuse.js: 7.0.0 + fuse.js: 7.1.0 handlebars: 4.7.7 i18n-iso-countries: 7.13.0 - libphonenumber-js: 1.11.17 + libphonenumber-js: 1.11.19 modern-normalize: 1.1.0 penpal: 6.2.1 react: 17.0.2 react-copy-to-clipboard: 5.1.0(react@17.0.2) react-dom: 17.0.2(react@17.0.2) react-flatpickr: 3.10.7(react@17.0.2) - react-intl: 5.25.1(react@17.0.2)(typescript@5.7.2) + react-intl: 5.25.1(react@17.0.2)(typescript@5.7.3) regenerator-runtime: 0.14.1 - sass: 1.83.1 + sass: 1.84.0 shortcut-buttons-flatpickr: 0.4.0 - styled-components: 6.1.14(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + styled-components: 6.1.15(react-dom@17.0.2(react@17.0.2))(react@17.0.2) ts-pattern: 4.3.0 tslib: 2.8.1 transitivePeerDependencies: - react-native - typescript - '@deskpro/deskpro-ui@8.2.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(styled-components@6.1.14(react-dom@17.0.2(react@17.0.2))(react@17.0.2))': + '@deskpro/deskpro-ui@8.2.1(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(styled-components@6.1.15(react-dom@17.0.2(react@17.0.2))(react@17.0.2))': dependencies: '@fortawesome/fontawesome-svg-core': 6.7.2 '@fortawesome/free-solid-svg-icons': 6.7.2 @@ -3500,7 +3488,7 @@ snapshots: react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) simplebar: 5.3.9 simplebar-react: 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - styled-components: 6.1.14(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + styled-components: 6.1.15(react-dom@17.0.2(react@17.0.2))(react@17.0.2) tippy.js: 6.3.7 ts-pattern: 4.3.0 tslib: 2.4.1 @@ -3606,7 +3594,7 @@ snapshots: espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 @@ -3649,7 +3637,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@formatjs/intl@2.2.1(typescript@5.7.2)': + '@formatjs/intl@2.2.1(typescript@5.7.3)': dependencies: '@formatjs/ecma402-abstract': 1.11.4 '@formatjs/fast-memoize': 1.2.1 @@ -3659,7 +3647,7 @@ snapshots: intl-messageformat: 9.13.0 tslib: 2.8.1 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 '@fortawesome/fontawesome-common-types@6.7.2': {} @@ -3718,7 +3706,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.13.1 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -3731,14 +3719,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.13.1 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.10.5) + jest-config: 29.7.0(@types/node@22.13.1) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -3763,7 +3751,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.13.1 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -3781,7 +3769,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.10.5 + '@types/node': 22.13.1 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -3803,7 +3791,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.10.5 + '@types/node': 22.13.1 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -3850,7 +3838,7 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.26.0 + '@babel/core': 7.26.7 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -3873,7 +3861,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.10.5 + '@types/node': 22.13.1 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -3941,133 +3929,133 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.18.0 + fastq: 1.19.0 - '@parcel/watcher-android-arm64@2.5.0': + '@parcel/watcher-android-arm64@2.5.1': optional: true - '@parcel/watcher-darwin-arm64@2.5.0': + '@parcel/watcher-darwin-arm64@2.5.1': optional: true - '@parcel/watcher-darwin-x64@2.5.0': + '@parcel/watcher-darwin-x64@2.5.1': optional: true - '@parcel/watcher-freebsd-x64@2.5.0': + '@parcel/watcher-freebsd-x64@2.5.1': optional: true - '@parcel/watcher-linux-arm-glibc@2.5.0': + '@parcel/watcher-linux-arm-glibc@2.5.1': optional: true - '@parcel/watcher-linux-arm-musl@2.5.0': + '@parcel/watcher-linux-arm-musl@2.5.1': optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.0': + '@parcel/watcher-linux-arm64-glibc@2.5.1': optional: true - '@parcel/watcher-linux-arm64-musl@2.5.0': + '@parcel/watcher-linux-arm64-musl@2.5.1': optional: true - '@parcel/watcher-linux-x64-glibc@2.5.0': + '@parcel/watcher-linux-x64-glibc@2.5.1': optional: true - '@parcel/watcher-linux-x64-musl@2.5.0': + '@parcel/watcher-linux-x64-musl@2.5.1': optional: true - '@parcel/watcher-win32-arm64@2.5.0': + '@parcel/watcher-win32-arm64@2.5.1': optional: true - '@parcel/watcher-win32-ia32@2.5.0': + '@parcel/watcher-win32-ia32@2.5.1': optional: true - '@parcel/watcher-win32-x64@2.5.0': + '@parcel/watcher-win32-x64@2.5.1': optional: true - '@parcel/watcher@2.5.0': + '@parcel/watcher@2.5.1': dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 micromatch: 4.0.8 node-addon-api: 7.1.1 optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.0 - '@parcel/watcher-darwin-arm64': 2.5.0 - '@parcel/watcher-darwin-x64': 2.5.0 - '@parcel/watcher-freebsd-x64': 2.5.0 - '@parcel/watcher-linux-arm-glibc': 2.5.0 - '@parcel/watcher-linux-arm-musl': 2.5.0 - '@parcel/watcher-linux-arm64-glibc': 2.5.0 - '@parcel/watcher-linux-arm64-musl': 2.5.0 - '@parcel/watcher-linux-x64-glibc': 2.5.0 - '@parcel/watcher-linux-x64-musl': 2.5.0 - '@parcel/watcher-win32-arm64': 2.5.0 - '@parcel/watcher-win32-ia32': 2.5.0 - '@parcel/watcher-win32-x64': 2.5.0 + '@parcel/watcher-android-arm64': 2.5.1 + '@parcel/watcher-darwin-arm64': 2.5.1 + '@parcel/watcher-darwin-x64': 2.5.1 + '@parcel/watcher-freebsd-x64': 2.5.1 + '@parcel/watcher-linux-arm-glibc': 2.5.1 + '@parcel/watcher-linux-arm-musl': 2.5.1 + '@parcel/watcher-linux-arm64-glibc': 2.5.1 + '@parcel/watcher-linux-arm64-musl': 2.5.1 + '@parcel/watcher-linux-x64-glibc': 2.5.1 + '@parcel/watcher-linux-x64-musl': 2.5.1 + '@parcel/watcher-win32-arm64': 2.5.1 + '@parcel/watcher-win32-ia32': 2.5.1 + '@parcel/watcher-win32-x64': 2.5.1 optional: true '@popperjs/core@2.11.8': {} - '@remix-run/router@1.21.0': {} + '@remix-run/router@1.22.0': {} '@rollup/pluginutils@4.2.1': dependencies: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/rollup-android-arm-eabi@4.31.0': + '@rollup/rollup-android-arm-eabi@4.34.5': optional: true - '@rollup/rollup-android-arm64@4.31.0': + '@rollup/rollup-android-arm64@4.34.5': optional: true - '@rollup/rollup-darwin-arm64@4.31.0': + '@rollup/rollup-darwin-arm64@4.34.5': optional: true - '@rollup/rollup-darwin-x64@4.31.0': + '@rollup/rollup-darwin-x64@4.34.5': optional: true - '@rollup/rollup-freebsd-arm64@4.31.0': + '@rollup/rollup-freebsd-arm64@4.34.5': optional: true - '@rollup/rollup-freebsd-x64@4.31.0': + '@rollup/rollup-freebsd-x64@4.34.5': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.31.0': + '@rollup/rollup-linux-arm-gnueabihf@4.34.5': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.31.0': + '@rollup/rollup-linux-arm-musleabihf@4.34.5': optional: true - '@rollup/rollup-linux-arm64-gnu@4.31.0': + '@rollup/rollup-linux-arm64-gnu@4.34.5': optional: true - '@rollup/rollup-linux-arm64-musl@4.31.0': + '@rollup/rollup-linux-arm64-musl@4.34.5': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.31.0': + '@rollup/rollup-linux-loongarch64-gnu@4.34.5': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.31.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.34.5': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.31.0': + '@rollup/rollup-linux-riscv64-gnu@4.34.5': optional: true - '@rollup/rollup-linux-s390x-gnu@4.31.0': + '@rollup/rollup-linux-s390x-gnu@4.34.5': optional: true - '@rollup/rollup-linux-x64-gnu@4.31.0': + '@rollup/rollup-linux-x64-gnu@4.34.5': optional: true - '@rollup/rollup-linux-x64-musl@4.31.0': + '@rollup/rollup-linux-x64-musl@4.34.5': optional: true - '@rollup/rollup-win32-arm64-msvc@4.31.0': + '@rollup/rollup-win32-arm64-msvc@4.34.5': optional: true - '@rollup/rollup-win32-ia32-msvc@4.31.0': + '@rollup/rollup-win32-ia32-msvc@4.34.5': optional: true - '@rollup/rollup-win32-x64-msvc@4.31.0': + '@rollup/rollup-win32-x64-msvc@4.34.5': optional: true '@sinclair/typebox@0.27.8': {} @@ -4093,7 +4081,7 @@ snapshots: '@testing-library/dom@8.20.1': dependencies: '@babel/code-frame': 7.26.2 - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.26.7 '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 @@ -4104,7 +4092,7 @@ snapshots: '@testing-library/jest-dom@5.17.0': dependencies: '@adobe/css-tools': 4.4.1 - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.26.7 '@types/testing-library__jest-dom': 5.14.9 aria-query: 5.3.2 chalk: 3.0.0 @@ -4115,7 +4103,7 @@ snapshots: '@testing-library/react@12.1.5(@types/react@18.3.18)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.26.7 '@testing-library/dom': 8.20.1 '@types/react-dom': 17.0.26(@types/react@18.3.18) react: 17.0.2 @@ -4135,39 +4123,39 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.7 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.7 '@types/estree@1.0.6': {} '@types/fs-extra@8.1.5': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.13.1 '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.10.5 + '@types/node': 22.13.1 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.13.1 '@types/hoist-non-react-statics@3.3.6': dependencies: @@ -4191,17 +4179,17 @@ snapshots: '@types/jsdom@20.0.1': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.13.1 '@types/tough-cookie': 4.0.5 parse5: 7.2.1 '@types/json-schema@7.0.15': {} - '@types/lodash@4.17.14': {} + '@types/lodash@4.17.15': {} '@types/minimatch@5.1.2': {} - '@types/node@22.10.5': + '@types/node@22.13.1': dependencies: undici-types: 6.20.0 @@ -4236,37 +4224,35 @@ snapshots: '@types/tough-cookie@4.0.5': {} - '@types/uuid@8.3.4': {} - '@types/yargs-parser@21.0.3': {} '@types/yargs@17.0.33': dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@5.6.0(@typescript-eslint/parser@5.6.0(eslint@8.4.1)(typescript@5.7.2))(eslint@8.4.1)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@5.6.0(@typescript-eslint/parser@5.6.0(eslint@8.4.1)(typescript@5.7.3))(eslint@8.4.1)(typescript@5.7.3)': dependencies: - '@typescript-eslint/experimental-utils': 5.6.0(eslint@8.4.1)(typescript@5.7.2) - '@typescript-eslint/parser': 5.6.0(eslint@8.4.1)(typescript@5.7.2) + '@typescript-eslint/experimental-utils': 5.6.0(eslint@8.4.1)(typescript@5.7.3) + '@typescript-eslint/parser': 5.6.0(eslint@8.4.1)(typescript@5.7.3) '@typescript-eslint/scope-manager': 5.6.0 debug: 4.4.0 eslint: 8.4.1 functional-red-black-tree: 1.0.1 ignore: 5.3.2 regexpp: 3.2.0 - semver: 7.6.3 - tsutils: 3.21.0(typescript@5.7.2) + semver: 7.7.1 + tsutils: 3.21.0(typescript@5.7.3) optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/experimental-utils@5.6.0(eslint@8.4.1)(typescript@5.7.2)': + '@typescript-eslint/experimental-utils@5.6.0(eslint@8.4.1)(typescript@5.7.3)': dependencies: '@types/json-schema': 7.0.15 '@typescript-eslint/scope-manager': 5.6.0 '@typescript-eslint/types': 5.6.0 - '@typescript-eslint/typescript-estree': 5.6.0(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 5.6.0(typescript@5.7.3) eslint: 8.4.1 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@8.4.1) @@ -4274,15 +4260,15 @@ snapshots: - supports-color - typescript - '@typescript-eslint/parser@5.6.0(eslint@8.4.1)(typescript@5.7.2)': + '@typescript-eslint/parser@5.6.0(eslint@8.4.1)(typescript@5.7.3)': dependencies: '@typescript-eslint/scope-manager': 5.6.0 '@typescript-eslint/types': 5.6.0 - '@typescript-eslint/typescript-estree': 5.6.0(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 5.6.0(typescript@5.7.3) debug: 4.4.0 eslint: 8.4.1 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -4293,17 +4279,17 @@ snapshots: '@typescript-eslint/types@5.6.0': {} - '@typescript-eslint/typescript-estree@5.6.0(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@5.6.0(typescript@5.7.3)': dependencies: '@typescript-eslint/types': 5.6.0 '@typescript-eslint/visitor-keys': 5.6.0 debug: 4.4.0 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.3 - tsutils: 3.21.0(typescript@5.7.2) + semver: 7.7.1 + tsutils: 3.21.0(typescript@5.7.3) optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -4314,11 +4300,11 @@ snapshots: '@vitejs/plugin-react@1.3.2': dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) + '@babel/core': 7.26.7 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.7) + '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.7) + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.7) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.7) '@rollup/pluginutils': 4.2.1 react-refresh: 0.13.0 resolve: 1.22.10 @@ -4401,15 +4387,15 @@ snapshots: available-typed-arrays@1.0.7: dependencies: - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 - babel-jest@29.7.0(@babel/core@7.26.0): + babel-jest@29.7.0(@babel/core@7.26.7): dependencies: - '@babel/core': 7.26.0 + '@babel/core': 7.26.7 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.26.0) + babel-preset-jest: 29.6.3(@babel/core@7.26.7) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -4418,7 +4404,7 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -4429,34 +4415,34 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.7 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 - babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) - - babel-preset-jest@29.6.3(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 + babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.7): + dependencies: + '@babel/core': 7.26.7 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.7) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.7) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.7) + + babel-preset-jest@29.6.3(@babel/core@7.26.7): + dependencies: + '@babel/core': 7.26.7 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.7) balanced-match@1.0.2: {} @@ -4473,12 +4459,12 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.24.3: + browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001690 - electron-to-chromium: 1.5.76 + caniuse-lite: 1.0.30001698 + electron-to-chromium: 1.5.96 node-releases: 2.0.19 - update-browserslist-db: 1.1.1(browserslist@4.24.3) + update-browserslist-db: 1.1.2(browserslist@4.24.4) bs-logger@0.2.6: dependencies: @@ -4517,7 +4503,7 @@ snapshots: can-use-dom@0.1.0: {} - caniuse-lite@1.0.30001690: {} + caniuse-lite@1.0.30001698: {} chalk@3.0.0: dependencies: @@ -4533,11 +4519,11 @@ snapshots: chokidar@4.0.3: dependencies: - readdirp: 4.0.2 + readdirp: 4.1.1 ci-info@3.9.0: {} - cjs-module-lexer@1.4.1: {} + cjs-module-lexer@1.4.3: {} cliui@8.0.1: dependencies: @@ -4571,15 +4557,15 @@ snapshots: dependencies: toggle-selection: 1.0.6 - core-js@3.39.0: {} + core-js@3.40.0: {} - create-jest@29.7.0(@types/node@22.10.5): + create-jest@29.7.0(@types/node@22.13.1): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.10.5) + jest-config: 29.7.0(@types/node@22.13.1) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -4628,13 +4614,13 @@ snapshots: date-fns@2.30.0: dependencies: - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.26.7 debug@4.4.0: dependencies: ms: 2.1.3 - decimal.js@10.4.3: {} + decimal.js@10.5.0: {} dedent@1.5.3: {} @@ -4712,7 +4698,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.76: {} + electron-to-chromium@1.5.96: {} emittery@0.13.1: {} @@ -4745,7 +4731,7 @@ snapshots: isarray: 2.0.5 stop-iteration-iterator: 1.1.0 - es-object-atoms@1.0.0: + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -4841,7 +4827,7 @@ snapshots: glob-parent: 6.0.2 globals: 13.24.0 ignore: 4.0.6 - import-fresh: 3.3.0 + import-fresh: 3.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 js-yaml: 4.1.0 @@ -4853,7 +4839,7 @@ snapshots: optionator: 0.9.4 progress: 2.0.3 regexpp: 3.2.0 - semver: 7.6.3 + semver: 7.7.1 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 @@ -4925,7 +4911,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fastq@1.18.0: + fastq@1.19.0: dependencies: reusify: 1.0.4 @@ -4960,7 +4946,7 @@ snapshots: flatted@3.3.2: {} - for-each@0.3.3: + for-each@0.3.4: dependencies: is-callable: 1.2.7 @@ -5016,7 +5002,7 @@ snapshots: functions-have-names@1.2.3: {} - fuse.js@7.0.0: {} + fuse.js@7.1.0: {} gensync@1.0.0-beta.2: {} @@ -5027,7 +5013,7 @@ snapshots: call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 function-bind: 1.1.2 get-proto: 1.0.1 gopd: 1.2.0 @@ -5040,7 +5026,7 @@ snapshots: get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-stream@6.0.1: {} @@ -5163,7 +5149,7 @@ snapshots: immutable@5.0.3: {} - import-fresh@3.3.0: + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 @@ -5214,7 +5200,7 @@ snapshots: dependencies: has-bigints: 1.1.0 - is-boolean-object@1.2.1: + is-boolean-object@1.2.2: dependencies: call-bound: 1.0.3 has-tostringtag: 1.0.2 @@ -5294,8 +5280,8 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.26.0 - '@babel/parser': 7.26.3 + '@babel/core': 7.26.7 + '@babel/parser': 7.26.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -5304,11 +5290,11 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.26.0 - '@babel/parser': 7.26.3 + '@babel/core': 7.26.7 + '@babel/parser': 7.26.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.6.3 + semver: 7.7.1 transitivePeerDependencies: - supports-color @@ -5354,7 +5340,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.13.1 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3 @@ -5374,16 +5360,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.10.5): + jest-cli@29.7.0(@types/node@22.13.1): dependencies: '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.10.5) + create-jest: 29.7.0(@types/node@22.13.1) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.10.5) + jest-config: 29.7.0(@types/node@22.13.1) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -5393,12 +5379,12 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.10.5): + jest-config@29.7.0(@types/node@22.13.1): dependencies: - '@babel/core': 7.26.0 + '@babel/core': 7.26.7 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) + babel-jest: 29.7.0(@babel/core@7.26.7) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -5418,7 +5404,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 22.13.1 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -5448,7 +5434,7 @@ snapshots: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 22.10.5 + '@types/node': 22.13.1 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -5462,7 +5448,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.13.1 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -5472,7 +5458,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.10.5 + '@types/node': 22.13.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -5511,7 +5497,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.13.1 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -5546,7 +5532,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.13.1 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -5574,9 +5560,9 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.13.1 chalk: 4.1.2 - cjs-module-lexer: 1.4.1 + cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -5594,15 +5580,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.26.0 - '@babel/generator': 7.26.3 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.3 + '@babel/core': 7.26.7 + '@babel/generator': 7.26.5 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.7) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.7) + '@babel/types': 7.26.7 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.7) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -5613,14 +5599,14 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.6.3 + semver: 7.7.1 transitivePeerDependencies: - supports-color jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.13.1 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -5639,7 +5625,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.13.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -5648,17 +5634,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.10.5 + '@types/node': 22.13.1 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.10.5): + jest@29.7.0(@types/node@22.13.1): dependencies: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.10.5) + jest-cli: 29.7.0(@types/node@22.13.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -5684,7 +5670,7 @@ snapshots: cssom: 0.5.0 cssstyle: 2.3.0 data-urls: 3.0.2 - decimal.js: 10.4.3 + decimal.js: 10.5.0 domexception: 4.0.0 escodegen: 2.1.0 form-data: 4.0.1 @@ -5738,7 +5724,7 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - libphonenumber-js@1.11.17: {} + libphonenumber-js@1.11.19: {} lines-and-columns@1.2.4: {} @@ -5770,7 +5756,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.6.3 + semver: 7.7.1 make-error@1.3.6: {} @@ -5842,7 +5828,7 @@ snapshots: object-assign@4.1.1: {} - object-inspect@1.13.3: {} + object-inspect@1.13.4: {} object-is@1.1.6: dependencies: @@ -5856,7 +5842,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 has-symbols: 1.1.0 object-keys: 1.1.1 @@ -5932,7 +5918,7 @@ snapshots: polished@4.3.1: dependencies: - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.26.7 popmotion@11.0.3: dependencies: @@ -5941,17 +5927,17 @@ snapshots: style-value-types: 5.0.0 tslib: 2.4.1 - possible-typed-array-names@1.0.0: {} + possible-typed-array-names@1.1.0: {} postcss-value-parser@4.2.0: {} - postcss@8.4.38: + postcss@8.4.49: dependencies: nanoid: 3.3.8 picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.4.49: + postcss@8.5.1: dependencies: nanoid: 3.3.8 picocolors: 1.1.1 @@ -6021,7 +6007,7 @@ snapshots: react-error-boundary@3.1.4(react@17.0.2): dependencies: - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.26.7 react: 17.0.2 react-fast-compare@2.0.4: {} @@ -6041,11 +6027,11 @@ snapshots: prop-types: 15.8.1 react: 17.0.2 - react-intl@5.25.1(react@17.0.2)(typescript@5.7.2): + react-intl@5.25.1(react@17.0.2)(typescript@5.7.3): dependencies: '@formatjs/ecma402-abstract': 1.11.4 '@formatjs/icu-messageformat-parser': 2.1.0 - '@formatjs/intl': 2.2.1(typescript@5.7.2) + '@formatjs/intl': 2.2.1(typescript@5.7.3) '@formatjs/intl-displaynames': 5.4.3 '@formatjs/intl-listformat': 6.5.3 '@types/hoist-non-react-statics': 3.3.6 @@ -6055,7 +6041,7 @@ snapshots: react: 17.0.2 tslib: 2.8.1 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 react-is@16.13.1: {} @@ -6077,16 +6063,16 @@ snapshots: dependencies: react: 17.0.2 - react-router-dom@6.28.1(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + react-router-dom@6.29.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2): dependencies: - '@remix-run/router': 1.21.0 + '@remix-run/router': 1.22.0 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - react-router: 6.28.1(react@17.0.2) + react-router: 6.29.0(react@17.0.2) - react-router@6.28.1(react@17.0.2): + react-router@6.29.0(react@17.0.2): dependencies: - '@remix-run/router': 1.21.0 + '@remix-run/router': 1.22.0 react: 17.0.2 react-time-ago@7.3.3(javascript-time-ago@2.5.11)(react-dom@17.0.2(react@17.0.2))(react@17.0.2): @@ -6103,7 +6089,7 @@ snapshots: loose-envify: 1.4.0 object-assign: 4.1.1 - readdirp@4.0.2: {} + readdirp@4.1.1: {} redent@3.0.0: dependencies: @@ -6159,29 +6145,29 @@ snapshots: globby: 10.0.1 is-plain-object: 3.0.1 - rollup@4.31.0: + rollup@4.34.5: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.31.0 - '@rollup/rollup-android-arm64': 4.31.0 - '@rollup/rollup-darwin-arm64': 4.31.0 - '@rollup/rollup-darwin-x64': 4.31.0 - '@rollup/rollup-freebsd-arm64': 4.31.0 - '@rollup/rollup-freebsd-x64': 4.31.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.31.0 - '@rollup/rollup-linux-arm-musleabihf': 4.31.0 - '@rollup/rollup-linux-arm64-gnu': 4.31.0 - '@rollup/rollup-linux-arm64-musl': 4.31.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.31.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.31.0 - '@rollup/rollup-linux-riscv64-gnu': 4.31.0 - '@rollup/rollup-linux-s390x-gnu': 4.31.0 - '@rollup/rollup-linux-x64-gnu': 4.31.0 - '@rollup/rollup-linux-x64-musl': 4.31.0 - '@rollup/rollup-win32-arm64-msvc': 4.31.0 - '@rollup/rollup-win32-ia32-msvc': 4.31.0 - '@rollup/rollup-win32-x64-msvc': 4.31.0 + '@rollup/rollup-android-arm-eabi': 4.34.5 + '@rollup/rollup-android-arm64': 4.34.5 + '@rollup/rollup-darwin-arm64': 4.34.5 + '@rollup/rollup-darwin-x64': 4.34.5 + '@rollup/rollup-freebsd-arm64': 4.34.5 + '@rollup/rollup-freebsd-x64': 4.34.5 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.5 + '@rollup/rollup-linux-arm-musleabihf': 4.34.5 + '@rollup/rollup-linux-arm64-gnu': 4.34.5 + '@rollup/rollup-linux-arm64-musl': 4.34.5 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.5 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.5 + '@rollup/rollup-linux-riscv64-gnu': 4.34.5 + '@rollup/rollup-linux-s390x-gnu': 4.34.5 + '@rollup/rollup-linux-x64-gnu': 4.34.5 + '@rollup/rollup-linux-x64-musl': 4.34.5 + '@rollup/rollup-win32-arm64-msvc': 4.34.5 + '@rollup/rollup-win32-ia32-msvc': 4.34.5 + '@rollup/rollup-win32-x64-msvc': 4.34.5 fsevents: 2.3.3 run-parallel@1.2.0: @@ -6196,13 +6182,13 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.83.1: + sass@1.84.0: dependencies: chokidar: 4.0.3 immutable: 5.0.3 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.0 + '@parcel/watcher': 2.5.1 saxes@6.0.0: dependencies: @@ -6215,7 +6201,7 @@ snapshots: semver@6.3.1: {} - semver@7.6.3: {} + semver@7.7.1: {} set-function-length@1.2.2: dependencies: @@ -6250,27 +6236,27 @@ snapshots: side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-map@1.0.1: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 get-intrinsic: 1.2.7 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-weakmap@1.0.2: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 get-intrinsic: 1.2.7 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-map: 1.0.1 side-channel@1.1.0: dependencies: es-errors: 1.3.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-list: 1.0.0 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 @@ -6292,7 +6278,7 @@ snapshots: dependencies: '@juggle/resize-observer': 3.4.0 can-use-dom: 0.1.0 - core-js: 3.39.0 + core-js: 3.40.0 lodash.debounce: 4.0.8 lodash.memoize: 4.1.2 lodash.throttle: 4.1.1 @@ -6357,14 +6343,14 @@ snapshots: hey-listen: 1.0.8 tslib: 2.4.1 - styled-components@6.1.14(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + styled-components@6.1.15(react-dom@17.0.2(react@17.0.2))(react@17.0.2): dependencies: '@emotion/is-prop-valid': 1.2.2 '@emotion/unitless': 0.8.1 '@types/stylis': 4.2.5 css-to-react-native: 3.2.0 csstype: 3.1.3 - postcss: 8.4.38 + postcss: 8.4.49 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) shallowequal: 1.1.0 @@ -6420,24 +6406,24 @@ snapshots: dependencies: punycode: 2.3.1 - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@22.10.5))(typescript@5.7.2): + ts-jest@29.2.5(@babel/core@7.26.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.7))(jest@29.7.0(@types/node@22.13.1))(typescript@5.7.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.10.5) + jest: 29.7.0(@types/node@22.13.1) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.6.3 - typescript: 5.7.2 + semver: 7.7.1 + typescript: 5.7.3 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.26.0 + '@babel/core': 7.26.7 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) + babel-jest: 29.7.0(@babel/core@7.26.7) ts-pattern@3.3.5: {} @@ -6451,10 +6437,10 @@ snapshots: tslib@2.8.1: {} - tsutils@3.21.0(typescript@5.7.2): + tsutils@3.21.0(typescript@5.7.3): dependencies: tslib: 1.14.1 - typescript: 5.7.2 + typescript: 5.7.3 type-check@0.4.0: dependencies: @@ -6468,7 +6454,7 @@ snapshots: type-fest@2.19.0: {} - typescript@5.7.2: {} + typescript@5.7.3: {} uglify-js@3.19.3: optional: true @@ -6479,9 +6465,9 @@ snapshots: universalify@0.2.0: {} - update-browserslist-db@1.1.1(browserslist@4.24.3): + update-browserslist-db@1.1.2(browserslist@4.24.4): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 escalade: 3.2.0 picocolors: 1.1.1 @@ -6508,8 +6494,6 @@ snapshots: uuid@8.3.2: {} - uuid@9.0.1: {} - v8-compile-cache@2.4.0: {} v8-to-istanbul@9.3.0: @@ -6518,15 +6502,15 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - vite@6.0.11(@types/node@22.10.5)(sass@1.83.1): + vite@6.1.0(@types/node@22.13.1)(sass@1.84.0): dependencies: esbuild: 0.24.2 - postcss: 8.4.49 - rollup: 4.31.0 + postcss: 8.5.1 + rollup: 4.34.5 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 22.13.1 fsevents: 2.3.3 - sass: 1.83.1 + sass: 1.84.0 w3c-xmlserializer@4.0.0: dependencies: @@ -6556,7 +6540,7 @@ snapshots: which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 - is-boolean-object: 1.2.1 + is-boolean-object: 1.2.2 is-number-object: 1.1.1 is-string: 1.1.1 is-symbol: 1.1.1 @@ -6573,7 +6557,7 @@ snapshots: available-typed-arrays: 1.0.7 call-bind: 1.0.8 call-bound: 1.0.3 - for-each: 0.3.3 + for-each: 0.3.4 gopd: 1.2.0 has-tostringtag: 1.0.2 @@ -6624,8 +6608,8 @@ snapshots: yup@0.32.11: dependencies: - '@babel/runtime': 7.26.0 - '@types/lodash': 4.17.14 + '@babel/runtime': 7.26.7 + '@types/lodash': 4.17.15 lodash: 4.17.21 lodash-es: 4.17.21 nanoclone: 0.2.1 diff --git a/src/hooks/useAutomatedComment.ts b/src/hooks/useAutomatedComment.ts index 72a2284..e3fa043 100644 --- a/src/hooks/useAutomatedComment.ts +++ b/src/hooks/useAutomatedComment.ts @@ -1,5 +1,4 @@ import { useCallback } from "react"; -import get from "lodash/get"; import isString from "lodash/isString"; import { useDeskproAppClient, @@ -7,6 +6,7 @@ import { } from "@deskpro/app-sdk"; import { baseRequest, createIssueCommentService } from "../services/github"; import { Issue, Comment, Repository } from "../services/github/types"; +import { Settings } from "../types"; export type Params = { repoFullName: Repository["full_name"], @@ -15,22 +15,22 @@ export type Params = { type UseAutomatedComment = () => { createAutomatedLinkedComment: ( - commentsUrl: Issue["comments_url"]|Params, - ) => Promise, + commentsUrl: Issue["comments_url"] | Params, + ) => Promise, createAutomatedUnlinkedComment: ( - commentsUrl: Issue["comments_url"]|Params, - ) => Promise, + commentsUrl: Issue["comments_url"] | Params, + ) => Promise, }; const useAutomatedComment: UseAutomatedComment = () => { const { client } = useDeskproAppClient(); - const { context } = useDeskproLatestAppContext(); + const { context } = useDeskproLatestAppContext<{ ticket: { id: number, permalinkUrl: string } }, Settings>(); - const dontAddComment = get(context, ["settings", "dont_add_comment_when_linking_issue"]) === true; - const ticketId = get(context, ["data", "ticket", "id"], ""); - const permalinkUrl = get(context, ["data", "ticket", "permalinkUrl"], ""); + const dontAddComment = context?.settings?.dont_add_comment_when_linking_issue === true; + const ticketId = context?.data?.ticket.id ?? ''; + const permalinkUrl = context?.data?.ticket.permalinkUrl ?? ''; - const createAutomatedLinkedComment = useCallback((param: Issue["comments_url"]|Params) => { + const createAutomatedLinkedComment = useCallback((param: Issue["comments_url"] | Params) => { if (!client || !ticketId || dontAddComment) { return Promise.resolve(); } @@ -52,7 +52,7 @@ const useAutomatedComment: UseAutomatedComment = () => { } }, [client, ticketId, permalinkUrl, dontAddComment]); - const createAutomatedUnlinkedComment = useCallback((param: Issue["comments_url"]|Params) => { + const createAutomatedUnlinkedComment = useCallback((param: Issue["comments_url"] | Params) => { if (!client || !ticketId || dontAddComment) { return Promise.resolve(); } diff --git a/src/hooks/useDeskproLabel.ts b/src/hooks/useDeskproLabel.ts index 93f9580..fe4c43e 100644 --- a/src/hooks/useDeskproLabel.ts +++ b/src/hooks/useDeskproLabel.ts @@ -1,5 +1,4 @@ import { useCallback, useMemo } from "react"; -import get from "lodash/get"; import has from "lodash/has"; import replace from "lodash/replace"; import toLower from "lodash/toLower"; @@ -14,6 +13,7 @@ import { createLabelService, } from "../services/github"; import { Issue, IssueGQL, Labels, Label } from "../services/github/types"; +import { Settings } from "../types"; type UseDeskproLabel = () => { addDeskproLabel: (issue: Issue|IssueGQL) => Promise, @@ -27,8 +27,8 @@ const isRestIssue = (issue: Issue|IssueGQL): issue is Issue => { const useDeskproLabel: UseDeskproLabel = () => { const { client } = useDeskproAppClient(); const { theme } = useDeskproAppTheme(); - const { context } = useDeskproLatestAppContext(); - const dontAddDeskproLabel = get(context, ["settings", "dont_add_deskpro_label"]) === true; + const { context } = useDeskproLatestAppContext(); + const dontAddDeskproLabel = context?.settings.dont_add_deskpro_label === true; const deskproLabel = useMemo(() => ({ name: "Deskpro", diff --git a/src/pages/AdminPage.tsx b/src/pages/AdminPage.tsx index d5edb30..2cba808 100644 --- a/src/pages/AdminPage.tsx +++ b/src/pages/AdminPage.tsx @@ -1,14 +1,16 @@ -import { FC, useState, useMemo } from "react"; +import { FC, useState } from "react"; import styled from "styled-components"; -import { v4 as uuidv4 } from "uuid"; import { CopyToClipboard } from "react-copy-to-clipboard"; import { faCopy, faCheck } from "@fortawesome/free-solid-svg-icons"; import { P1, Input, IconButton } from "@deskpro/deskpro-ui"; import { LoadingSpinner, useDeskproAppTheme, + useDeskproLatestAppContext, useInitialisedDeskproAppClient, } from "@deskpro/app-sdk"; +import { createSearchParams } from "react-router-dom"; +import { Settings } from "../types"; const Description = styled(P1)` margin-top: 8px; @@ -20,7 +22,7 @@ const AdminPage: FC = () => { const { theme } = useDeskproAppTheme(); const [callbackUrl, setCallbackUrl] = useState(null); const [isCopy, setIsCopy] = useState(false); - const key = useMemo(() => uuidv4(), []); + const { context } = useDeskproLatestAppContext(); const onClickCopy = () => { setIsCopy(true); @@ -29,16 +31,29 @@ const AdminPage: FC = () => { useInitialisedDeskproAppClient( (client) => { - client - .oauth2() - .getAdminGenericCallbackUrl( - key, - /code=(?[0-9a-f]+)/, - /state=(?.+)/ - ) - .then(({ callbackUrl }) => setCallbackUrl(callbackUrl)); + const clientId = context?.settings.client_id; + client.startOauth2Local( + ({ state, callbackUrl }) => { + setCallbackUrl(callbackUrl); + return `https://github.com/login/oauth/authorize?${createSearchParams([ + ["state", state], + ["client_id", clientId ?? ''], + ["redirect_uri", callbackUrl], + ["scope", ["repo", "read:project"].join(",")], + ])}`; + }, + /\?code=(?.+?)&/, + async function convertResponseToToken() { + return { data: { access_token: 'unused' } } + }, + { + // Reduce the polling times as we don't really care about the response. + pollInterval: 10000, + timeout: 600, + } + ) }, - [key] + [] ); if (!callbackUrl) { @@ -63,7 +78,7 @@ const AdminPage: FC = () => { } /> - The callback URL will be required during GitHub app setup + The callback URL will be required during GitHub app setup. ); diff --git a/src/pages/LogIn.tsx b/src/pages/LogIn.tsx index 92545e3..f082484 100644 --- a/src/pages/LogIn.tsx +++ b/src/pages/LogIn.tsx @@ -1,16 +1,16 @@ -import { FC, useState, useEffect, useMemo, useCallback } from "react"; -import { v4 as uuidv4 } from "uuid"; +import { FC, useState, useCallback } from "react"; import styled from "styled-components"; import { createSearchParams } from "react-router-dom"; import { P5, H3 } from "@deskpro/deskpro-ui"; -import { useDeskproAppClient, OAuth2StaticCallbackUrl } from "@deskpro/app-sdk"; +import { useDeskproLatestAppContext, useInitialisedDeskproAppClient } from "@deskpro/app-sdk"; import { useStore } from "../context/StoreProvider/hooks"; import { placeholders } from "../services/github/constants"; import { AnchorButton, Container } from "../components/common"; import { - getCurrentUserService, - getAccessTokenService, + getCurrentUserService, + getAccessTokenService, } from "../services/github"; +import { Settings } from "../types"; const LogInError = styled(P5)` margin-bottom: 8px; @@ -18,94 +18,93 @@ const LogInError = styled(P5)` `; const LogInPage: FC = () => { - const key = useMemo(() => uuidv4(), []); - const { client } = useDeskproAppClient(); + const { context } = useDeskproLatestAppContext(); + const [, dispatch] = useStore(); + const [error, setError] = useState(null); + const [loading, setLoading] = useState(true); + const [authorizationUrl, setAuthorizationUrl] = useState(); - const [state, dispatch] = useStore(); - const [error, setError] = useState(null); - const [authUrl, setAuthUrl] = useState(null); - const [loading, setLoading] = useState(false); - const [callback, setCallback] = useState(); + useInitialisedDeskproAppClient((client) => { + client.deregisterElement("githubPlusButton"); + client.deregisterElement("githubHomeButton"); + client.deregisterElement("githubMenu"); + }, []); - const clientId = state?.context?.settings?.client_id; - const callbackUrl = callback?.callbackUrl; - useEffect(() => { - if (!client) { - return; - } + useInitialisedDeskproAppClient(async (client) => { + if (context?.settings.use_deskpro_saas === undefined) { + // Make sure settings have loaded. + return; + } + const clientId = context?.settings.client_id; + const mode = context?.settings.use_deskpro_saas ? 'global' : 'local'; + if (mode === 'local' && typeof clientId !== 'string') { + // Local mode requires a clientId. + return; + } - client.deregisterElement("githubPlusButton"); - client.deregisterElement("githubHomeButton"); - client.deregisterElement("githubMenu"); - }, [client]); + const oauth2 = + mode === 'local' + // Local Version (custom/self-hosted app) + // This supports code and pkce flows, the developer will provide the IDP's authorize URL as a template + // apps client will "augment" the IDP's authorize URL with the required redirect URI, OAuth gateway, etc. + // we also need to let Deskpro know how to "acquire" the auth code + ? await client.startOauth2Local( + ({ state, callbackUrl }) => { + return `https://github.com/login/oauth/authorize?${createSearchParams([ + ["state", state], + ["client_id", clientId], + ["redirect_uri", callbackUrl], + ["scope", ["repo", "read:project"].join(",")], + ])}`; + }, + /\?code=(?.+?)&/, + async function convertResponseToToken(code: string) { + const auth = await getAccessTokenService(client, clientId, code); + return { data: { access_token: auth.access_token } }; + }, + ) + // Global Proxy Service + // Developer will provide clientId, the rest of OAuth2 flow is in the Global Proxy Service. + // (clientId is required incase an app supports multiple OAuth2s) + : await client.startOauth2Global("Ov23liBpSvG7lxKq5azm"); - useEffect(() => { - if (!callback) { - client?.oauth2().getGenericCallbackUrl(key, /code=(?[0-9a-f]+)/, /state=(?.+)/) - .then(setCallback); - } - }, [client, key, callback]); + // store the auth URL and present this as the "login" link to the app user + setAuthorizationUrl(oauth2.authorizationUrl); + setLoading(false); - useEffect(() => { - if (callbackUrl && clientId) { - setAuthUrl(`https://github.com/login/oauth/authorize?${createSearchParams([ - ["state", key], - ["client_id", clientId], - ["redirect_uri", callbackUrl], - ["scope", ["repo", "read:project"].join(",")], - ])}`); - } else { - setAuthUrl(null); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [callbackUrl, clientId]); + try { + // Poll will resolve when OAuth2 has succeeded or failed. + const pollResult = await oauth2.poll(); - if (error) { - // eslint-disable-next-line no-console - console.error(`Github LogIn: ${error}`); + await client.setUserState(placeholders.OAUTH_TOKEN_PATH, pollResult.data.access_token, { backend: true }); + await getCurrentUserService(client); + dispatch({ type: "setAuth", isAuth: true }); + } catch (error) { + setError(error instanceof Error ? error.message : 'Unknown error'); + setLoading(false); } + }, [setAuthorizationUrl, context?.settings.client_id, context?.settings.use_deskpro_saas]); - const onSignIn = useCallback(() => { - if (!callback || !client) { - return; - } - - callback?.poll() - .then(({ token }) => { - setLoading(true); - return getAccessTokenService(client, clientId, token); - }) - .then(({ access_token }) => { - return client?.setUserState(placeholders.OAUTH_TOKEN_PATH, access_token, { backend: true }) - }) - .then((res) => { - return res?.isSuccess ? Promise.resolve() : Promise.reject() - }) - .then(() => getCurrentUserService(client)) - .then((user) => { - if (user.id) { - dispatch({ type: "setAuth", isAuth: true }); - } - }) - .catch((error) => setError(error?.code === 401 ? error.message : error)) - .finally(() => setLoading(false)); - }, [client, callback, clientId, dispatch]); + const onSignIn = useCallback(() => { + setLoading(true); + window.open(authorizationUrl, '_blank'); + }, [setLoading, authorizationUrl]); - return ( - -

Log into your GitHub Account

- {error && (An error occurred, please try again.)} - -
- ); + return ( + +

Log into your GitHub Account

+ {error && (An error occurred, please try again.)} + +
+ ); }; export { LogInPage }; diff --git a/src/pages/ViewIssuePage.tsx b/src/pages/ViewIssuePage.tsx index 2ee7c9a..6c8b568 100644 --- a/src/pages/ViewIssuePage.tsx +++ b/src/pages/ViewIssuePage.tsx @@ -117,7 +117,7 @@ const ViewIssuePage: FC = () => { baseRequest(client, { rawUrl: issue.comments_url, queryParams: { - per_page: 100, + per_page: "100", }, }), getIssueByIdGraphQLService(client, issue.node_id) diff --git a/src/services/github/baseRequest.ts b/src/services/github/baseRequest.ts index 31f7e89..4321219 100644 --- a/src/services/github/baseRequest.ts +++ b/src/services/github/baseRequest.ts @@ -2,7 +2,7 @@ import isEmpty from "lodash/isEmpty"; import { proxyFetch } from "@deskpro/app-sdk"; import { Request } from "./types"; import { BASE_URL, placeholders } from "./constants"; -import { getQueryParams } from "../../utils"; +import { createSearchParams } from "react-router-dom"; const baseRequest: Request = async (client, { url, @@ -18,7 +18,7 @@ const baseRequest: Request = async (client, { const headers: Record = {}; const baseUrl = `${rawUrl ? rawUrl : `${BASE_URL}${url}`}`; - const params = `${isEmpty(queryParams) ? "" : `?${getQueryParams(queryParams, true)}`}`; + const params = `${isEmpty(queryParams) ? "" : `?${createSearchParams(queryParams)}`}`; const requestUrl = `${baseUrl}${params}`; if (data instanceof FormData) { diff --git a/src/services/github/getAccessTokenService.ts b/src/services/github/getAccessTokenService.ts index 9d7bbc1..a36f79f 100644 --- a/src/services/github/getAccessTokenService.ts +++ b/src/services/github/getAccessTokenService.ts @@ -1,12 +1,12 @@ import { IDeskproClient, proxyFetch } from "@deskpro/app-sdk"; -import { getQueryParams } from "../../utils"; +import { createSearchParams } from "react-router-dom"; const getAccessTokenService = ( client: IDeskproClient, clientId: string, code: string, -): Promise<{ access_token?: string }> => { - const requestUrl = `https://github.com/login/oauth/access_token?${getQueryParams({ +): Promise<{ access_token: string }> => { + const requestUrl = `https://github.com/login/oauth/access_token?${createSearchParams({ client_id: clientId, client_secret: "__client_secret__", code, @@ -36,11 +36,7 @@ const getAccessTokenService = ( throw new Error(`POST ${requestUrl}: Response Status [${res.status}]`); } - try { - return res.json(); - } catch (e) { - return {}; - } + return res.json(); }); }; diff --git a/src/services/github/getUserReposService.ts b/src/services/github/getUserReposService.ts index 8f04e16..239eeb0 100644 --- a/src/services/github/getUserReposService.ts +++ b/src/services/github/getUserReposService.ts @@ -6,9 +6,9 @@ const getUserReposService = (client: IDeskproClient, page?: number) => { return baseRequest(client, { url: "/user/repos", queryParams: { - per_page: 100, + per_page: "100", affiliation: "owner,collaborator,organization_member", - ...(page ? { page } : {}), + ...(page ? { page: page.toString() } : {}), } }) }; diff --git a/src/services/github/searchByIssueService.ts b/src/services/github/searchByIssueService.ts index 4486477..f7cd369 100644 --- a/src/services/github/searchByIssueService.ts +++ b/src/services/github/searchByIssueService.ts @@ -18,7 +18,7 @@ const searchByIssueService = ( queryParams: { state: "all", q: `${query}+type:issue repo:${repo}`, - per_page: 100, + per_page: "100", }, headers: { Accept: "application/vnd.github+json", diff --git a/src/services/github/types.ts b/src/services/github/types.ts index db14ab6..e882334 100644 --- a/src/services/github/types.ts +++ b/src/services/github/types.ts @@ -9,7 +9,7 @@ export type RequestParams = { // eslint-disable-next-line @typescript-eslint/no-explicit-any data?: any, headers?: Record, - queryParams?: Record, + queryParams?: Record, }; export type Request = ( @@ -188,14 +188,14 @@ export type IssueGQL = { }; export type Comment = { - author_association: "COLLABORATOR"|"CONTRIBUTOR"|"FIRST_TIMER"|"FIRST_TIME_CONTRIBUTOR"|"MANNEQUIN"|"MEMBER"|"NONE"|"OWNER", + author_association: "COLLABORATOR" | "CONTRIBUTOR" | "FIRST_TIMER" | "FIRST_TIME_CONTRIBUTOR" | "MANNEQUIN" | "MEMBER" | "NONE" | "OWNER", body: string, created_at: DateTime, html_url: string, id: number, issue_url: string, node_id: string, - performed_via_github_app: null|object, + performed_via_github_app: null | object, reactions: Reactions updated_at: DateTime, url: string, diff --git a/src/types.ts b/src/types.ts index 39fab94..a90c6b9 100644 --- a/src/types.ts +++ b/src/types.ts @@ -6,3 +6,10 @@ export type OptionRepository = { label: Repository["name"], type: "value", }; + +export type Settings = { + dont_add_comment_when_linking_issue: boolean, + dont_add_deskpro_label: boolean, + client_id: string, + use_deskpro_saas: boolean, +}; \ No newline at end of file diff --git a/src/utils/getQueryParams.ts b/src/utils/getQueryParams.ts deleted file mode 100644 index 8ce8307..0000000 --- a/src/utils/getQueryParams.ts +++ /dev/null @@ -1,10 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const getQueryParams = (params: Record, encode?: boolean): string => { - return Object.keys(params) - .map((key) => encode - ? `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}` - : `${key}=${params[key]}`) - .join('&'); -}; - -export { getQueryParams }; diff --git a/src/utils/index.ts b/src/utils/index.ts index 8f02fb4..d851219 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,4 +1,3 @@ -export { getQueryParams } from "./getQueryParams"; export { getEntityMetadata } from "./getEntityMetadata"; export { getIssueStatueColorScheme } from "./getIssueStatueColorScheme"; export { mdToHtml } from "./mdToHtml";