From f1d7a2e6580b401c95bdc782ba0a3f262a6cc3b2 Mon Sep 17 00:00:00 2001 From: Christophe Le Bars Date: Wed, 22 Feb 2023 16:32:57 +0100 Subject: [PATCH] port ethers-svelte to ethers v6 --- README.md | 60 +- example/package-lock.json | 626 +++++++++--------- example/package.json | 14 +- example/src/lib/Providers.svelte | 47 +- rollup.config.js | 4 +- ...e-ethers-store.d.ts => ethers-svelte.d.ts} | 0 src/stores.js | 60 +- 7 files changed, 411 insertions(+), 400 deletions(-) rename src/{svelte-ethers-store.d.ts => ethers-svelte.d.ts} (100%) diff --git a/README.md b/README.md index 9bd5bc2..4003998 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,15 @@ -# svelte-ethers-store +# ethers-svelte -Use the [ethers.js library](https://docs.ethers.io/v5/) as a +Use the [ethers.js library](https://docs.ethers.io/) as a collection of [readable Svelte stores](https://svelte.dev/tutorial/readable-stores) -for Svelte, Sapper or SvelteKit. +for Svelte, Sapper or SvelteKit. This package includes also a few basic Svelte components +for very typical usage of ethers.js: `Balance` `Identicon` `Jazzicon`. -This version only support ethers version 5. +:exclamation: This is an exeriemental version that only support ethers.js version 6. Please use the package +[svelte-ethers-store](https://www.npmjs.com/package/svelte-ethers-store) for ethers.js version 5. -If you prefer to use the [web3.js library](https://web3js.readthedocs.io/) to interact +If you also use the [web3.js library](https://web3js.readthedocs.io/) to interact with EVM, you may be interested by the sister package [svelte-web3](https://www.npmjs.com/package/svelte-web3). ### Community @@ -17,10 +19,10 @@ Discord](https://discord.gg/7yXuwDwaHF). ## Installation -Add the `svelte-ethers-store` package +Add the `ethers-svelte` package ```bash -npm i svelte-ethers-store +npm i ethers-svelte ``` ## Basic usage (default stores connected to one chain) @@ -33,12 +35,12 @@ or the selected account change. You can import them directly in any Svelte or JavaScript files : ```js -import { connected, provider, chainId, chainData, signer, signerAddress, contracts } from 'svelte-ethers-store' +import { connected, provider, chainId, chainData, signer, signerAddress, contracts } from 'ethers-svelte' ``` * connected: store value is true if a connection has been set up. * provider: store value is an Ethers.js Provider instance when connected. - * chainId: store value is the current chainId when connected. + * chainId: store value is the current chainId when connected (always BigInt) * chainData: store value is the current blokchain CAIP-2 data (when connected), see below. * signer: store value is an Ethers.js Signer instance when connected. * signerAddress: store value is a shortcut to get `$signer.getAddress()` when connected. @@ -50,7 +52,7 @@ to an EVM blockchain first need to established . The abstract helper automatically instanciate all stores. ```js -import { defaultEvmStores } from 'svelte-ethers-store' +import { defaultEvmStores } from 'ethers-svelte' ``` ### Connection with the browser provider (eg wallets like Metamask) @@ -78,13 +80,9 @@ argument in SSR context. ) ``` -`svelte-ethers-store` will automatically update the stores when the network or +`ethers-svelte` will automatically update the stores when the network or accounts change and remove listeners at disconnection. -:exclamation: previous version of `svelte-ethers-store` were using a special -method `setBrowserProvider`. The former naming still works but will be -removed in later versions. Please update your code! - ### Connection with non injected EIP-1193 providers @@ -105,7 +103,7 @@ const provider = await web3Modal.connect() defaultEvmStores.setProvider(provider) ``` -`svelte-ethers-store` will automatically update the stores when the network or +`ethers-svelte` will automatically update the stores when the network or accounts change and remove listeners at disconnection. @@ -152,7 +150,7 @@ prefix Svelte notation to access the stores values. ```html @@ -172,11 +170,11 @@ prefix Svelte notation to access the stores values. Likewise use the `$` prefix Svelte notation to access Provider or Signer read-only abstractions and use the whole Ethers.js API. (beware, in the Ethers library documentation, Provider or Signer instances are always noted as `provider` - and `signer`, without `$`, but in the context of `svelte-ethers-store`, this naming + and `signer`, without `$`, but in the context of `ethers-svelte`, this naming is used by the Svelte stores themselves encapsulating Provider or Signer instances). ```js - import { connected, provider, signer } from 'svelte-ethers-store' + import { connected, provider, signer } from 'ethers-svelte' // ... @@ -202,7 +200,7 @@ need to define a logical name. That's the function `attachContract`: ```html

balance =

@@ -368,12 +366,6 @@ See also the `components` route in the example directory. ## FAQ -### *Cannot run using SvelteKit, I get error:* `Cannot read property 'BN' of undefined` - -The module `ethers` has not been detected by Vite. You need `import ethers` somewhere -in your app or add `optimizeDeps: { include: [ 'ethers' ] }` in `svelte.config.js` - - ### *how to auto-connect on page load?* It is out of scope of this package to implement this function but it diff --git a/example/package-lock.json b/example/package-lock.json index ac6846f..6ac2578 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -13,40 +13,40 @@ "devDependencies": { "@fontsource/fira-mono": "^4.5.10", "@neoconfetti/svelte": "^1.0.0", - "@openzeppelin/contracts": "^4.7.3", - "@sveltejs/adapter-auto": "^1.0.0", - "@sveltejs/kit": "^1.0.0", - "svelte": "^3.54.0", + "@openzeppelin/contracts": "^4.8.1", + "@sveltejs/adapter-auto": "^2.0.0", + "@sveltejs/kit": "^1.8.3", + "svelte": "^3.55.1", "svelte-ethers-store": "file:../", - "svelte-highlight": "^6.2.1", - "vite": "^4.0.0" + "svelte-highlight": "^7.2.0", + "vite": "^4.1.4" } }, "..": { - "version": "2.5.8", + "version": "2.5.10", "dev": true, "license": "MIT", "dependencies": { "@metamask/jazzicon": "^2.0.0", "ethereum-blockies-base64": "^1.0.2", - "ethers": "^5.0.0", - "svelte": "^3.0.0", + "ethers": "6.x", + "svelte": "3.x", "svelte-proxied-store": "^1.1.5" }, "devDependencies": { - "ethers": "^5.7.2", - "lint-staged": "^13.1.0", + "ethers": "^6.0.4", + "lint-staged": "^13.1.2", "prettier-standard": "^16.4.1", - "release-it": "^15.5.1", + "release-it": "^15.6.0", "rollup": "^2.78.1", "rollup-plugin-dts": "^4.2.2", - "svelte": "^3.55.0" + "svelte": "^3.55.1" } }, "node_modules/@esbuild/android-arm": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.11.tgz", - "integrity": "sha512-j2xsG1OETgCe+OBA54DG5vLuGjmMZtQvyxt+rTw2aYK/RqjcG/F+UDdj43uoUOv8lSRC3lM4XpKLOVZfY/82yA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", "cpu": [ "arm" ], @@ -60,9 +60,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.11.tgz", - "integrity": "sha512-CPwhZd15PasQSlkFuZv1st37xvuBeklztfb9y2GZWLQu59zcMIDkZVSEz/TTIxzt811+eJfblg5HhP49iVVDWQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", "cpu": [ "arm64" ], @@ -76,9 +76,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.11.tgz", - "integrity": "sha512-vbFn+0JXX6FkKq+0sNeA6aF2QhuOt9ZkBl+DSyqKIF+Ms58lUOhbqSwberKWQDm0udgOp3d/LhOFTYmpvmlZmA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", "cpu": [ "x64" ], @@ -92,9 +92,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.11.tgz", - "integrity": "sha512-1tqsIG6AySZ9njT8V2ddH1F/J01zX+0obPCpP0uD9TMIUlAA5WUF/+abFlnIsNY4jACcbN/13NUbLRWE9bayjw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", "cpu": [ "arm64" ], @@ -108,9 +108,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.11.tgz", - "integrity": "sha512-Gqx2/nYqnK46dwEDPGv3SwLqgLIZQJ7m2xNoNRzO50VZPvoCWSUqDaoirrZZf7uVfl+fxHoZBcdQJx2gOdxffQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", "cpu": [ "x64" ], @@ -124,9 +124,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.11.tgz", - "integrity": "sha512-58FTdlgIQ3ZxFtGphjbIBmo7kfDhQih/PlfAnKraAcCDZOYXWcRFmHJtW+EVg32IIxuEAqhLAzCgrqpm5o8Wlw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", "cpu": [ "arm64" ], @@ -140,9 +140,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.11.tgz", - "integrity": "sha512-L7hr6VnpqZzYEDVQeaViz1QnmfFRCRm3zVtljbYi/CU6InKs6tda1J3pAvqVsbNpbGMA9AvyiyBrgjJAFCawVg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", "cpu": [ "x64" ], @@ -156,9 +156,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.11.tgz", - "integrity": "sha512-Mk6TZij71alyS0FGuKEKYjTZGjUw2uXi07V/AiGZW1b5grTfGx6lpsbQdystgDJqju99Osq2Ix+C7WteSnwrHg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", "cpu": [ "arm" ], @@ -172,9 +172,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.11.tgz", - "integrity": "sha512-OKU0ajh9Xu7Pd1MlSq8Xqj5SJEV+4yVnALydPTDrrmTyvU72P8mTRJgZMilHw7H+Jqc0utryjNOwlJ/+fOkwGw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", "cpu": [ "arm64" ], @@ -188,9 +188,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.11.tgz", - "integrity": "sha512-pr1/tdDfgQQ9hp2IskSKMuwkx2X4jR7iHLbqEmmj/lPLKeoa6AUulnglGY4y0OPo+0eAYd6DzWp7ve3KI4lOCA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", "cpu": [ "ia32" ], @@ -204,9 +204,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.11.tgz", - "integrity": "sha512-2MCYdDBh9R+R1xuBFiApgkbp/tW1uV+aVeefKYqWSEk3o6MHzWo1FxEGA4dSnC+kThSBOMVpCV9z4/DPouA3bQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", "cpu": [ "loong64" ], @@ -220,9 +220,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.11.tgz", - "integrity": "sha512-IyotdnRg0J8F9FKttYe3cy/M9ZJ5W/Gm6whH08sbXMxRVKs/TyyoqFIA8oT1MzR+si6GLlRpcF7JbUnOXssjPA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", "cpu": [ "mips64el" ], @@ -236,9 +236,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.11.tgz", - "integrity": "sha512-NUMtxvb0j41UL8yf8VnTMNbCQxKqIPmF0Wf/N44UrxpKE8iCNmWT95Wt98Ivr2ebHdz+V3kptlgBuZNYcJLI6g==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", "cpu": [ "ppc64" ], @@ -252,9 +252,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.11.tgz", - "integrity": "sha512-03/B26az/JezvVkgck+lhauP13t6RqzCQgnrkBCBrXXpX+2r02DfSU43BEhpErJrsrDA8GXSE/rvsfbGCX6OvA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", "cpu": [ "riscv64" ], @@ -268,9 +268,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.11.tgz", - "integrity": "sha512-Xs2tRB0fgly4XfC4FMv1Fd699AMEH8BClp36mzqRuVzm/285XIJaK5cPEZ9cLLn9ukNHdvvSX/83u5uS1BCd8g==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", "cpu": [ "s390x" ], @@ -284,9 +284,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.11.tgz", - "integrity": "sha512-CiNialxsjJllrG3ggzOKzSaqQK/De/Mv4g/3r7jxLt01GLerPh0Q3TVTndFG9VfOrR1PdN7Fz5AOV3bE6Isd1Q==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", "cpu": [ "x64" ], @@ -300,9 +300,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.11.tgz", - "integrity": "sha512-PiljZi6QZ3Pz0pL8rfJqPln8F/a3mEJwh2vhBb1kDYLniLufo9/7AInb/ZyhvgR7FxUQluUYyz64owPomgaLJA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", "cpu": [ "x64" ], @@ -316,9 +316,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.11.tgz", - "integrity": "sha512-Nyk8aJM+w6NoS4RGQJ0ybb516jEIbEVlLvhRIdpCssUuqKU0lr9lJPHnFY2QqyoVaJkd6VxaHOBU/v/ieuiENQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", "cpu": [ "x64" ], @@ -332,9 +332,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.11.tgz", - "integrity": "sha512-shxBLdNJecr7KxuyZQ19idBU8x7Mq7m+N5Fj8ROWMWQbDdjSjlBPxz7EZJIxSh7FUgSMKl7qSCCVaczXrta4MQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", "cpu": [ "x64" ], @@ -348,9 +348,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.11.tgz", - "integrity": "sha512-vyTbfoEBn7cGXK8writbsB+G2wyRoOA+EbTNQ9cu5lyLU65sfWetCaL8T7mX338AN8tTbCYl6ce5YRKTonpA3w==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", "cpu": [ "arm64" ], @@ -364,9 +364,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.11.tgz", - "integrity": "sha512-ATGCGc52LNqakUE9i54RzFC4lm70UTcTW721AFGjQotc6uCg7sf7QeRd05wD5tLBFafHdMSZv4rsU/Nh7LT/rQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", "cpu": [ "ia32" ], @@ -380,9 +380,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.11.tgz", - "integrity": "sha512-7NcClJIctrO3iRu5CCqwdSBePm8bL2Iu1DYsuOnxuYJ+a1Kv3Wn3MzNdJIrUPLi1yADVwRliRUU/jtMC/tJnJA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", "cpu": [ "x64" ], @@ -414,9 +414,9 @@ "dev": true }, "node_modules/@openzeppelin/contracts": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.8.0.tgz", - "integrity": "sha512-AGuwhRRL+NaKx73WKRNzeCxOCOCxpaqF+kp8TJ89QzAipSwZy/NoflkWaL9bywXFRhIzXt8j38sfF7KBKCPWLw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.8.1.tgz", + "integrity": "sha512-xQ6eUZl+RDyb/FiZe1h+U7qr/f4p/SrTSQcTPH2bjur3C5DbuW/zFgCU/b1P/xcIaEqJep+9ju4xDRi3rmChdQ==", "dev": true }, "node_modules/@polka/url": { @@ -426,9 +426,9 @@ "dev": true }, "node_modules/@sveltejs/adapter-auto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0.tgz", - "integrity": "sha512-yKyPvlLVua1bJ/42FrR3X041mFGdB4GzTZOAEoHUcNBRE5Mhx94+eqHpC3hNvAOiLEDcKfVO0ObyKSu7qldU+w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.0.0.tgz", + "integrity": "sha512-b+gkHFZgD771kgV3aO4avHFd7y1zhmMYy9i6xOK7m/rwmwaRO8gnF5zBc0Rgca80B2PMU1bKNxyBTHA14OzUAQ==", "dev": true, "dependencies": { "import-meta-resolve": "^2.2.0" @@ -438,25 +438,25 @@ } }, "node_modules/@sveltejs/kit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.1.tgz", - "integrity": "sha512-C41aCaDjA7xoUdsrc/lSdU1059UdLPIRE1vEIRRynzpMujNgp82bTMHkDosb6vykH6LrLf3tT2w2/5NYQhKYGQ==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.8.3.tgz", + "integrity": "sha512-32tiLy5PPpt2lquK2p53/5wR+ghAXw0HymIBEezmwmwtzx7Xf36xw3RG3fDYQ9gyzon89T+JRweXgAv/qhhvSQ==", "dev": true, "hasInstallScript": true, "dependencies": { "@sveltejs/vite-plugin-svelte": "^2.0.0", "@types/cookie": "^0.5.1", "cookie": "^0.5.0", - "devalue": "^4.2.0", + "devalue": "^4.3.0", "esm-env": "^1.0.0", "kleur": "^4.1.5", - "magic-string": "^0.27.0", + "magic-string": "^0.29.0", "mime": "^3.0.0", "sade": "^1.8.1", "set-cookie-parser": "^2.5.1", "sirv": "^2.0.2", "tiny-glob": "^0.2.9", - "undici": "5.14.0" + "undici": "5.20.0" }, "bin": { "svelte-kit": "svelte-kit.js" @@ -469,6 +469,18 @@ "vite": "^4.0.0" } }, + "node_modules/@sveltejs/kit/node_modules/magic-string": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.29.0.tgz", + "integrity": "sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@sveltejs/vite-plugin-svelte": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz", @@ -544,15 +556,15 @@ } }, "node_modules/devalue": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.2.0.tgz", - "integrity": "sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.0.tgz", + "integrity": "sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==", "dev": true }, "node_modules/esbuild": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.11.tgz", - "integrity": "sha512-Al0hhRUz/cCDvDp9VZp1L500HZZQ/HLjgTnQTmnW97+PoLmw+PuvB3e19JHYZtWnrxoh3qYrN/0tiRIbrE2oVQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", "dev": true, "hasInstallScript": true, "bin": { @@ -562,28 +574,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.16.11", - "@esbuild/android-arm64": "0.16.11", - "@esbuild/android-x64": "0.16.11", - "@esbuild/darwin-arm64": "0.16.11", - "@esbuild/darwin-x64": "0.16.11", - "@esbuild/freebsd-arm64": "0.16.11", - "@esbuild/freebsd-x64": "0.16.11", - "@esbuild/linux-arm": "0.16.11", - "@esbuild/linux-arm64": "0.16.11", - "@esbuild/linux-ia32": "0.16.11", - "@esbuild/linux-loong64": "0.16.11", - "@esbuild/linux-mips64el": "0.16.11", - "@esbuild/linux-ppc64": "0.16.11", - "@esbuild/linux-riscv64": "0.16.11", - "@esbuild/linux-s390x": "0.16.11", - "@esbuild/linux-x64": "0.16.11", - "@esbuild/netbsd-x64": "0.16.11", - "@esbuild/openbsd-x64": "0.16.11", - "@esbuild/sunos-x64": "0.16.11", - "@esbuild/win32-arm64": "0.16.11", - "@esbuild/win32-ia32": "0.16.11", - "@esbuild/win32-x64": "0.16.11" + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" } }, "node_modules/esm-env": { @@ -748,9 +760,9 @@ "dev": true }, "node_modules/postcss": { - "version": "8.4.20", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", - "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "dev": true, "funding": [ { @@ -788,6 +800,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/rollup": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.2.tgz", + "integrity": "sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -851,9 +879,9 @@ } }, "node_modules/svelte": { - "version": "3.55.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.0.tgz", - "integrity": "sha512-uGu2FVMlOuey4JoKHKrpZFkoYyj0VLjJdz47zX5+gVK5odxHM40RVhar9/iK2YFRVxvfg9FkhfVlR0sjeIrOiA==", + "version": "3.55.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz", + "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==", "dev": true, "engines": { "node": ">= 8" @@ -864,21 +892,12 @@ "link": true }, "node_modules/svelte-highlight": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/svelte-highlight/-/svelte-highlight-6.2.1.tgz", - "integrity": "sha512-nZoweg5atreJHAJPaB0nca+r6YhDzbEJQrtKDO2mR/muEzsRKxMeSF3Q8BV0Au+T2jMWGBPwlBzA/tqv9yG9UQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/svelte-highlight/-/svelte-highlight-7.2.0.tgz", + "integrity": "sha512-mOJltSmozHNuaIE4tglrOBQ9X/8sKoQMJfqm+YZUuHvzfAcefWtZVDFml2oUrEv8iehM79mdA9+0orhUWIrxWw==", "dev": true, "dependencies": { - "highlight.js": "11.6.0" - } - }, - "node_modules/svelte-highlight/node_modules/highlight.js": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.6.0.tgz", - "integrity": "sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==", - "dev": true, - "engines": { - "node": ">=12.0.0" + "highlight.js": "11.7.0" } }, "node_modules/svelte-hmr": { @@ -913,9 +932,9 @@ } }, "node_modules/undici": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.14.0.tgz", - "integrity": "sha512-yJlHYw6yXPPsuOH0x2Ib1Km61vu4hLiRRQoafs+WUgX1vO64vgnxiCEN9dpIrhZyHFsai3F0AEj4P9zy19enEQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.20.0.tgz", + "integrity": "sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==", "dev": true, "dependencies": { "busboy": "^1.6.0" @@ -925,15 +944,15 @@ } }, "node_modules/vite": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.3.tgz", - "integrity": "sha512-HvuNv1RdE7deIfQb8mPk51UKjqptO/4RXZ5yXSAvurd5xOckwS/gg8h9Tky3uSbnjYTgUm0hVCet1cyhKd73ZA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz", + "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==", "dev": true, "dependencies": { - "esbuild": "^0.16.3", - "postcss": "^8.4.20", + "esbuild": "^0.16.14", + "postcss": "^8.4.21", "resolve": "^1.22.1", - "rollup": "^3.7.0" + "rollup": "^3.10.0" }, "bin": { "vite": "bin/vite.js" @@ -973,22 +992,6 @@ } } }, - "node_modules/vite/node_modules/rollup": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.0.tgz", - "integrity": "sha512-nGGylpmblyjTpF4lEUPgmOw6OVxRvnI6Iuuh6Lz4O/X66cVOX1XJSsqP1YamxQ+mPuFE7qJxLFDSCk8rNv5dDw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/vitefu": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", @@ -1006,156 +1009,156 @@ }, "dependencies": { "@esbuild/android-arm": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.11.tgz", - "integrity": "sha512-j2xsG1OETgCe+OBA54DG5vLuGjmMZtQvyxt+rTw2aYK/RqjcG/F+UDdj43uoUOv8lSRC3lM4XpKLOVZfY/82yA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.11.tgz", - "integrity": "sha512-CPwhZd15PasQSlkFuZv1st37xvuBeklztfb9y2GZWLQu59zcMIDkZVSEz/TTIxzt811+eJfblg5HhP49iVVDWQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.11.tgz", - "integrity": "sha512-vbFn+0JXX6FkKq+0sNeA6aF2QhuOt9ZkBl+DSyqKIF+Ms58lUOhbqSwberKWQDm0udgOp3d/LhOFTYmpvmlZmA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.11.tgz", - "integrity": "sha512-1tqsIG6AySZ9njT8V2ddH1F/J01zX+0obPCpP0uD9TMIUlAA5WUF/+abFlnIsNY4jACcbN/13NUbLRWE9bayjw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.11.tgz", - "integrity": "sha512-Gqx2/nYqnK46dwEDPGv3SwLqgLIZQJ7m2xNoNRzO50VZPvoCWSUqDaoirrZZf7uVfl+fxHoZBcdQJx2gOdxffQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.11.tgz", - "integrity": "sha512-58FTdlgIQ3ZxFtGphjbIBmo7kfDhQih/PlfAnKraAcCDZOYXWcRFmHJtW+EVg32IIxuEAqhLAzCgrqpm5o8Wlw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.11.tgz", - "integrity": "sha512-L7hr6VnpqZzYEDVQeaViz1QnmfFRCRm3zVtljbYi/CU6InKs6tda1J3pAvqVsbNpbGMA9AvyiyBrgjJAFCawVg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.11.tgz", - "integrity": "sha512-Mk6TZij71alyS0FGuKEKYjTZGjUw2uXi07V/AiGZW1b5grTfGx6lpsbQdystgDJqju99Osq2Ix+C7WteSnwrHg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.11.tgz", - "integrity": "sha512-OKU0ajh9Xu7Pd1MlSq8Xqj5SJEV+4yVnALydPTDrrmTyvU72P8mTRJgZMilHw7H+Jqc0utryjNOwlJ/+fOkwGw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.11.tgz", - "integrity": "sha512-pr1/tdDfgQQ9hp2IskSKMuwkx2X4jR7iHLbqEmmj/lPLKeoa6AUulnglGY4y0OPo+0eAYd6DzWp7ve3KI4lOCA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.11.tgz", - "integrity": "sha512-2MCYdDBh9R+R1xuBFiApgkbp/tW1uV+aVeefKYqWSEk3o6MHzWo1FxEGA4dSnC+kThSBOMVpCV9z4/DPouA3bQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.11.tgz", - "integrity": "sha512-IyotdnRg0J8F9FKttYe3cy/M9ZJ5W/Gm6whH08sbXMxRVKs/TyyoqFIA8oT1MzR+si6GLlRpcF7JbUnOXssjPA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.11.tgz", - "integrity": "sha512-NUMtxvb0j41UL8yf8VnTMNbCQxKqIPmF0Wf/N44UrxpKE8iCNmWT95Wt98Ivr2ebHdz+V3kptlgBuZNYcJLI6g==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.11.tgz", - "integrity": "sha512-03/B26az/JezvVkgck+lhauP13t6RqzCQgnrkBCBrXXpX+2r02DfSU43BEhpErJrsrDA8GXSE/rvsfbGCX6OvA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.11.tgz", - "integrity": "sha512-Xs2tRB0fgly4XfC4FMv1Fd699AMEH8BClp36mzqRuVzm/285XIJaK5cPEZ9cLLn9ukNHdvvSX/83u5uS1BCd8g==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.11.tgz", - "integrity": "sha512-CiNialxsjJllrG3ggzOKzSaqQK/De/Mv4g/3r7jxLt01GLerPh0Q3TVTndFG9VfOrR1PdN7Fz5AOV3bE6Isd1Q==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.11.tgz", - "integrity": "sha512-PiljZi6QZ3Pz0pL8rfJqPln8F/a3mEJwh2vhBb1kDYLniLufo9/7AInb/ZyhvgR7FxUQluUYyz64owPomgaLJA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.11.tgz", - "integrity": "sha512-Nyk8aJM+w6NoS4RGQJ0ybb516jEIbEVlLvhRIdpCssUuqKU0lr9lJPHnFY2QqyoVaJkd6VxaHOBU/v/ieuiENQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.11.tgz", - "integrity": "sha512-shxBLdNJecr7KxuyZQ19idBU8x7Mq7m+N5Fj8ROWMWQbDdjSjlBPxz7EZJIxSh7FUgSMKl7qSCCVaczXrta4MQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.11.tgz", - "integrity": "sha512-vyTbfoEBn7cGXK8writbsB+G2wyRoOA+EbTNQ9cu5lyLU65sfWetCaL8T7mX338AN8tTbCYl6ce5YRKTonpA3w==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.11.tgz", - "integrity": "sha512-ATGCGc52LNqakUE9i54RzFC4lm70UTcTW721AFGjQotc6uCg7sf7QeRd05wD5tLBFafHdMSZv4rsU/Nh7LT/rQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.11.tgz", - "integrity": "sha512-7NcClJIctrO3iRu5CCqwdSBePm8bL2Iu1DYsuOnxuYJ+a1Kv3Wn3MzNdJIrUPLi1yADVwRliRUU/jtMC/tJnJA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", "dev": true, "optional": true }, @@ -1178,9 +1181,9 @@ "dev": true }, "@openzeppelin/contracts": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.8.0.tgz", - "integrity": "sha512-AGuwhRRL+NaKx73WKRNzeCxOCOCxpaqF+kp8TJ89QzAipSwZy/NoflkWaL9bywXFRhIzXt8j38sfF7KBKCPWLw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.8.1.tgz", + "integrity": "sha512-xQ6eUZl+RDyb/FiZe1h+U7qr/f4p/SrTSQcTPH2bjur3C5DbuW/zFgCU/b1P/xcIaEqJep+9ju4xDRi3rmChdQ==", "dev": true }, "@polka/url": { @@ -1190,33 +1193,44 @@ "dev": true }, "@sveltejs/adapter-auto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0.tgz", - "integrity": "sha512-yKyPvlLVua1bJ/42FrR3X041mFGdB4GzTZOAEoHUcNBRE5Mhx94+eqHpC3hNvAOiLEDcKfVO0ObyKSu7qldU+w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.0.0.tgz", + "integrity": "sha512-b+gkHFZgD771kgV3aO4avHFd7y1zhmMYy9i6xOK7m/rwmwaRO8gnF5zBc0Rgca80B2PMU1bKNxyBTHA14OzUAQ==", "dev": true, "requires": { "import-meta-resolve": "^2.2.0" } }, "@sveltejs/kit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.1.tgz", - "integrity": "sha512-C41aCaDjA7xoUdsrc/lSdU1059UdLPIRE1vEIRRynzpMujNgp82bTMHkDosb6vykH6LrLf3tT2w2/5NYQhKYGQ==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.8.3.tgz", + "integrity": "sha512-32tiLy5PPpt2lquK2p53/5wR+ghAXw0HymIBEezmwmwtzx7Xf36xw3RG3fDYQ9gyzon89T+JRweXgAv/qhhvSQ==", "dev": true, "requires": { "@sveltejs/vite-plugin-svelte": "^2.0.0", "@types/cookie": "^0.5.1", "cookie": "^0.5.0", - "devalue": "^4.2.0", + "devalue": "^4.3.0", "esm-env": "^1.0.0", "kleur": "^4.1.5", - "magic-string": "^0.27.0", + "magic-string": "^0.29.0", "mime": "^3.0.0", "sade": "^1.8.1", "set-cookie-parser": "^2.5.1", "sirv": "^2.0.2", "tiny-glob": "^0.2.9", - "undici": "5.14.0" + "undici": "5.20.0" + }, + "dependencies": { + "magic-string": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.29.0.tgz", + "integrity": "sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + } } }, "@sveltejs/vite-plugin-svelte": { @@ -1270,39 +1284,39 @@ "dev": true }, "devalue": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.2.0.tgz", - "integrity": "sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.0.tgz", + "integrity": "sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==", "dev": true }, "esbuild": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.11.tgz", - "integrity": "sha512-Al0hhRUz/cCDvDp9VZp1L500HZZQ/HLjgTnQTmnW97+PoLmw+PuvB3e19JHYZtWnrxoh3qYrN/0tiRIbrE2oVQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", "dev": true, "requires": { - "@esbuild/android-arm": "0.16.11", - "@esbuild/android-arm64": "0.16.11", - "@esbuild/android-x64": "0.16.11", - "@esbuild/darwin-arm64": "0.16.11", - "@esbuild/darwin-x64": "0.16.11", - "@esbuild/freebsd-arm64": "0.16.11", - "@esbuild/freebsd-x64": "0.16.11", - "@esbuild/linux-arm": "0.16.11", - "@esbuild/linux-arm64": "0.16.11", - "@esbuild/linux-ia32": "0.16.11", - "@esbuild/linux-loong64": "0.16.11", - "@esbuild/linux-mips64el": "0.16.11", - "@esbuild/linux-ppc64": "0.16.11", - "@esbuild/linux-riscv64": "0.16.11", - "@esbuild/linux-s390x": "0.16.11", - "@esbuild/linux-x64": "0.16.11", - "@esbuild/netbsd-x64": "0.16.11", - "@esbuild/openbsd-x64": "0.16.11", - "@esbuild/sunos-x64": "0.16.11", - "@esbuild/win32-arm64": "0.16.11", - "@esbuild/win32-ia32": "0.16.11", - "@esbuild/win32-x64": "0.16.11" + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" } }, "esm-env": { @@ -1423,9 +1437,9 @@ "dev": true }, "postcss": { - "version": "8.4.20", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", - "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "dev": true, "requires": { "nanoid": "^3.3.4", @@ -1444,6 +1458,15 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "rollup": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.2.tgz", + "integrity": "sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, "sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -1489,9 +1512,9 @@ "dev": true }, "svelte": { - "version": "3.55.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.0.tgz", - "integrity": "sha512-uGu2FVMlOuey4JoKHKrpZFkoYyj0VLjJdz47zX5+gVK5odxHM40RVhar9/iK2YFRVxvfg9FkhfVlR0sjeIrOiA==", + "version": "3.55.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz", + "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==", "dev": true }, "svelte-ethers-store": { @@ -1499,31 +1522,23 @@ "requires": { "@metamask/jazzicon": "^2.0.0", "ethereum-blockies-base64": "^1.0.2", - "ethers": "^5.7.2", - "lint-staged": "^13.1.0", + "ethers": "^6.0.4", + "lint-staged": "^13.1.2", "prettier-standard": "^16.4.1", - "release-it": "^15.5.1", + "release-it": "^15.6.0", "rollup": "^2.78.1", "rollup-plugin-dts": "^4.2.2", - "svelte": "^3.55.0", + "svelte": "^3.55.1", "svelte-proxied-store": "^1.1.5" } }, "svelte-highlight": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/svelte-highlight/-/svelte-highlight-6.2.1.tgz", - "integrity": "sha512-nZoweg5atreJHAJPaB0nca+r6YhDzbEJQrtKDO2mR/muEzsRKxMeSF3Q8BV0Au+T2jMWGBPwlBzA/tqv9yG9UQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/svelte-highlight/-/svelte-highlight-7.2.0.tgz", + "integrity": "sha512-mOJltSmozHNuaIE4tglrOBQ9X/8sKoQMJfqm+YZUuHvzfAcefWtZVDFml2oUrEv8iehM79mdA9+0orhUWIrxWw==", "dev": true, "requires": { - "highlight.js": "11.6.0" - }, - "dependencies": { - "highlight.js": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.6.0.tgz", - "integrity": "sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==", - "dev": true - } + "highlight.js": "11.7.0" } }, "svelte-hmr": { @@ -1550,36 +1565,25 @@ "dev": true }, "undici": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.14.0.tgz", - "integrity": "sha512-yJlHYw6yXPPsuOH0x2Ib1Km61vu4hLiRRQoafs+WUgX1vO64vgnxiCEN9dpIrhZyHFsai3F0AEj4P9zy19enEQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.20.0.tgz", + "integrity": "sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==", "dev": true, "requires": { "busboy": "^1.6.0" } }, "vite": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.3.tgz", - "integrity": "sha512-HvuNv1RdE7deIfQb8mPk51UKjqptO/4RXZ5yXSAvurd5xOckwS/gg8h9Tky3uSbnjYTgUm0hVCet1cyhKd73ZA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz", + "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==", "dev": true, "requires": { - "esbuild": "^0.16.3", + "esbuild": "^0.16.14", "fsevents": "~2.3.2", - "postcss": "^8.4.20", + "postcss": "^8.4.21", "resolve": "^1.22.1", - "rollup": "^3.7.0" - }, - "dependencies": { - "rollup": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.0.tgz", - "integrity": "sha512-nGGylpmblyjTpF4lEUPgmOw6OVxRvnI6Iuuh6Lz4O/X66cVOX1XJSsqP1YamxQ+mPuFE7qJxLFDSCk8rNv5dDw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - } + "rollup": "^3.10.0" } }, "vitefu": { diff --git a/example/package.json b/example/package.json index afa0855..af6eb4c 100644 --- a/example/package.json +++ b/example/package.json @@ -1,5 +1,5 @@ { - "name": "example", + "name": "ethers-svelte-example", "version": "0.0.1", "scripts": { "dev": "vite dev", @@ -10,15 +10,15 @@ "highlight.js": "^11.6.0" }, "devDependencies": { - "svelte-highlight": "^6.2.1", - "@openzeppelin/contracts": "^4.7.3", + "svelte-highlight": "^7.2.0", + "@openzeppelin/contracts": "^4.8.1", "svelte-ethers-store": "file:../", "@fontsource/fira-mono": "^4.5.10", "@neoconfetti/svelte": "^1.0.0", - "@sveltejs/adapter-auto": "^1.0.0", - "@sveltejs/kit": "^1.0.0", - "svelte": "^3.54.0", - "vite": "^4.0.0" + "@sveltejs/adapter-auto": "^2.0.0", + "@sveltejs/kit": "^1.8.3", + "svelte": "^3.55.1", + "vite": "^4.1.4" }, "type": "module" } diff --git a/example/src/lib/Providers.svelte b/example/src/lib/Providers.svelte index 398b9a5..9cd91aa 100644 --- a/example/src/lib/Providers.svelte +++ b/example/src/lib/Providers.svelte @@ -4,6 +4,11 @@ import { ethers } from 'ethers' + import Highlight from 'svelte-highlight' + import { xml } from "svelte-highlight/languages" + + import lightfair from "svelte-highlight/styles/lightfair" + import { connected, provider, @@ -29,13 +34,12 @@ LocalhostNull: () => evm.setProvider('http://127.0.0.1:8545', null), Gnosis: () => evm.setProvider('https://rpc.gnosischain.com'), Arbitrum: () => evm.setProvider('https://arb1.arbitrum.io/rpc'), - Infura: () => evm.setProvider(new ethers.providers.InfuraProvider('goerli'), null), - Etherscan: () => evm.setProvider(new ethers.providers.EtherscanProvider('goerli'), null), - Alchemy: () => evm.setProvider(new ethers.providers.AlchemyProvider('goerli'), null), - Clouflare: () => evm.setProvider(new ethers.providers.CloudflareProvider(), null), + Infura: () => evm.setProvider(new ethers.InfuraProvider('goerli'), null), + Etherscan: () => evm.setProvider(new ethers.EtherscanProvider('goerli'), null), + Alchemy: () => evm.setProvider(new ethers.AlchemyProvider('goerli'), null), + Clouflare: () => evm.setProvider(new ethers.CloudflareProvider(), null), } - - console.log(type, handler[type]) + console.log('[example]', type, handler[type]) await handler[type]() pending = false @@ -99,10 +103,10 @@ - - - - + + + + @@ -128,15 +132,30 @@
  • $chainData.name: {$chainData.name}
  • -

    await is also possible

    +

    you may also use await

    -

    + {#await network} waiting... {:then value} - {JSON.stringify(value)} + connected to {value.name}[{value.chainId}] {/await} + {#await account} + waiting... + {:then value} + with {#if value}account {value}{:else}no account{/if} + {/await} +

    \n\n`} /> + + generates + +

    + {#await network} + waiting... + {:then value} + connected to {value.name}[{value.chainId}] + {/await} {#await account} waiting... @@ -145,7 +164,7 @@ {/await}

    - {/if} + {/if} diff --git a/rollup.config.js b/rollup.config.js index a4addc4..9cdea93 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -9,8 +9,8 @@ export default [ ] }, { - input: "./src/svelte-ethers-store.d.ts", - output: [{ file: "dist/svelte-ethers-store.d.ts", format: "es" }], + input: "./src/ethers-svelte.d.ts", + output: [{ file: "dist/ethers-svelte.d.ts", format: "es" }], plugins: [dts()], }, ] diff --git a/src/svelte-ethers-store.d.ts b/src/ethers-svelte.d.ts similarity index 100% rename from src/svelte-ethers-store.d.ts rename to src/ethers-svelte.d.ts diff --git a/src/stores.js b/src/stores.js index f42f86d..79ac977 100644 --- a/src/stores.js +++ b/src/stores.js @@ -1,6 +1,5 @@ - -import { ethers, utils } from 'ethers' +import { ethers } from 'ethers' import { proxied } from 'svelte-proxied-store' import { derived } from 'svelte/store' @@ -20,23 +19,21 @@ const getGlobalObject = () => { if (typeof global !== 'undefined') { return global } - throw new Error('[svelte-ethers-store] cannot find the global object') + throw new Error('[ethers-svelte] cannot find the global object') } const getWindowEthereum = () => { try { if (getGlobalObject().ethereum) return getGlobalObject().ethereum } catch (err) { - console.error('[svelte-ethers-store] no globalThis.ethereum object') + console.error('[ethers-svelte] no globalThis.ethereum object') } } -// always get chainId as number -const alwaysNumber = n => utils.isHexString(n) ? parseInt(n, 16) : n - export const createStore = () => { const { emit, get, subscribe, assign, deleteAll } = proxied() + // BrowserProvider const switch1193Provider = async ({ chainId, signerAddress, // not used @@ -49,13 +46,14 @@ export const createStore = () => { return } if (!chainId) { - chainId = alwaysNumber((await get('provider').getNetwork()).chainId) + chainId = (await get('provider').getNetwork()).chainId } - const signer = get('provider').getSigner(addressOrIndex) + // BrowserProvider doesn't take account argument + const signer = await (get('provider') instanceof ethers.BrowserProvider ? get('provider').getSigner() : get('provider').getSigner(addressOrIndex)) try { signerAddress = await signer.getAddress() } catch (e) { - console.warn('[svelte-ethers-store] '+e) + console.warn('[ethers-svelte] '+e) } assign({ connected: true, @@ -71,7 +69,7 @@ export const createStore = () => { addressOrIndex: Array.isArray(accounts) && accounts.length ? accounts[0] : 0 }) - const chainChangedHandler = (eipProvider, addressOrIndex) => chainId => set1193Provider(eipProvider, addressOrIndex, alwaysNumber(chainId)) + const chainChangedHandler = (eipProvider, addressOrIndex) => chainId => set1193Provider(eipProvider, addressOrIndex, BigInt(chainId)) // TODO better error support ? const disconnectHandler = error => switch1193Provider({ error }) @@ -97,14 +95,14 @@ export const createStore = () => { try { accounts = await eipProvider.request({ method: 'eth_requestAccounts' }) } catch (e) { - console.warn('[svelte-ethers-store] non compliant 1193 provider') + console.warn('[ethers-svelte] non compliant 1193 provider') // some provider may store accounts directly like walletconnect accounts = eipProvider.accounts } if (addressOrIndex == null && Array.isArray(accounts) && accounts.length) { addressOrIndex = accounts[0] } - const provider = new ethers.providers.Web3Provider(eipProvider) + const provider = new ethers.BrowserProvider(eipProvider) assign({ provider, eipProvider, @@ -123,7 +121,7 @@ export const createStore = () => { if (!provider) { if (!getWindowEthereum()) throw new Error( - '[svelte-ethers-store] Please authorize browser extension (Metamask or similar)' + '[ethers-svelte] Please authorize browser extension (Metamask or similar)' ) getWindowEthereum().autoRefreshOnNetworkChange = false return set1193Provider(getWindowEthereum()) @@ -134,28 +132,29 @@ export const createStore = () => { if ( typeof provider !== 'object' || (!( - Object.getPrototypeOf(provider) instanceof ethers.providers.BaseProvider + Object.getPrototypeOf(provider) instanceof ethers.AbstractProvider ) && !( Object.getPrototypeOf(provider) instanceof - ethers.providers.UrlJsonRpcProvider + ethers.UrlJsonRpcProvider )) ) { - provider = new ethers.providers.JsonRpcProvider(provider) + provider = new ethers.JsonRpcProvider(provider) } const { chainId } = await provider.getNetwork() let signer, signerAddress if (addressOrIndex !== null) { try { + signer = await provider.getSigner(addressOrIndex) // XXX some providers do not support getSigner - if (typeof provider.listAccounts === 'function') { - signer = provider.getSigner(addressOrIndex) - } else { - signer = provider.getSigner() - } + // if (typeof provider.listAccounts === 'function') { + // signer = await provider.getSigner(addressOrIndex) + // } else { + // signer = await provider.getSigner() + // } signerAddress = await signer.getAddress() } catch (e) { - console.warn('[svelte-ethers-store] '+e) + console.warn('[ethers-svelte] '+e) } } assign({ @@ -163,21 +162,18 @@ export const createStore = () => { signerAddress, provider, connected: true, - chainId: alwaysNumber(chainId), + chainId: BigInt(chainId), evmProviderType: provider.constructor.name }) emit() } - const setBrowserProvider = () => setProvider() - const disconnect = async () => { init() emit() } return { - setBrowserProvider, setProvider, disconnect, subscribe, @@ -208,7 +204,7 @@ const noData = { rpc: [], explorers: [{}], faucets: [], nativeCurrency: {} } const getData = id => { for (const data of chains) { - if (data.chainId === id) return data + if (BigInt(data.chainId) === id) return data } return noData } @@ -237,7 +233,7 @@ export const makeEvmStores = name => { allStores[name].provider = derived(evmStore, $evmStore => $evmStore.provider) allStores[name].chainId = derived(evmStore, $evmStore => $evmStore.chainId) allStores[name].chainData = derived(evmStore, $evmStore => - $evmStore.chainId ? getData(alwaysNumber($evmStore.chainId)) : {} + $evmStore.chainId ? getData(BigInt($evmStore.chainId)) : {} ) allStores[name].signer = derived(evmStore, $evmStore => $evmStore.signer) @@ -277,7 +273,7 @@ export const makeEvmStores = name => { property = property.slice(1) if (subStoreNames.includes(property)) return allStores[name].get(property) - throw new Error(`[svelte-ethers-store] no store named ${property}`) + throw new Error(`[ethers-svelte] no store named ${property}`) } if (property === 'attachContract') return registry.attachContract if ( @@ -289,7 +285,7 @@ export const makeEvmStores = name => { ].includes(property) ) return Reflect.get(internal, property) - throw new Error(`[svelte-ethers-store] no store named ${property}`) + throw new Error(`[ethers-svelte] no store named ${property}`) } }) } @@ -297,7 +293,7 @@ export const makeEvmStores = name => { export const getChainStore = name => { if (!allStores[name]) - throw new Error(`[svelte-ethers-store] chain store ${name} does not exist`) + throw new Error(`[ethers-svelte] chain store ${name} does not exist`) return allStores[name] }