diff --git a/frontend/jest.config.cjs b/frontend/jest.config.cjs index 526950f5cb..91474ab825 100644 --- a/frontend/jest.config.cjs +++ b/frontend/jest.config.cjs @@ -23,4 +23,5 @@ module.exports = { transformIgnorePatterns: [ "/node_modules/(?!(@dfinity/gix-components))", ], + setupFiles: ["fake-indexeddb/auto"], }; diff --git a/frontend/package-lock.json b/frontend/package-lock.json index a40707465d..c62f3228c7 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,14 +8,14 @@ "name": "@dfinity/nns-dapp", "version": "1.0.0", "dependencies": { - "@dfinity/agent": "^0.12.2", - "@dfinity/auth-client": "^0.12.2", - "@dfinity/authentication": "^0.12.2", - "@dfinity/candid": "^0.12.2", + "@dfinity/agent": "^0.13.2", + "@dfinity/auth-client": "^0.13.2", + "@dfinity/authentication": "^0.13.2", + "@dfinity/candid": "^0.13.2", "@dfinity/gix-components": "next", - "@dfinity/identity": "^0.12.2", + "@dfinity/identity": "^0.13.2", "@dfinity/nns": "next", - "@dfinity/principal": "^0.12.2", + "@dfinity/principal": "^0.13.2", "@dfinity/sns": "next", "@dfinity/utils": "next", "@ledgerhq/hw-transport-node-hid-noevents": "^6.27.1", @@ -41,6 +41,7 @@ "autoprefixer": "^10.4.7", "eslint": "^8.15.0", "eslint-plugin-svelte3": "^4.0.0", + "fake-indexeddb": "^4.0.0", "jest": "^28.1.0", "jest-environment-jsdom": "^28.1.0", "jest-mock-extended": "^2.0.6", @@ -65,6 +66,39 @@ "typescript": "^4.6.4" } }, + "../../agent-js/packages/auth-client": { + "name": "@dfinity/auth-client", + "version": "0.13.1", + "extraneous": true, + "license": "Apache-2.0", + "dependencies": { + "@types/jest": "^28.1.4", + "idb": "^7.0.2", + "jest": "^28.1.2", + "ts-jest": "^28.0.5", + "ts-node": "^10.8.2" + }, + "devDependencies": { + "@peculiar/webcrypto": "^1.4.0", + "@typescript-eslint/eslint-plugin": "^5.30.5", + "@typescript-eslint/parser": "^5.30.5", + "eslint": "^8.19.0", + "eslint-plugin-jsdoc": "^39.3.3", + "fake-indexeddb": "^4.0.0", + "jest-environment-jsdom": "^28.1.2", + "text-encoding": "^0.7.0", + "tslint": "^5.20.0", + "typedoc": "^0.22.11", + "typescript": "^4.7.4", + "whatwg-fetch": "^3.0.0" + }, + "peerDependencies": { + "@dfinity/agent": "^0.13.1", + "@dfinity/authentication": "^0.13.1", + "@dfinity/identity": "^0.13.1", + "@dfinity/principal": "^0.13.1" + } + }, "node_modules/@ampproject/remapping": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", @@ -640,9 +674,9 @@ } }, "node_modules/@dfinity/agent": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-0.12.2.tgz", - "integrity": "sha512-yEgotz3lOt4906k0V0L91szYnYPEE4dotVzsTU6UnxtOwYBFsOL1J1COjx+FLAUDQ4s7zCa+VlS3WU69PvaxsA==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-0.13.2.tgz", + "integrity": "sha512-wvlJS6bB731FQ0n8s+91N7NZMrGaVFGyTmGGMPqklv1H1CkxTpiRzi5vCfUsIJwFggsCXpk+Jjbpwbo9OWM48A==", "dependencies": { "base64-arraybuffer": "^0.2.0", "bignumber.js": "^9.0.0", @@ -652,93 +686,46 @@ "ts-node": "^10.8.2" }, "peerDependencies": { - "@dfinity/candid": "^0.12.2", - "@dfinity/principal": "^0.12.2" + "@dfinity/candid": "^0.13.2", + "@dfinity/principal": "^0.13.2" } }, "node_modules/@dfinity/auth-client": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@dfinity/auth-client/-/auth-client-0.12.2.tgz", - "integrity": "sha512-Byl7rAq9pl/GjjFqZVlZzi/9GD6scB18UyR1qxi+BPPvLXeY3UJUHeiaOQyKRfXZswWvzTtkLMOf1ZQDhktoRA==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@dfinity/auth-client/-/auth-client-0.13.2.tgz", + "integrity": "sha512-c8rxKyg2MWD8Or4MAK2P3D8DTfzX6fre+E7dsQnyCIv5vIFJDkVZztrzU45tyoeGbiHvmB9ZX2y3DnwFSQQ4zw==", "dependencies": { "@types/jest": "^28.1.4", + "idb": "^7.0.2", "jest": "^28.1.2", "ts-jest": "^28.0.5", "ts-node": "^10.8.2" }, "peerDependencies": { - "@dfinity/agent": "^0.12.2", - "@dfinity/authentication": "^0.12.2", - "@dfinity/identity": "^0.12.2", - "@dfinity/principal": "^0.12.2" + "@dfinity/agent": "^0.13.2", + "@dfinity/authentication": "^0.13.2", + "@dfinity/identity": "^0.13.2", + "@dfinity/principal": "^0.13.2" } }, "node_modules/@dfinity/auth-client/node_modules/@types/jest": { - "version": "28.1.6", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.6.tgz", - "integrity": "sha512-0RbGAFMfcBJKOmqRazM8L98uokwuwD5F8rHrv/ZMbrZBwVOWZUyPG6VFNscjYr/vjM3Vu4fRrCPbOs42AfemaQ==", + "version": "28.1.7", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.7.tgz", + "integrity": "sha512-acDN4VHD40V24tgu0iC44jchXavRNVFXQ/E6Z5XNsswgoSO/4NgsXoEYmPUGookKldlZQyIpmrEXsHI9cA3ZTA==", "dependencies": { - "jest-matcher-utils": "^28.0.0", + "expect": "^28.0.0", "pretty-format": "^28.0.0" } }, - "node_modules/@dfinity/auth-client/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "node_modules/@dfinity/auth-client/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@dfinity/auth-client/node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@dfinity/auth-client/node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@dfinity/auth-client/node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@dfinity/auth-client/node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@dfinity/auth-client/node_modules/pretty-format": { @@ -755,36 +742,25 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@dfinity/auth-client/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@dfinity/auth-client/node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/@dfinity/authentication": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@dfinity/authentication/-/authentication-0.12.2.tgz", - "integrity": "sha512-XGaadmEVP1I1w+2+HjKhzR3FvU3tM80Id9m2ilXbyGotp+GiQaXxiddtQzBO9GggsI27YKEf1nYvU/iZDlQIUg==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@dfinity/authentication/-/authentication-0.13.2.tgz", + "integrity": "sha512-hRV1DDJ8bZQGnoMf41Zl5BV4cOx61GLztixFtbC2XKXj3zEHUtJHso4FEISxxC445rRi0ClxRQDfzj1+sJnb8A==", "peerDependencies": { - "@dfinity/agent": "^0.12.2", - "@dfinity/identity": "^0.12.2", - "@dfinity/principal": "^0.12.2" + "@dfinity/agent": "^0.13.2", + "@dfinity/identity": "^0.13.2", + "@dfinity/principal": "^0.13.2" } }, "node_modules/@dfinity/candid": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@dfinity/candid/-/candid-0.12.2.tgz", - "integrity": "sha512-2wlFetzNr6iXQrtOSSDaxBG6HgOZv3eDATZVvuGEdS1gkAR8jnLynDQevl0j50BEccO2Sk05W+iVDtSfeRvhSA==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@dfinity/candid/-/candid-0.13.2.tgz", + "integrity": "sha512-PuzAgCvd41DYB2TlWFPKOKOT3LHR5C1ncYtCs9iQPVRv5CUtVnJTFBzy3gX/hq4VP131f7t0t8a+7IpVUnHw1w==", "dependencies": { "ts-node": "^10.8.2" } @@ -795,9 +771,9 @@ "integrity": "sha512-60yook2qJNYurQHX5NKo4ZNnIiHGuyxoMZx4JAT7pi1F8RDwyUymN7ib37mWVQGjj9qKr6WwrlDdqQWiJ3mstg==" }, "node_modules/@dfinity/identity": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@dfinity/identity/-/identity-0.12.2.tgz", - "integrity": "sha512-JebcS29x3nsUK+qdF0FNSnx4IQ1xYiFB9mHpbGT3/MFe52s40DxL4CvsaZ8zAjDnusQnTJLzqLWGM7oo0QqwyQ==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@dfinity/identity/-/identity-0.13.2.tgz", + "integrity": "sha512-ZmzSb7Ob+0Kybzvk18v9sf4PMz49Rb+iDuEvJwMpoWo6YjnUpvIaa6cO7hp7/Qkgt7vP0hjd+NsK8J1ePn+JcA==", "dependencies": { "@peculiar/webcrypto": "^1.4.0", "borc": "^2.1.1", @@ -808,14 +784,14 @@ "vitest": "^0.18.0" }, "peerDependencies": { - "@dfinity/agent": "^0.12.2", - "@dfinity/principal": "^0.12.2" + "@dfinity/agent": "^0.13.2", + "@dfinity/principal": "^0.13.2" } }, "node_modules/@dfinity/nns": { - "version": "0.7.0-next-2022-08-08", - "resolved": "https://registry.npmjs.org/@dfinity/nns/-/nns-0.7.0-next-2022-08-08.tgz", - "integrity": "sha512-lbxn2tcLesqQ6JcDxImM8KlG/6lArhKi6NTfiDlI80T/4En1d+nDSQ6Zzr71jSOExSH+0A4WCju1wSB1eIyrpA==", + "version": "0.7.0-next-2022-08-23", + "resolved": "https://registry.npmjs.org/@dfinity/nns/-/nns-0.7.0-next-2022-08-23.tgz", + "integrity": "sha512-OL9gJyeuWrbHQzWP9kjuP26OJ0uisw2B7U27vuN3l4jVqQeihpcT6pDTqlmK4LXhtuy9RtQN/Zxphku6oxbEKQ==", "dependencies": { "crc": "^4.1.1", "crc-32": "^1.2.2", @@ -863,30 +839,30 @@ } }, "node_modules/@dfinity/principal": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@dfinity/principal/-/principal-0.12.2.tgz", - "integrity": "sha512-VXB2itNAwcwI2Cegt7gxj342ixFxF8Ps+rb74yTZBf8CPv5K20dUOt6MkhqbagjV8NASMWUWYpvsLM84ukVNfw==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@dfinity/principal/-/principal-0.13.2.tgz", + "integrity": "sha512-sOpse3YJ3XboqE31KaLWk0T3QeSy50fmqxCzTe5ugxHTfBJ77NwBUHOHARA0UVo+9EkQnN51fLKfMARYfaTGMw==", "dependencies": { "ts-node": "^10.8.2" } }, "node_modules/@dfinity/sns": { - "version": "0.0.3-next-2022-08-08", - "resolved": "https://registry.npmjs.org/@dfinity/sns/-/sns-0.0.3-next-2022-08-08.tgz", - "integrity": "sha512-VnpY6Ok8F7Py9tnWeN72grXqR+BQcV7VZ5ab8+OTOpQ59RrmULmMgWiRFbF0JnbS1WST4qZxB9Ng7rcFNyOqLA==", + "version": "0.0.3-next-2022-08-23", + "resolved": "https://registry.npmjs.org/@dfinity/sns/-/sns-0.0.3-next-2022-08-23.tgz", + "integrity": "sha512-/OPO12nRWiyWaMwyYMGYVyZ5aRu5d1jADVpdH38WBtx80rHgrCEDT6kdDIzj5pmlyPxtYHc0zQRi8xzGs2rw5Q==", "peerDependencies": { "@dfinity/utils": "^0.0.1-next" } }, "node_modules/@dfinity/utils": { - "version": "0.0.1-next-2022-08-08", - "resolved": "https://registry.npmjs.org/@dfinity/utils/-/utils-0.0.1-next-2022-08-08.tgz", - "integrity": "sha512-FLp4qFEAspfgOxj0PTo6OD4I8jFdgguzr10rIGFb9RpgBAHochXb/Dx39BYwo9ZMXzn+we9q4w/gVz2byEddPg==" + "version": "0.0.1-next-2022-08-23", + "resolved": "https://registry.npmjs.org/@dfinity/utils/-/utils-0.0.1-next-2022-08-23.tgz", + "integrity": "sha512-Q5qGRc62kA5rife39mzzjcV6GRtQ0lUMuJMPObuKSkLTf+oHdwXsC8WBige1QJv8XCipZT8kVUN5/CwWXcSszg==" }, "node_modules/@esbuild/linux-loong64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.53.tgz", - "integrity": "sha512-W2dAL6Bnyn4xa/QRSU3ilIK4EzD5wgYXKXJiS1HDF5vU3675qc2bvFyLwbUcdmssDveyndy7FbitrCoiV/eMLg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", "cpu": [ "loong64" ], @@ -1479,9 +1455,9 @@ } }, "node_modules/@peculiar/asn1-schema": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.2.0.tgz", - "integrity": "sha512-1ENEJNY7Lwlua/1wvzpYP194WtjQBfFxvde2FlzfBFh/ln6wvChrtxlORhbKEnYswzn6fOC4c7HdC5izLPMTJg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.0.tgz", + "integrity": "sha512-DtNLAG4vmDrdSJFPe7rypkcj597chNQL7u+2dBtYo5mh7VW2+im6ke+O0NVr8W1f4re4C3F71LhoMb0Yxqa48Q==", "dependencies": { "asn1js": "^3.0.5", "pvtsutils": "^1.3.2", @@ -1825,9 +1801,9 @@ } }, "node_modules/@types/chai": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", - "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==" + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", + "integrity": "sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==" }, "node_modules/@types/chai-subset": { "version": "1.3.3", @@ -2577,6 +2553,15 @@ "node": ">= 0.6.0" } }, + "node_modules/base64-arraybuffer-es6": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/base64-arraybuffer-es6/-/base64-arraybuffer-es6-0.7.0.tgz", + "integrity": "sha512-ESyU/U1CFZDJUdr+neHRhNozeCv72Y7Vm0m1DCbjX3KBjT6eYocvAJlSk6+8+HkVwXlT1FNxhGW6q3UKAlCvvw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -2597,9 +2582,9 @@ ] }, "node_modules/bignumber.js": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz", - "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", + "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==", "engines": { "node": "*" } @@ -3446,9 +3431,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.53.tgz", - "integrity": "sha512-ohO33pUBQ64q6mmheX1mZ8mIXj8ivQY/L4oVuAshr+aJI+zLl+amrp3EodrUNDNYVrKJXGPfIHFGhO8slGRjuw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -3457,33 +3442,33 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/linux-loong64": "0.14.53", - "esbuild-android-64": "0.14.53", - "esbuild-android-arm64": "0.14.53", - "esbuild-darwin-64": "0.14.53", - "esbuild-darwin-arm64": "0.14.53", - "esbuild-freebsd-64": "0.14.53", - "esbuild-freebsd-arm64": "0.14.53", - "esbuild-linux-32": "0.14.53", - "esbuild-linux-64": "0.14.53", - "esbuild-linux-arm": "0.14.53", - "esbuild-linux-arm64": "0.14.53", - "esbuild-linux-mips64le": "0.14.53", - "esbuild-linux-ppc64le": "0.14.53", - "esbuild-linux-riscv64": "0.14.53", - "esbuild-linux-s390x": "0.14.53", - "esbuild-netbsd-64": "0.14.53", - "esbuild-openbsd-64": "0.14.53", - "esbuild-sunos-64": "0.14.53", - "esbuild-windows-32": "0.14.53", - "esbuild-windows-64": "0.14.53", - "esbuild-windows-arm64": "0.14.53" + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" } }, "node_modules/esbuild-android-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.53.tgz", - "integrity": "sha512-fIL93sOTnEU+NrTAVMIKiAw0YH22HWCAgg4N4Z6zov2t0kY9RAJ50zY9ZMCQ+RT6bnOfDt8gCTnt/RaSNA2yRA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", "cpu": [ "x64" ], @@ -3496,9 +3481,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.53.tgz", - "integrity": "sha512-PC7KaF1v0h/nWpvlU1UMN7dzB54cBH8qSsm7S9mkwFA1BXpaEOufCg8hdoEI1jep0KeO/rjZVWrsH8+q28T77A==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", "cpu": [ "arm64" ], @@ -3511,9 +3496,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.53.tgz", - "integrity": "sha512-gE7P5wlnkX4d4PKvLBUgmhZXvL7lzGRLri17/+CmmCzfncIgq8lOBvxGMiQ4xazplhxq+72TEohyFMZLFxuWvg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", "cpu": [ "x64" ], @@ -3526,9 +3511,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.53.tgz", - "integrity": "sha512-otJwDU3hnI15Q98PX4MJbknSZ/WSR1I45il7gcxcECXzfN4Mrpft5hBDHXNRnCh+5858uPXBXA1Vaz2jVWLaIA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", "cpu": [ "arm64" ], @@ -3541,9 +3526,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.53.tgz", - "integrity": "sha512-WkdJa8iyrGHyKiPF4lk0MiOF87Q2SkE+i+8D4Cazq3/iqmGPJ6u49je300MFi5I2eUsQCkaOWhpCVQMTKGww2w==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", "cpu": [ "x64" ], @@ -3556,9 +3541,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.53.tgz", - "integrity": "sha512-9T7WwCuV30NAx0SyQpw8edbKvbKELnnm1FHg7gbSYaatH+c8WJW10g/OdM7JYnv7qkimw2ZTtSA+NokOLd2ydQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", "cpu": [ "arm64" ], @@ -3571,9 +3556,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.53.tgz", - "integrity": "sha512-VGanLBg5en2LfGDgLEUxQko2lqsOS7MTEWUi8x91YmsHNyzJVT/WApbFFx3MQGhkf+XdimVhpyo5/G0PBY91zg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", "cpu": [ "ia32" ], @@ -3586,9 +3571,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.53.tgz", - "integrity": "sha512-pP/FA55j/fzAV7N9DF31meAyjOH6Bjuo3aSKPh26+RW85ZEtbJv9nhoxmGTd9FOqjx59Tc1ZbrJabuiXlMwuZQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", "cpu": [ "x64" ], @@ -3601,9 +3586,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.53.tgz", - "integrity": "sha512-/u81NGAVZMopbmzd21Nu/wvnKQK3pT4CrvQ8BTje1STXcQAGnfyKgQlj3m0j2BzYbvQxSy+TMck4TNV2onvoPA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", "cpu": [ "arm" ], @@ -3616,9 +3601,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.53.tgz", - "integrity": "sha512-GDmWITT+PMsjCA6/lByYk7NyFssW4Q6in32iPkpjZ/ytSyH+xeEx8q7HG3AhWH6heemEYEWpTll/eui3jwlSnw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", "cpu": [ "arm64" ], @@ -3631,9 +3616,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.53.tgz", - "integrity": "sha512-d6/XHIQW714gSSp6tOOX2UscedVobELvQlPMkInhx1NPz4ThZI9uNLQ4qQJHGBGKGfu+rtJsxM4NVHLhnNRdWQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", "cpu": [ "mips64el" ], @@ -3646,9 +3631,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.53.tgz", - "integrity": "sha512-ndnJmniKPCB52m+r6BtHHLAOXw+xBCWIxNnedbIpuREOcbSU/AlyM/2dA3BmUQhsHdb4w3amD5U2s91TJ3MzzA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", "cpu": [ "ppc64" ], @@ -3661,9 +3646,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.53.tgz", - "integrity": "sha512-yG2sVH+QSix6ct4lIzJj329iJF3MhloLE6/vKMQAAd26UVPVkhMFqFopY+9kCgYsdeWvXdPgmyOuKa48Y7+/EQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", "cpu": [ "riscv64" ], @@ -3676,9 +3661,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.53.tgz", - "integrity": "sha512-OCJlgdkB+XPYndHmw6uZT7jcYgzmx9K+28PVdOa/eLjdoYkeAFvH5hTwX4AXGLZLH09tpl4bVsEtvuyUldaNCg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", "cpu": [ "s390x" ], @@ -3691,9 +3676,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.53.tgz", - "integrity": "sha512-gp2SB+Efc7MhMdWV2+pmIs/Ja/Mi5rjw+wlDmmbIn68VGXBleNgiEZG+eV2SRS0kJEUyHNedDtwRIMzaohWedQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", "cpu": [ "x64" ], @@ -3706,9 +3691,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.53.tgz", - "integrity": "sha512-eKQ30ZWe+WTZmteDYg8S+YjHV5s4iTxeSGhJKJajFfQx9TLZJvsJX0/paqwP51GicOUruFpSUAs2NCc0a4ivQQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", "cpu": [ "x64" ], @@ -3721,9 +3706,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.53.tgz", - "integrity": "sha512-OWLpS7a2FrIRukQqcgQqR1XKn0jSJoOdT+RlhAxUoEQM/IpytS3FXzCJM6xjUYtpO5GMY0EdZJp+ur2pYdm39g==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", "cpu": [ "x64" ], @@ -3736,9 +3721,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.53.tgz", - "integrity": "sha512-m14XyWQP5rwGW0tbEfp95U6A0wY0DYPInWBB7D69FAXUpBpBObRoGTKRv36lf2RWOdE4YO3TNvj37zhXjVL5xg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", "cpu": [ "ia32" ], @@ -3751,9 +3736,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.53.tgz", - "integrity": "sha512-s9skQFF0I7zqnQ2K8S1xdLSfZFsPLuOGmSx57h2btSEswv0N0YodYvqLcJMrNMXh6EynOmWD7rz+0rWWbFpIHQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", "cpu": [ "x64" ], @@ -3766,9 +3751,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.53.tgz", - "integrity": "sha512-E+5Gvb+ZWts+00T9II6wp2L3KG2r3iGxByqd/a1RmLmYWVsSVUjkvIxZuJ3hYTIbhLkH5PRwpldGTKYqVz0nzQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", "cpu": [ "arm64" ], @@ -4273,6 +4258,15 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, + "node_modules/fake-indexeddb": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-4.0.0.tgz", + "integrity": "sha512-oCfWSJ/qvQn1XPZ8SHX6kY3zr1t+bN7faZ/lltGY0SBGhFOPXnWf0+pbO/MOAgfMx6khC2gK3S/bvAgQpuQHDQ==", + "dev": true, + "dependencies": { + "realistic-structured-clone": "^3.0.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4849,6 +4843,11 @@ "node": ">=0.10.0" } }, + "node_modules/idb": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.2.tgz", + "integrity": "sha512-jjKrT1EnyZewQ/gCBb/eyiYrhGzws2FeY92Yx8qT9S9GeQAmo4JFVIiWRIfKW/6Ob9A+UDAOW9j9jn58fy2HIg==" + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -7349,9 +7348,9 @@ } }, "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", "funding": [ { "type": "opencollective", @@ -7640,6 +7639,32 @@ "node": ">=8.10.0" } }, + "node_modules/realistic-structured-clone": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/realistic-structured-clone/-/realistic-structured-clone-3.0.0.tgz", + "integrity": "sha512-rOjh4nuWkAqf9PWu6JVpOWD4ndI+JHfgiZeMmujYcPi+fvILUu7g6l26TC1K5aBIp34nV+jE1cDO75EKOfHC5Q==", + "dev": true, + "dependencies": { + "domexception": "^1.0.1", + "typeson": "^6.1.0", + "typeson-registry": "^1.0.0-alpha.20" + } + }, + "node_modules/realistic-structured-clone/node_modules/domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "dependencies": { + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/realistic-structured-clone/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -8681,9 +8706,9 @@ } }, "node_modules/tinyspy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.0.tgz", - "integrity": "sha512-FI5B2QdODQYDRjfuLF+OrJ8bjWRMCXokQPcwKm0W3IzcbUmBNv536cQc7eXGoAuXphZwgx1DFbqImwzz08Fnhw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", + "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", "engines": { "node": ">=14.0.0" } @@ -8934,6 +8959,64 @@ "node": ">=4.2.0" } }, + "node_modules/typeson": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/typeson/-/typeson-6.1.0.tgz", + "integrity": "sha512-6FTtyGr8ldU0pfbvW/eOZrEtEkczHRUtduBnA90Jh9kMPCiFNnXIon3vF41N0S4tV1HHQt4Hk1j4srpESziCaA==", + "dev": true, + "engines": { + "node": ">=0.1.14" + } + }, + "node_modules/typeson-registry": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/typeson-registry/-/typeson-registry-1.0.0-alpha.39.tgz", + "integrity": "sha512-NeGDEquhw+yfwNhguLPcZ9Oj0fzbADiX4R0WxvoY8nGhy98IbzQy1sezjoEFWOywOboj/DWehI+/aUlRVrJnnw==", + "dev": true, + "dependencies": { + "base64-arraybuffer-es6": "^0.7.0", + "typeson": "^6.0.0", + "whatwg-url": "^8.4.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/typeson-registry/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/typeson-registry/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/typeson-registry/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -8997,14 +9080,14 @@ } }, "node_modules/vite": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz", - "integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.9.tgz", + "integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==", "dependencies": { "esbuild": "^0.14.47", - "postcss": "^8.4.14", + "postcss": "^8.4.16", "resolve": "^1.22.1", - "rollup": "^2.75.6" + "rollup": ">=2.75.6 <2.77.0 || ~2.77.0" }, "bin": { "vite": "bin/vite.js" @@ -9783,9 +9866,9 @@ } }, "@dfinity/agent": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-0.12.2.tgz", - "integrity": "sha512-yEgotz3lOt4906k0V0L91szYnYPEE4dotVzsTU6UnxtOwYBFsOL1J1COjx+FLAUDQ4s7zCa+VlS3WU69PvaxsA==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-0.13.2.tgz", + "integrity": "sha512-wvlJS6bB731FQ0n8s+91N7NZMrGaVFGyTmGGMPqklv1H1CkxTpiRzi5vCfUsIJwFggsCXpk+Jjbpwbo9OWM48A==", "requires": { "base64-arraybuffer": "^0.2.0", "bignumber.js": "^9.0.0", @@ -9796,65 +9879,30 @@ } }, "@dfinity/auth-client": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@dfinity/auth-client/-/auth-client-0.12.2.tgz", - "integrity": "sha512-Byl7rAq9pl/GjjFqZVlZzi/9GD6scB18UyR1qxi+BPPvLXeY3UJUHeiaOQyKRfXZswWvzTtkLMOf1ZQDhktoRA==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@dfinity/auth-client/-/auth-client-0.13.2.tgz", + "integrity": "sha512-c8rxKyg2MWD8Or4MAK2P3D8DTfzX6fre+E7dsQnyCIv5vIFJDkVZztrzU45tyoeGbiHvmB9ZX2y3DnwFSQQ4zw==", "requires": { "@types/jest": "^28.1.4", + "idb": "^7.0.2", "jest": "^28.1.2", "ts-jest": "^28.0.5", "ts-node": "^10.8.2" }, "dependencies": { "@types/jest": { - "version": "28.1.6", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.6.tgz", - "integrity": "sha512-0RbGAFMfcBJKOmqRazM8L98uokwuwD5F8rHrv/ZMbrZBwVOWZUyPG6VFNscjYr/vjM3Vu4fRrCPbOs42AfemaQ==", + "version": "28.1.7", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.7.tgz", + "integrity": "sha512-acDN4VHD40V24tgu0iC44jchXavRNVFXQ/E6Z5XNsswgoSO/4NgsXoEYmPUGookKldlZQyIpmrEXsHI9cA3ZTA==", "requires": { - "jest-matcher-utils": "^28.0.0", + "expect": "^28.0.0", "pretty-format": "^28.0.0" } }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==" - }, - "jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - } - }, - "jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==" - }, - "jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - } + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" }, "pretty-format": { "version": "28.1.3", @@ -9865,13 +9913,6 @@ "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - } } }, "react-is": { @@ -9882,15 +9923,15 @@ } }, "@dfinity/authentication": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@dfinity/authentication/-/authentication-0.12.2.tgz", - "integrity": "sha512-XGaadmEVP1I1w+2+HjKhzR3FvU3tM80Id9m2ilXbyGotp+GiQaXxiddtQzBO9GggsI27YKEf1nYvU/iZDlQIUg==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@dfinity/authentication/-/authentication-0.13.2.tgz", + "integrity": "sha512-hRV1DDJ8bZQGnoMf41Zl5BV4cOx61GLztixFtbC2XKXj3zEHUtJHso4FEISxxC445rRi0ClxRQDfzj1+sJnb8A==", "requires": {} }, "@dfinity/candid": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@dfinity/candid/-/candid-0.12.2.tgz", - "integrity": "sha512-2wlFetzNr6iXQrtOSSDaxBG6HgOZv3eDATZVvuGEdS1gkAR8jnLynDQevl0j50BEccO2Sk05W+iVDtSfeRvhSA==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@dfinity/candid/-/candid-0.13.2.tgz", + "integrity": "sha512-PuzAgCvd41DYB2TlWFPKOKOT3LHR5C1ncYtCs9iQPVRv5CUtVnJTFBzy3gX/hq4VP131f7t0t8a+7IpVUnHw1w==", "requires": { "ts-node": "^10.8.2" } @@ -9901,9 +9942,9 @@ "integrity": "sha512-60yook2qJNYurQHX5NKo4ZNnIiHGuyxoMZx4JAT7pi1F8RDwyUymN7ib37mWVQGjj9qKr6WwrlDdqQWiJ3mstg==" }, "@dfinity/identity": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@dfinity/identity/-/identity-0.12.2.tgz", - "integrity": "sha512-JebcS29x3nsUK+qdF0FNSnx4IQ1xYiFB9mHpbGT3/MFe52s40DxL4CvsaZ8zAjDnusQnTJLzqLWGM7oo0QqwyQ==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@dfinity/identity/-/identity-0.13.2.tgz", + "integrity": "sha512-ZmzSb7Ob+0Kybzvk18v9sf4PMz49Rb+iDuEvJwMpoWo6YjnUpvIaa6cO7hp7/Qkgt7vP0hjd+NsK8J1ePn+JcA==", "requires": { "@peculiar/webcrypto": "^1.4.0", "borc": "^2.1.1", @@ -9915,9 +9956,9 @@ } }, "@dfinity/nns": { - "version": "0.7.0-next-2022-08-08", - "resolved": "https://registry.npmjs.org/@dfinity/nns/-/nns-0.7.0-next-2022-08-08.tgz", - "integrity": "sha512-lbxn2tcLesqQ6JcDxImM8KlG/6lArhKi6NTfiDlI80T/4En1d+nDSQ6Zzr71jSOExSH+0A4WCju1wSB1eIyrpA==", + "version": "0.7.0-next-2022-08-23", + "resolved": "https://registry.npmjs.org/@dfinity/nns/-/nns-0.7.0-next-2022-08-23.tgz", + "integrity": "sha512-OL9gJyeuWrbHQzWP9kjuP26OJ0uisw2B7U27vuN3l4jVqQeihpcT6pDTqlmK4LXhtuy9RtQN/Zxphku6oxbEKQ==", "requires": { "crc": "^4.1.1", "crc-32": "^1.2.2", @@ -9945,28 +9986,28 @@ } }, "@dfinity/principal": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@dfinity/principal/-/principal-0.12.2.tgz", - "integrity": "sha512-VXB2itNAwcwI2Cegt7gxj342ixFxF8Ps+rb74yTZBf8CPv5K20dUOt6MkhqbagjV8NASMWUWYpvsLM84ukVNfw==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@dfinity/principal/-/principal-0.13.2.tgz", + "integrity": "sha512-sOpse3YJ3XboqE31KaLWk0T3QeSy50fmqxCzTe5ugxHTfBJ77NwBUHOHARA0UVo+9EkQnN51fLKfMARYfaTGMw==", "requires": { "ts-node": "^10.8.2" } }, "@dfinity/sns": { - "version": "0.0.3-next-2022-08-08", - "resolved": "https://registry.npmjs.org/@dfinity/sns/-/sns-0.0.3-next-2022-08-08.tgz", - "integrity": "sha512-VnpY6Ok8F7Py9tnWeN72grXqR+BQcV7VZ5ab8+OTOpQ59RrmULmMgWiRFbF0JnbS1WST4qZxB9Ng7rcFNyOqLA==", + "version": "0.0.3-next-2022-08-23", + "resolved": "https://registry.npmjs.org/@dfinity/sns/-/sns-0.0.3-next-2022-08-23.tgz", + "integrity": "sha512-/OPO12nRWiyWaMwyYMGYVyZ5aRu5d1jADVpdH38WBtx80rHgrCEDT6kdDIzj5pmlyPxtYHc0zQRi8xzGs2rw5Q==", "requires": {} }, "@dfinity/utils": { - "version": "0.0.1-next-2022-08-08", - "resolved": "https://registry.npmjs.org/@dfinity/utils/-/utils-0.0.1-next-2022-08-08.tgz", - "integrity": "sha512-FLp4qFEAspfgOxj0PTo6OD4I8jFdgguzr10rIGFb9RpgBAHochXb/Dx39BYwo9ZMXzn+we9q4w/gVz2byEddPg==" + "version": "0.0.1-next-2022-08-23", + "resolved": "https://registry.npmjs.org/@dfinity/utils/-/utils-0.0.1-next-2022-08-23.tgz", + "integrity": "sha512-Q5qGRc62kA5rife39mzzjcV6GRtQ0lUMuJMPObuKSkLTf+oHdwXsC8WBige1QJv8XCipZT8kVUN5/CwWXcSszg==" }, "@esbuild/linux-loong64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.53.tgz", - "integrity": "sha512-W2dAL6Bnyn4xa/QRSU3ilIK4EzD5wgYXKXJiS1HDF5vU3675qc2bvFyLwbUcdmssDveyndy7FbitrCoiV/eMLg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", "optional": true }, "@eslint/eslintrc": { @@ -10436,9 +10477,9 @@ } }, "@peculiar/asn1-schema": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.2.0.tgz", - "integrity": "sha512-1ENEJNY7Lwlua/1wvzpYP194WtjQBfFxvde2FlzfBFh/ln6wvChrtxlORhbKEnYswzn6fOC4c7HdC5izLPMTJg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.0.tgz", + "integrity": "sha512-DtNLAG4vmDrdSJFPe7rypkcj597chNQL7u+2dBtYo5mh7VW2+im6ke+O0NVr8W1f4re4C3F71LhoMb0Yxqa48Q==", "requires": { "asn1js": "^3.0.5", "pvtsutils": "^1.3.2", @@ -10722,9 +10763,9 @@ } }, "@types/chai": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", - "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==" + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", + "integrity": "sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==" }, "@types/chai-subset": { "version": "1.3.3", @@ -11278,15 +11319,21 @@ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz", "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==" }, + "base64-arraybuffer-es6": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/base64-arraybuffer-es6/-/base64-arraybuffer-es6-0.7.0.tgz", + "integrity": "sha512-ESyU/U1CFZDJUdr+neHRhNozeCv72Y7Vm0m1DCbjX3KBjT6eYocvAJlSk6+8+HkVwXlT1FNxhGW6q3UKAlCvvw==", + "dev": true + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bignumber.js": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz", - "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==" + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", + "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==" }, "binary-extensions": { "version": "2.2.0", @@ -11926,151 +11973,151 @@ "dev": true }, "esbuild": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.53.tgz", - "integrity": "sha512-ohO33pUBQ64q6mmheX1mZ8mIXj8ivQY/L4oVuAshr+aJI+zLl+amrp3EodrUNDNYVrKJXGPfIHFGhO8slGRjuw==", - "requires": { - "@esbuild/linux-loong64": "0.14.53", - "esbuild-android-64": "0.14.53", - "esbuild-android-arm64": "0.14.53", - "esbuild-darwin-64": "0.14.53", - "esbuild-darwin-arm64": "0.14.53", - "esbuild-freebsd-64": "0.14.53", - "esbuild-freebsd-arm64": "0.14.53", - "esbuild-linux-32": "0.14.53", - "esbuild-linux-64": "0.14.53", - "esbuild-linux-arm": "0.14.53", - "esbuild-linux-arm64": "0.14.53", - "esbuild-linux-mips64le": "0.14.53", - "esbuild-linux-ppc64le": "0.14.53", - "esbuild-linux-riscv64": "0.14.53", - "esbuild-linux-s390x": "0.14.53", - "esbuild-netbsd-64": "0.14.53", - "esbuild-openbsd-64": "0.14.53", - "esbuild-sunos-64": "0.14.53", - "esbuild-windows-32": "0.14.53", - "esbuild-windows-64": "0.14.53", - "esbuild-windows-arm64": "0.14.53" + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "requires": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" } }, "esbuild-android-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.53.tgz", - "integrity": "sha512-fIL93sOTnEU+NrTAVMIKiAw0YH22HWCAgg4N4Z6zov2t0kY9RAJ50zY9ZMCQ+RT6bnOfDt8gCTnt/RaSNA2yRA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", "optional": true }, "esbuild-android-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.53.tgz", - "integrity": "sha512-PC7KaF1v0h/nWpvlU1UMN7dzB54cBH8qSsm7S9mkwFA1BXpaEOufCg8hdoEI1jep0KeO/rjZVWrsH8+q28T77A==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", "optional": true }, "esbuild-darwin-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.53.tgz", - "integrity": "sha512-gE7P5wlnkX4d4PKvLBUgmhZXvL7lzGRLri17/+CmmCzfncIgq8lOBvxGMiQ4xazplhxq+72TEohyFMZLFxuWvg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.53.tgz", - "integrity": "sha512-otJwDU3hnI15Q98PX4MJbknSZ/WSR1I45il7gcxcECXzfN4Mrpft5hBDHXNRnCh+5858uPXBXA1Vaz2jVWLaIA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.53.tgz", - "integrity": "sha512-WkdJa8iyrGHyKiPF4lk0MiOF87Q2SkE+i+8D4Cazq3/iqmGPJ6u49je300MFi5I2eUsQCkaOWhpCVQMTKGww2w==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.53.tgz", - "integrity": "sha512-9T7WwCuV30NAx0SyQpw8edbKvbKELnnm1FHg7gbSYaatH+c8WJW10g/OdM7JYnv7qkimw2ZTtSA+NokOLd2ydQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", "optional": true }, "esbuild-linux-32": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.53.tgz", - "integrity": "sha512-VGanLBg5en2LfGDgLEUxQko2lqsOS7MTEWUi8x91YmsHNyzJVT/WApbFFx3MQGhkf+XdimVhpyo5/G0PBY91zg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", "optional": true }, "esbuild-linux-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.53.tgz", - "integrity": "sha512-pP/FA55j/fzAV7N9DF31meAyjOH6Bjuo3aSKPh26+RW85ZEtbJv9nhoxmGTd9FOqjx59Tc1ZbrJabuiXlMwuZQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", "optional": true }, "esbuild-linux-arm": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.53.tgz", - "integrity": "sha512-/u81NGAVZMopbmzd21Nu/wvnKQK3pT4CrvQ8BTje1STXcQAGnfyKgQlj3m0j2BzYbvQxSy+TMck4TNV2onvoPA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.53.tgz", - "integrity": "sha512-GDmWITT+PMsjCA6/lByYk7NyFssW4Q6in32iPkpjZ/ytSyH+xeEx8q7HG3AhWH6heemEYEWpTll/eui3jwlSnw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.53.tgz", - "integrity": "sha512-d6/XHIQW714gSSp6tOOX2UscedVobELvQlPMkInhx1NPz4ThZI9uNLQ4qQJHGBGKGfu+rtJsxM4NVHLhnNRdWQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.53.tgz", - "integrity": "sha512-ndnJmniKPCB52m+r6BtHHLAOXw+xBCWIxNnedbIpuREOcbSU/AlyM/2dA3BmUQhsHdb4w3amD5U2s91TJ3MzzA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.53.tgz", - "integrity": "sha512-yG2sVH+QSix6ct4lIzJj329iJF3MhloLE6/vKMQAAd26UVPVkhMFqFopY+9kCgYsdeWvXdPgmyOuKa48Y7+/EQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.53.tgz", - "integrity": "sha512-OCJlgdkB+XPYndHmw6uZT7jcYgzmx9K+28PVdOa/eLjdoYkeAFvH5hTwX4AXGLZLH09tpl4bVsEtvuyUldaNCg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.53.tgz", - "integrity": "sha512-gp2SB+Efc7MhMdWV2+pmIs/Ja/Mi5rjw+wlDmmbIn68VGXBleNgiEZG+eV2SRS0kJEUyHNedDtwRIMzaohWedQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.53.tgz", - "integrity": "sha512-eKQ30ZWe+WTZmteDYg8S+YjHV5s4iTxeSGhJKJajFfQx9TLZJvsJX0/paqwP51GicOUruFpSUAs2NCc0a4ivQQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", "optional": true }, "esbuild-sunos-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.53.tgz", - "integrity": "sha512-OWLpS7a2FrIRukQqcgQqR1XKn0jSJoOdT+RlhAxUoEQM/IpytS3FXzCJM6xjUYtpO5GMY0EdZJp+ur2pYdm39g==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", "optional": true }, "esbuild-windows-32": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.53.tgz", - "integrity": "sha512-m14XyWQP5rwGW0tbEfp95U6A0wY0DYPInWBB7D69FAXUpBpBObRoGTKRv36lf2RWOdE4YO3TNvj37zhXjVL5xg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", "optional": true }, "esbuild-windows-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.53.tgz", - "integrity": "sha512-s9skQFF0I7zqnQ2K8S1xdLSfZFsPLuOGmSx57h2btSEswv0N0YodYvqLcJMrNMXh6EynOmWD7rz+0rWWbFpIHQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.53.tgz", - "integrity": "sha512-E+5Gvb+ZWts+00T9II6wp2L3KG2r3iGxByqd/a1RmLmYWVsSVUjkvIxZuJ3hYTIbhLkH5PRwpldGTKYqVz0nzQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", "optional": true }, "escalade": { @@ -12432,6 +12479,15 @@ } } }, + "fake-indexeddb": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-4.0.0.tgz", + "integrity": "sha512-oCfWSJ/qvQn1XPZ8SHX6kY3zr1t+bN7faZ/lltGY0SBGhFOPXnWf0+pbO/MOAgfMx6khC2gK3S/bvAgQpuQHDQ==", + "dev": true, + "requires": { + "realistic-structured-clone": "^3.0.0" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -12877,6 +12933,11 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, + "idb": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.2.tgz", + "integrity": "sha512-jjKrT1EnyZewQ/gCBb/eyiYrhGzws2FeY92Yx8qT9S9GeQAmo4JFVIiWRIfKW/6Ob9A+UDAOW9j9jn58fy2HIg==" + }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -14707,9 +14768,9 @@ } }, "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", "requires": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -14902,6 +14963,34 @@ "picomatch": "^2.2.1" } }, + "realistic-structured-clone": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/realistic-structured-clone/-/realistic-structured-clone-3.0.0.tgz", + "integrity": "sha512-rOjh4nuWkAqf9PWu6JVpOWD4ndI+JHfgiZeMmujYcPi+fvILUu7g6l26TC1K5aBIp34nV+jE1cDO75EKOfHC5Q==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "typeson": "^6.1.0", + "typeson-registry": "^1.0.0-alpha.20" + }, + "dependencies": { + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + } + } + }, "redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -15633,9 +15722,9 @@ "integrity": "sha512-Vs3rhkUH6Qq1t5bqtb816oT+HeJTXfwt2cbPH17sWHIYKTotQIFPk3tf2fgqRrVyMDVOc1EnPgzIxfIulXVzwQ==" }, "tinyspy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.0.tgz", - "integrity": "sha512-FI5B2QdODQYDRjfuLF+OrJ8bjWRMCXokQPcwKm0W3IzcbUmBNv536cQc7eXGoAuXphZwgx1DFbqImwzz08Fnhw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", + "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==" }, "tmpl": { "version": "1.0.5", @@ -15790,6 +15879,51 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==" }, + "typeson": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/typeson/-/typeson-6.1.0.tgz", + "integrity": "sha512-6FTtyGr8ldU0pfbvW/eOZrEtEkczHRUtduBnA90Jh9kMPCiFNnXIon3vF41N0S4tV1HHQt4Hk1j4srpESziCaA==", + "dev": true + }, + "typeson-registry": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/typeson-registry/-/typeson-registry-1.0.0-alpha.39.tgz", + "integrity": "sha512-NeGDEquhw+yfwNhguLPcZ9Oj0fzbADiX4R0WxvoY8nGhy98IbzQy1sezjoEFWOywOboj/DWehI+/aUlRVrJnnw==", + "dev": true, + "requires": { + "base64-arraybuffer-es6": "^0.7.0", + "typeson": "^6.0.0", + "whatwg-url": "^8.4.0" + }, + "dependencies": { + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + } + } + }, "unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -15844,15 +15978,15 @@ } }, "vite": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz", - "integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.9.tgz", + "integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==", "requires": { "esbuild": "^0.14.47", "fsevents": "~2.3.2", - "postcss": "^8.4.14", + "postcss": "^8.4.16", "resolve": "^1.22.1", - "rollup": "^2.75.6" + "rollup": ">=2.75.6 <2.77.0 || ~2.77.0" } }, "vitest": { diff --git a/frontend/package.json b/frontend/package.json index eafaadad82..5227fdc31b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,7 +16,7 @@ "test": "TZ=UTC jest", "test:watch": "TZ=UTC npm run test -- --watchAll", "update:next": "npm update @dfinity/nns @dfinity/sns @dfinity/utils", - "update:agent": "npm rm @dfinity/agent @dfinity/auth-client @dfinity/authentication @dfinity/candid @dfinity/identity @dfinity/principal && npm i @dfinity/agent @dfinity/auth-client @dfinity/authentication @dfinity/candid @dfinity/identity @dfinity/principal", + "update:agent": "npm rm @dfinity/agent @dfinity/auth-client @dfinity/authentication @dfinity/candid @dfinity/identity @dfinity/principal @dfinity/nns @dfinity/sns @dfinity/utils && npm i @dfinity/agent @dfinity/auth-client @dfinity/authentication @dfinity/candid @dfinity/identity @dfinity/principal @dfinity/nns@next @dfinity/sns@next @dfinity/utils@next", "update:gix": "npm update @dfinity/gix-components" }, "devDependencies": { @@ -38,6 +38,7 @@ "autoprefixer": "^10.4.7", "eslint": "^8.15.0", "eslint-plugin-svelte3": "^4.0.0", + "fake-indexeddb": "^4.0.0", "jest": "^28.1.0", "jest-environment-jsdom": "^28.1.0", "jest-mock-extended": "^2.0.6", @@ -62,14 +63,14 @@ "typescript": "^4.6.4" }, "dependencies": { - "@dfinity/agent": "^0.12.2", - "@dfinity/auth-client": "^0.12.2", - "@dfinity/authentication": "^0.12.2", - "@dfinity/candid": "^0.12.2", + "@dfinity/agent": "^0.13.2", + "@dfinity/auth-client": "^0.13.2", + "@dfinity/authentication": "^0.13.2", + "@dfinity/candid": "^0.13.2", "@dfinity/gix-components": "next", - "@dfinity/identity": "^0.12.2", + "@dfinity/identity": "^0.13.2", "@dfinity/nns": "next", - "@dfinity/principal": "^0.12.2", + "@dfinity/principal": "^0.13.2", "@dfinity/sns": "next", "@dfinity/utils": "next", "@ledgerhq/hw-transport-node-hid-noevents": "^6.27.1", diff --git a/frontend/src/lib/components/common/Guard.svelte b/frontend/src/lib/components/common/Guard.svelte index 1429d20ec1..a6bc5c2f60 100644 --- a/frontend/src/lib/components/common/Guard.svelte +++ b/frontend/src/lib/components/common/Guard.svelte @@ -14,12 +14,8 @@ }; - - await authStore.sync()} - on:popstate={() => routeStore.update({ path: routePath() })} -/> + routeStore.update({ path: routePath() })} /> {#await syncAuthStore()} diff --git a/frontend/src/lib/services/auth.services.ts b/frontend/src/lib/services/auth.services.ts index ebe4847c52..558402981e 100644 --- a/frontend/src/lib/services/auth.services.ts +++ b/frontend/src/lib/services/auth.services.ts @@ -1,7 +1,6 @@ import type { Identity } from "@dfinity/agent"; import { get } from "svelte/store"; import { authStore } from "../stores/auth.store"; -import { themeStore } from "../stores/theme.store"; import { toastsStore } from "../stores/toasts.store"; import type { ToastLevel, ToastMsg } from "../types/toast"; import { replaceHistory } from "../utils/route.utils"; @@ -20,12 +19,10 @@ export const logout = async ({ appendMsgToUrl(msg); } - // We preserve the anonymous theme information only so that user sign-in with same theme next time - const { theme: storageTheme }: Storage = localStorage; + // Auth: Delegation and identity are cleared from indexedDB by agent-js so, we do not need to clear these - window.localStorage.clear(); - - themeStore.select(storageTheme); + // Preferences: We do not clear local storage as well. It contains anonymous information such as the selected theme. + // Information the user want to preserve across sign-in. e.g. if I select the light theme, logout and sign-in again, I am happy if the dapp still uses the light theme. // We reload the page to make sure all the states are cleared window.location.reload(); diff --git a/frontend/src/lib/services/worker.services.ts b/frontend/src/lib/services/worker.services.ts index ffbe400c36..e8bab613bd 100644 --- a/frontend/src/lib/services/worker.services.ts +++ b/frontend/src/lib/services/worker.services.ts @@ -1,6 +1,5 @@ import type { AuthStore } from "../stores/auth.store"; import type { PostMessageEventData } from "../types/post-messages"; -import { localStorageAuth } from "../utils/auth.utils"; import { logout } from "./auth.services"; const initWorker = () => { @@ -31,7 +30,6 @@ const initWorker = () => { worker.postMessage({ msg: "nnsStartIdleTimer", - data: await localStorageAuth(), }); }, }; diff --git a/frontend/src/lib/stores/auth.store.ts b/frontend/src/lib/stores/auth.store.ts index 79167e2f6a..9acbec906b 100644 --- a/frontend/src/lib/stores/auth.store.ts +++ b/frontend/src/lib/stores/auth.store.ts @@ -1,28 +1,16 @@ import type { Identity } from "@dfinity/agent"; -import { AuthClient } from "@dfinity/auth-client"; +import type { AuthClient } from "@dfinity/auth-client"; import { writable } from "svelte/store"; import { AUTH_SESSION_DURATION, IDENTITY_SERVICE_URL, } from "../constants/identity.constants"; +import { createAuthClient } from "../utils/auth.utils"; export interface AuthStore { identity: Identity | undefined | null; } -/** - * Create an AuthClient to manage authentication and identity. - * - Session duration is 30min (AUTH_SESSION_DURATION). - * - Disable idle manager that sign-out in case of inactivity after default 10min to avoid UX issues if multiple tabs are used as we observe the storage and sync the delegation on any changes - */ -const createAuthClient = (): Promise => - AuthClient.create({ - idleOptions: { - disableIdle: true, - disableDefaultIdleCallback: true, - }, - }); - /** * A store to handle authentication and the identity of the user. * @@ -38,7 +26,7 @@ const createAuthClient = (): Promise => * * - signOut: call auth-client log out and set null in the store. started with a user interaction ("click on a button") * - * note: clearing the local storage does not happen in the state management but afterwards in its caller function (see ) + * note: clearing idb auth keys does not happen in the state management but afterwards in its caller function (see ) * */ const initAuthStore = () => { diff --git a/frontend/src/lib/types/auth.ts b/frontend/src/lib/types/auth.ts deleted file mode 100644 index 0b2c6dd248..0000000000 --- a/frontend/src/lib/types/auth.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface LocalStorageAuth { - identityKey: string | null; - delegationChain: string | null; -} diff --git a/frontend/src/lib/types/post-messages.ts b/frontend/src/lib/types/post-messages.ts index 0f7f2e76ad..4e33073f04 100644 --- a/frontend/src/lib/types/post-messages.ts +++ b/frontend/src/lib/types/post-messages.ts @@ -1,6 +1,3 @@ -import type { LocalStorageAuth } from "./auth"; - export interface PostMessageEventData { msg: "nnsStartIdleTimer" | "nnsStopIdleTimer" | "nnsSignOut"; - data?: LocalStorageAuth; } diff --git a/frontend/src/lib/utils/auth.utils.ts b/frontend/src/lib/utils/auth.utils.ts index 3f9bf98561..290d3cd363 100644 --- a/frontend/src/lib/utils/auth.utils.ts +++ b/frontend/src/lib/utils/auth.utils.ts @@ -1,6 +1,5 @@ import type { Identity } from "@dfinity/agent"; -import { LocalStorage } from "@dfinity/auth-client"; -import type { LocalStorageAuth } from "../types/auth"; +import { AuthClient } from "@dfinity/auth-client"; /** * The user is signed in when the identity is not undefined and not null. @@ -12,14 +11,15 @@ import type { LocalStorageAuth } from "../types/auth"; export const isSignedIn = (identity: Identity | undefined | null): boolean => identity !== undefined && identity !== null; -export const localStorageAuth = async (): Promise => { - const storage: LocalStorage = new LocalStorage("ic-"); - - const identityKey: string | null = await storage.get("identity"); - const delegationChain: string | null = await storage.get("delegation"); - - return { - identityKey, - delegationChain, - }; -}; +/** + * Create an AuthClient to manage authentication and identity. + * - Session duration is 30min (AUTH_SESSION_DURATION). + * - Disable idle manager that sign-out in case of inactivity after default 10min to avoid UX issues if multiple tabs are used as we observe the storage and sync the delegation on any changes + */ +export const createAuthClient = (): Promise => + AuthClient.create({ + idleOptions: { + disableIdle: true, + disableDefaultIdleCallback: true, + }, + }); diff --git a/frontend/src/lib/workers/auth.worker.ts b/frontend/src/lib/workers/auth.worker.ts index 9d49c70ede..556d5cd347 100644 --- a/frontend/src/lib/workers/auth.worker.ts +++ b/frontend/src/lib/workers/auth.worker.ts @@ -1,11 +1,15 @@ +import { IdbStorage, type AuthClient } from "@dfinity/auth-client"; import { isDelegationValid } from "@dfinity/authentication"; import { DelegationChain } from "@dfinity/identity"; -import type { LocalStorageAuth } from "../types/auth"; +import { createAuthClient } from "../utils/auth.utils"; let timer: NodeJS.Timeout | undefined = undefined; -export const startIdleTimer = (data?: LocalStorageAuth) => - (timer = setInterval(() => onIdleSignOut(data), 1000)); +/** + * The timer is executed only if user has signed in + */ +export const startIdleTimer = () => + (timer = setInterval(async () => await onIdleSignOut(), 1000)); export const stopIdleTimer = () => { if (!timer) { @@ -16,21 +20,47 @@ export const stopIdleTimer = () => { timer = undefined; }; -const onIdleSignOut = (data?: LocalStorageAuth) => { - if (!data) { +const onIdleSignOut = async () => { + const [auth, delegation] = await Promise.all([ + checkAuthentication(), + checkDelegationChain(), + ]); + + // Both identity and delegation are alright, so all good + if (auth && delegation) { return; } - const { delegationChain } = data; + logout(); +}; - if (delegationChain === null) { - return; - } +/** + * If user is not authenticated - i.e. no identity or anonymous and there is no valid delegation chain, then identity is not valid + * + * @returns true if authenticated + */ +const checkAuthentication = async (): Promise => { + const authClient: AuthClient = await createAuthClient(); + return authClient.isAuthenticated(); +}; - if (isDelegationValid(DelegationChain.fromJSON(delegationChain))) { - return; - } +/** + * If there is no delegation or if not valid, then delegation is not valid + * + * @returns true if delegation is valid + */ +const checkDelegationChain = async (): Promise => { + const idbStorage: IdbStorage = new IdbStorage(); + const delegationChain: string | null = await idbStorage.get("delegation"); + + return ( + delegationChain !== null && + isDelegationValid(DelegationChain.fromJSON(delegationChain)) + ); +}; +// We do the logout on the client side because we reload the window to reload stores afterwards +const logout = () => { // Clear timer to not emit sign-out multiple times stopIdleTimer(); diff --git a/frontend/src/tests/App.spec.ts b/frontend/src/tests/App.spec.ts index b8107756b0..69642db114 100644 --- a/frontend/src/tests/App.spec.ts +++ b/frontend/src/tests/App.spec.ts @@ -28,6 +28,8 @@ describe("App", () => { jest .spyOn(authStore, "subscribe") .mockImplementation(mutableMockAuthStoreSubscribe); + + jest.spyOn(authStore, "sync").mockImplementation(() => Promise.resolve()); }); afterAll(() => { diff --git a/frontend/src/tests/lib/components/common/Guard.spec.ts b/frontend/src/tests/lib/components/common/Guard.spec.ts index da25e7a4aa..fdb65286b4 100644 --- a/frontend/src/tests/lib/components/common/Guard.spec.ts +++ b/frontend/src/tests/lib/components/common/Guard.spec.ts @@ -18,16 +18,4 @@ describe("Guard", () => { expect(container.querySelector("svg")).not.toBeNull(); expect(container.querySelector("circle")).not.toBeNull(); }); - - it("should sync auth on localstorage changes", () => { - const spy = jest - .spyOn(authStore, "sync") - .mockImplementation(() => Promise.resolve()); - - render(Guard); - - window.localStorage.setItem("test", "test"); - - expect(spy).toHaveBeenCalled(); - }); }); diff --git a/frontend/src/tests/lib/services/auth.services.spec.ts b/frontend/src/tests/lib/services/auth.services.spec.ts index f0c40a9360..b040a11a5b 100644 --- a/frontend/src/tests/lib/services/auth.services.spec.ts +++ b/frontend/src/tests/lib/services/auth.services.spec.ts @@ -2,7 +2,7 @@ * @jest-environment jsdom */ -import { AuthClient } from "@dfinity/auth-client"; +import { AuthClient, IdbStorage } from "@dfinity/auth-client"; import { waitFor } from "@testing-library/svelte"; import { mock } from "jest-mock-extended"; import { @@ -13,8 +13,6 @@ import { toastsStore } from "../../../lib/stores/toasts.store"; import * as routeUtils from "../../../lib/utils/route.utils"; describe("auth-services", () => { - const mockAuthClient = mock(); - const { reload, href, search } = window.location; beforeAll(() => { @@ -22,107 +20,120 @@ describe("auth-services", () => { writable: true, value: { reload: jest.fn(), href, search }, }); - - jest - .spyOn(AuthClient, "create") - .mockImplementation(async (): Promise => mockAuthClient); }); afterAll(() => (window.location.reload = reload)); - it("should call auth-client logout on logout", async () => { - const spy = jest.spyOn(mockAuthClient, "logout"); + describe("auth-client", () => { + it("agent-js should clear indexeddb auth info on logout", async () => { + const idbStorage = new IdbStorage(); + await idbStorage.set("delegation", "value"); - await logout({}); + const value = await idbStorage.get("delegation"); + expect(value).not.toBeNull(); - expect(spy).toHaveBeenCalled(); - }); + await logout({}); - it("should clear storage", async () => { - const spy = jest.spyOn(Storage.prototype, "clear"); + const valueCleared = await idbStorage.get("delegation"); + expect(valueCleared).toBeNull(); + }); + }); - await logout({}); + describe("auth-client-mocked", () => { + const mockAuthClient = mock(); - expect(spy).toHaveBeenCalled(); - }); + beforeAll(() => + jest + .spyOn(AuthClient, "create") + .mockImplementation(async (): Promise => mockAuthClient) + ); - it("should reload browser", async () => { - const spy = jest.spyOn(window.location, "reload"); + it("should call auth-client logout on logout", async () => { + const spy = jest.spyOn(mockAuthClient, "logout"); - await logout({}); + await logout({}); - await waitFor(() => expect(spy).toHaveBeenCalled()); - }); + expect(spy).toHaveBeenCalled(); + }); - it("should add msg to url", async () => { - const spy = jest.spyOn(routeUtils, "replaceHistory"); + it("should reload browser", async () => { + const spy = jest.spyOn(window.location, "reload"); - await logout({ msg: { labelKey: "test.key", level: "warn" } }); + await logout({}); - expect(spy).toHaveBeenCalled(); + await waitFor(() => expect(spy).toHaveBeenCalled()); + }); - spy.mockClear(); - }); + it("should add msg to url", async () => { + const spy = jest.spyOn(routeUtils, "replaceHistory"); - it("should not add msg to url", async () => { - const spy = jest.spyOn(routeUtils, "replaceHistory"); + await logout({ msg: { labelKey: "test.key", level: "warn" } }); - await logout({}); + expect(spy).toHaveBeenCalled(); - expect(spy).not.toHaveBeenCalled(); + spy.mockClear(); + }); - spy.mockClear(); - }); + it("should not add msg to url", async () => { + const spy = jest.spyOn(routeUtils, "replaceHistory"); - it("should not display msg from url", async () => { - const spy = jest.spyOn(toastsStore, "show"); + await logout({}); - await displayAndCleanLogoutMsg(); + expect(spy).not.toHaveBeenCalled(); - expect(spy).not.toHaveBeenCalled(); - }); + spy.mockClear(); + }); - it("should display msg from url", async () => { - const spy = jest.spyOn(toastsStore, "show"); + it("should not display msg from url", async () => { + const spy = jest.spyOn(toastsStore, "show"); - const location = window.location; + await displayAndCleanLogoutMsg(); - Object.defineProperty(window, "location", { - writable: true, - value: { ...location, search: "msg=test.key&level=warn" }, + expect(spy).not.toHaveBeenCalled(); }); - await displayAndCleanLogoutMsg(); + it("should display msg from url", async () => { + const spy = jest.spyOn(toastsStore, "show"); - expect(spy).toHaveBeenCalled(); + const location = window.location; - Object.defineProperty(window, "location", { - writable: true, - value: { ...location }, - }); + Object.defineProperty(window, "location", { + writable: true, + value: { ...location, search: "msg=test.key&level=warn" }, + }); - spy.mockClear(); - }); + await displayAndCleanLogoutMsg(); - it("should clean msg from url", async () => { - const spy = jest.spyOn(routeUtils, "replaceHistory"); + expect(spy).toHaveBeenCalled(); - const location = window.location; + Object.defineProperty(window, "location", { + writable: true, + value: { ...location }, + }); - Object.defineProperty(window, "location", { - writable: true, - value: { ...location, search: "msg=test.key&level=warn" }, + spy.mockClear(); }); - await displayAndCleanLogoutMsg(); + it("should clean msg from url", async () => { + const spy = jest.spyOn(routeUtils, "replaceHistory"); - expect(spy).toHaveBeenCalled(); + const location = window.location; - Object.defineProperty(window, "location", { - writable: true, - value: { ...location }, - }); + Object.defineProperty(window, "location", { + writable: true, + value: { ...location, search: "msg=test.key&level=warn" }, + }); + + await displayAndCleanLogoutMsg(); - spy.mockClear(); + expect(spy).toHaveBeenCalled(); + + Object.defineProperty(window, "location", { + writable: true, + value: { ...location }, + }); + + spy.mockClear(); + }); }); }); diff --git a/frontend/src/worker.ts b/frontend/src/worker.ts index b3cb836bc9..18ddc1b7a5 100644 --- a/frontend/src/worker.ts +++ b/frontend/src/worker.ts @@ -2,11 +2,11 @@ import type { PostMessageEventData } from "./lib/types/post-messages"; import { startIdleTimer, stopIdleTimer } from "./lib/workers/auth.worker"; onmessage = ({ data }: MessageEvent) => { - const { msg, data: authData } = data; + const { msg } = data; switch (msg) { case "nnsStartIdleTimer": - startIdleTimer(authData); + startIdleTimer(); return; case "nnsStopIdleTimer": stopIdleTimer();