From 815a7ea9cfb1e613ddb6ae91b252bcb33bc909eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 04:00:41 +0000 Subject: [PATCH 01/46] chore(deps): bump actions/deploy-pages from 1 to 2 Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 1 to 2. - [Release notes](https://github.com/actions/deploy-pages/releases) - [Commits](https://github.com/actions/deploy-pages/compare/v1...v2) --- updated-dependencies: - dependency-name: actions/deploy-pages dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/tn.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tn.yml b/.github/workflows/tn.yml index 9f460189..847c6a1b 100644 --- a/.github/workflows/tn.yml +++ b/.github/workflows/tn.yml @@ -47,4 +47,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v2 From 33e7bb21ee6f0d7ccc1520e6efb7db588d7c5795 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 03:58:58 +0000 Subject: [PATCH 02/46] chore(deps-dev): bump terser-webpack-plugin from 5.3.6 to 5.3.7 Bumps [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) from 5.3.6 to 5.3.7. - [Release notes](https://github.com/webpack-contrib/terser-webpack-plugin/releases) - [Changelog](https://github.com/webpack-contrib/terser-webpack-plugin/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/terser-webpack-plugin/compare/v5.3.6...v5.3.7) --- updated-dependencies: - dependency-name: terser-webpack-plugin dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 54 +++++++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e44c000..0d56bc0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15328,9 +15328,9 @@ } }, "node_modules/terser": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", - "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", + "version": "5.16.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.8.tgz", + "integrity": "sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", @@ -15346,16 +15346,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" }, "engines": { "node": ">= 10.13.0" @@ -15402,6 +15402,15 @@ "node": ">= 10.13.0" } }, + "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/terser-webpack-plugin/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -28749,9 +28758,9 @@ } }, "terser": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", - "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", + "version": "5.16.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.8.tgz", + "integrity": "sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -28773,16 +28782,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" }, "dependencies": { "has-flag": { @@ -28802,6 +28811,15 @@ "supports-color": "^8.0.0" } }, + "serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", From 81d844a88757d45f0dcf348218dbadda2b8f4ebf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 04:00:11 +0000 Subject: [PATCH 03/46] chore(deps-dev): bump style-loader from 3.3.1 to 3.3.2 Bumps [style-loader](https://github.com/webpack-contrib/style-loader) from 3.3.1 to 3.3.2. - [Release notes](https://github.com/webpack-contrib/style-loader/releases) - [Changelog](https://github.com/webpack-contrib/style-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/style-loader/compare/v3.3.1...v3.3.2) --- updated-dependencies: - dependency-name: style-loader dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e44c000..57807f6d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15225,9 +15225,9 @@ } }, "node_modules/style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.2.tgz", + "integrity": "sha512-RHs/vcrKdQK8wZliteNK4NKzxvLBzpuHMqYmUVWeKa6MkaIQ97ZTOS0b+zapZhy6GcrgWnvWYCMHRirC3FsUmw==", "dev": true, "engines": { "node": ">= 12.13.0" @@ -28680,9 +28680,9 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.2.tgz", + "integrity": "sha512-RHs/vcrKdQK8wZliteNK4NKzxvLBzpuHMqYmUVWeKa6MkaIQ97ZTOS0b+zapZhy6GcrgWnvWYCMHRirC3FsUmw==", "dev": true, "requires": {} }, From 8f4e3bccff4be77fde88e01f0d832bad0d6d8015 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 04:02:41 +0000 Subject: [PATCH 04/46] chore(deps-dev): bump eslint from 8.31.0 to 8.38.0 Bumps [eslint](https://github.com/eslint/eslint) from 8.31.0 to 8.38.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.31.0...v8.38.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 163 +++++++++++++++++++++++++++++++--------------- 1 file changed, 111 insertions(+), 52 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1c930c29..90e2fcf0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1730,15 +1730,39 @@ "node": ">=10.0.0" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.5.1", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -1760,9 +1784,9 @@ "dev": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1798,6 +1822,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/js": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", + "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@ethereumjs/common": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", @@ -7491,12 +7524,15 @@ } }, "node_modules/eslint": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", - "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", + "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.4.1", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.38.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -7507,10 +7543,9 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", @@ -7531,7 +7566,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -7599,12 +7633,15 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/ansi-styles": { @@ -7803,14 +7840,14 @@ } }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "dev": true, "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -7833,9 +7870,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -18221,15 +18258,30 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "dev": true + }, "@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.5.1", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -18245,9 +18297,9 @@ "dev": true }, "globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -18270,6 +18322,12 @@ } } }, + "@eslint/js": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", + "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", + "dev": true + }, "@ethereumjs/common": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", @@ -22779,12 +22837,15 @@ } }, "eslint": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", - "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", + "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.4.1", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.38.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -22795,10 +22856,9 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", @@ -22819,7 +22879,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -22991,20 +23050,20 @@ } }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "dev": true }, "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "dev": true, "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.0" } }, "esprima": { @@ -23014,9 +23073,9 @@ "dev": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" From 40f3dfb8298f281173cd6e52746489a4ae88def0 Mon Sep 17 00:00:00 2001 From: snowwhitedev Date: Tue, 11 Apr 2023 16:32:29 +0700 Subject: [PATCH 05/46] feat: register solana provider && add event listeners for phantom --- src/wallet/Web3WalletProvider.ts | 35 +++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/src/wallet/Web3WalletProvider.ts b/src/wallet/Web3WalletProvider.ts index b991ec27..d3bf28cc 100644 --- a/src/wallet/Web3WalletProvider.ts +++ b/src/wallet/Web3WalletProvider.ts @@ -269,6 +269,33 @@ export class Web3WalletProvider { return accounts[0] } + private async registerSolanaProvider(provider: any, providerName: string) { + const connection = await provider.connect() + const accountAddress: string = connection.publicKey.toBase58() + + this.registerNewWalletAddress(accountAddress, 'mainnet-beta', providerName, provider, 'solana') + + provider.on('disconnect', () => { + this.client.disconnectWallet() + }) + + provider.on('accountChanged', (publicKey) => { + if (publicKey) { + // Set new public key and continue as usual + const newAccountAddress = publicKey.toBase58() + this.registerNewWalletAddress(newAccountAddress, 'mainnet-beta', providerName, provider, 'solana') + this.saveConnections() + + this.emitSavedConnection(newAccountAddress) + + this.client.getTokenStore().clearCachedTokens() + this.client.enrichTokenLookupDataOnChainTokens() + } + }) + + return accountAddress + } + async MetaMask(checkConnectionOnly: boolean) { logger(2, 'connect MetaMask') @@ -395,13 +422,7 @@ export class Web3WalletProvider { logger(2, 'connect Phantom') if (typeof window.solana !== 'undefined') { - const connection = await window.solana.connect() - - const accountAddress: string = connection.publicKey.toBase58() - - // mainnet-beta - // TODO: Create registerSolanaProvider method to create event listeners (see registerEvmProvider) - return this.registerNewWalletAddress(accountAddress, 'mainnet-beta', 'phantom', window.solana, 'solana') + return await this.registerSolanaProvider(window.solana, 'phantom') } else { throw new Error('Phantom is not available. Please check the extension is supported and active.') } From 44858b4c2faba945e265910423fba5c7a26e795d Mon Sep 17 00:00:00 2001 From: snowwhitedev Date: Thu, 13 Apr 2023 20:34:24 +0700 Subject: [PATCH 06/46] re: remove comments && deprecated codes --- src/client/auth/attestedAddress.ts | 6 --- src/client/auth/safeConnectChallenge.ts | 1 - src/client/auth/signedUNChallenge.ts | 3 +- src/client/auth/ticketZKProof.ts | 3 -- src/client/index.ts | 47 ++------------------ src/client/interface.ts | 2 - src/client/tokenStore.ts | 9 +--- src/client/ui.ts | 7 --- src/client/views/icon-view.ts | 1 - src/client/views/select-issuers.ts | 36 ++++----------- src/client/views/token-list.ts | 14 ++---- src/client/views/utils/wallet-info.ts | 2 - src/client/views/view-interface.ts | 4 +- src/core/messaging.ts | 10 +---- src/index.ts | 1 - src/outlet/auth-handler.ts | 36 +-------------- src/outlet/index.ts | 58 ------------------------- src/outlet/localOutlet.ts | 2 - src/utils/index.ts | 2 - src/wallet/FlowProvider.ts | 4 -- src/wallet/Web3WalletProvider.ts | 30 +++---------- 21 files changed, 25 insertions(+), 253 deletions(-) diff --git a/src/client/auth/attestedAddress.ts b/src/client/auth/attestedAddress.ts index 6890889a..443bb199 100644 --- a/src/client/auth/attestedAddress.ts +++ b/src/client/auth/attestedAddress.ts @@ -30,7 +30,6 @@ export class AttestedAddress extends AbstractAuthentication implements Authentic if (!currentProof) { if (wallet.provider instanceof SafeConnectProvider) { - // This will request and save a new challenge from safe connect await wallet.provider.initSafeConnect() currentProof = this.getSavedProof(wallet.address) } else { @@ -38,16 +37,11 @@ export class AttestedAddress extends AbstractAuthentication implements Authentic let signature = await web3WalletProvider.signMessage(wallet.address, challenge.messageToSign) - // this.getUi().showLoader("Issuing Attestation"); - let serverPayload = { type: 'address_attest', subject: await SafeConnect.getLinkPublicKey(), address: wallet.address, signature: signature, - /* data: { - context: data.context - }*/ } let attest = await SafeConnect.getAttestation(web3WalletProvider.safeConnectOptions.url, serverPayload) diff --git a/src/client/auth/safeConnectChallenge.ts b/src/client/auth/safeConnectChallenge.ts index 9c532ee7..62bde49d 100644 --- a/src/client/auth/safeConnectChallenge.ts +++ b/src/client/auth/safeConnectChallenge.ts @@ -34,7 +34,6 @@ export class SafeConnectChallenge extends AbstractAuthentication implements Auth let walletConnection = web3WalletProvider.getConnectedWalletData('evm')?.[0].provider if (walletConnection instanceof SafeConnectProvider) { - // This will request and save a new challenge from safe connect await safeConnect.initSafeConnect() currentProof = this.getSavedProof(address) diff --git a/src/client/auth/signedUNChallenge.ts b/src/client/auth/signedUNChallenge.ts index 472d817a..c5f22699 100644 --- a/src/client/auth/signedUNChallenge.ts +++ b/src/client/auth/signedUNChallenge.ts @@ -16,7 +16,7 @@ export class SignedUNChallenge extends AbstractAuthentication implements Authent let web3WalletProvider = await this.client.getWalletProvider() // TODO: Update once Flow & Solana signing support is added - let connection = web3WalletProvider.getSingleSignatureCompatibleConnection(); + let connection = web3WalletProvider.getSingleSignatureCompatibleConnection() if (!connection) { throw new Error('WALLET_REQUIRED') } @@ -62,7 +62,6 @@ export class SignedUNChallenge extends AbstractAuthentication implements Authent signature = await web3WalletProvider.signMessage(address, challenge.messageToSign) } - // Check that recovered address matches the signature of the requested address challenge.signature = signature challenge.blockchain = connection.blockchain if (!(await UN.verifySignature(challenge))) { diff --git a/src/client/auth/ticketZKProof.ts b/src/client/auth/ticketZKProof.ts index bad74d74..e5e5c1fe 100644 --- a/src/client/auth/ticketZKProof.ts +++ b/src/client/auth/ticketZKProof.ts @@ -70,9 +70,6 @@ export class TicketZKProof extends AbstractAuthentication implements Authenticat redirectMode, ) - // Since sendMessage can return void in case of redirect, we need a promise here to prevent an exception. - // We presume the redirect will be completed after 30 seconds. We could change the "authenticate" function - // public interface to return void, but this would change the API which is not desired for obvious reasons. if (!res) { return new Promise((resolve, reject) => { setTimeout(() => { diff --git a/src/client/index.ts b/src/client/index.ts index d232c762..0f40c9b3 100644 --- a/src/client/index.ts +++ b/src/client/index.ts @@ -9,7 +9,6 @@ import { OnChainTokenConfig, AuthenticateInterface, NegotiationInterface, - SolanaIssuerConfig, TokenNegotiatorEvents, EventSenderTokenProof, EventSenderTokensSelected, @@ -58,7 +57,6 @@ export const defaultConfig: NegotiationInterface = { issuers: [], uiOptions: { uiType: 'popup', - // value ".overlay-tn" hardcoded in ui.ts containerElement: '.overlay-tn', openingHeading: 'Validate your token ownership for access', issuerHeading: 'Detected tokens', @@ -72,12 +70,7 @@ export const defaultConfig: NegotiationInterface = { tokenPersistenceTTL: 600, unSupportedUserAgent: { authentication: { - config: { - // metaMaskAndroid: true, - // alphaWalletAndroid: true, - // mewAndroid: true, - // imTokenAndroid: true, - }, + config: {}, errorMessage: NOT_SUPPORTED_ERROR, }, full: { @@ -107,7 +100,6 @@ export enum ClientErrorMessage { } export class Client { - private negotiateAlreadyFired: boolean public issuersLoaded: boolean public config: NegotiationInterface private web3WalletProvider: Web3WalletProvider @@ -139,8 +131,6 @@ export class Client { this.config = this.mergeConfig(defaultConfig, config) - this.negotiateAlreadyFired = false - this.tokenStore = new TokenStore(this.config.autoEnableTokens, this.config.tokenPersistenceTTL) if (this.config.issuers?.length > 0) this.tokenStore.updateIssuers(this.config.issuers) @@ -244,12 +234,9 @@ export class Client { public hasIssuerForBlockchain(blockchain: 'evm' | 'solana' | 'flow') { return ( this.config.issuers.filter((issuer: OnChainTokenConfig) => { - // EVM should always be active when we have off-chain attestations as it's used for UN challenge signing if (blockchain === 'evm' && !issuer.onChain) return true - // window.solana must be defined if solana module imported if (blockchain === 'solana' && typeof window.solana === 'undefined') return false - // Defaults to evm if blockchain isn't specified and is an onchain token return (issuer.blockchain ? issuer.blockchain.toLowerCase() : 'evm') === blockchain }).length > 0 ) @@ -400,7 +387,6 @@ export class Client { if (this.ui.viewIsNotStart() && this.tokenStore.hasUnloadedIssuers()) { this.enrichTokenLookupDataOnChainTokens() } else { - // Main screen may be shown so it requires an update event though tokens are already loaded for the updated issuers this.triggerUiUpdateCallback(UIUpdateEventType.ISSUERS_LOADED) } } else { @@ -409,7 +395,6 @@ export class Client { autoOpenPopup = true } - // emit existing cached tokens if (this.config.autoEnableTokens && Object.keys(this.tokenStore.getSelectedTokens()).length) this.eventSender('tokens-selected', { selectedTokens: this.tokenStore.getSelectedTokens(), @@ -475,16 +460,9 @@ export class Client { if (new URL(issuerConfig.tokenOrigin).origin === document.location.origin) { tokens = this.loadLocalOutletTokens(issuerConfig) } else { - // Check response URL for redirect result for this issuer. let responseIssuer = this.getDataFromQuery('issuer') - if ( - (action === OutletAction.GET_ISSUER_TOKENS + '-response' || - // have to read tokens from "proof-callback" action, - // in other way page will be redirected in loop - action === 'proof-callback') && - issuer === responseIssuer - ) { + if ((action === OutletAction.GET_ISSUER_TOKENS + '-response' || action === 'proof-callback') && issuer === responseIssuer) { let responseTokensEncoded = this.getDataFromQuery('tokens') try { tokens = JSON.parse(responseTokensEncoded) @@ -626,10 +604,6 @@ export class Client { tokens[issuer] = { tokens: tokens[issuer] } } - // function loggingIdentity(arg: Type): Type { - // console.log(arg.length); // Now we know it has a .length property, so no more error - // return arg; - // } this.eventSender('tokens', tokens) this.eventSender('tokens-loaded', { loadedCollections: Object.keys(tokens).length }) @@ -710,8 +684,6 @@ export class Client { const redirectRequired = shouldUseRedirectMode(this.config.offChainRedirectMode) - // When using redirect mode, in order to prevent loops, we set tokens to a null array before redirecting. - // This will ensure that if the page fails to load or the user rejects the request, they will need to manually refresh to try again if (redirectRequired) this.tokenStore.setTokens(issuer.collectionID, []) const res = await this.messaging.sendMessage( @@ -865,7 +837,6 @@ export class Client { this.eventSender('token-proof', { issuer, error: err, data: null }) } - // eventSender overrides async eventSender(eventName: 'loaded', data: EventSenderViewLoaded) async eventSender(eventName: 'tokens-refreshed', data: EventSenderTokensRefreshed) async eventSender(eventName: 'closed-overlay', data: EventSenderClosedOverlay) @@ -892,11 +863,7 @@ export class Client { let issuerConfig = allIssuers[key] as OffChainTokenConfig try { - if ( - new URL(issuerConfig.tokenOrigin).origin === origin - // should not be 2 tokens with same origin - // && issuerConfig.collectionID == issuer - ) { + if (new URL(issuerConfig.tokenOrigin).origin === origin) { currentIssuers.push(issuerConfig) } } catch (err) { @@ -925,7 +892,6 @@ export class Client { logger(2, err) } - // if any issuerConfig missing tokenOrigin or something wrong then skip sameOrigin flow if (!thisOneSameOrigin) { onlySameOriginFlag = false } @@ -960,7 +926,6 @@ export class Client { }) // Site is redirecting if (res.evt === OutletResponseAction.ISSUER_TOKENS) { - // Store tokens if origin exists in config - this is a workaround for devcon const issuerConfig = this.getOutletConfigForCurrentOrigin(url.origin) if (issuerConfig) this.tokenStore.setTokens(issuerConfig.collectionID, res.data.tokens) @@ -974,12 +939,10 @@ export class Client { on(type: TokenNegotiatorEvents, callback?: any, data?: any) { requiredParams(type, 'Event type is not defined') - // try to read tokens when listener attached if ((type === 'tokens' || type === 'tokens-selected') && callback) { this.readTokensFromUrl() } - // read token-proof only when callback attached ( init listener by user ) if (type === 'token-proof' && callback) { logger(2, 'token-proof listener atteched. check URL HASH for proof callbacks.') @@ -1002,12 +965,8 @@ export class Client { } if (callback) { - // assign callback reference to web developers event e.g. negotiator.on('tokens', (tokensForWebPage) => { ... })); - this.clientCallBackEvents[type] = callback } else { - // event types: 'tokens', 'tokens-selected', 'proof' - if (this.clientCallBackEvents[type]) { return this.clientCallBackEvents[type].call(type, data) } diff --git a/src/client/interface.ts b/src/client/interface.ts index d3066bd9..947419ce 100644 --- a/src/client/interface.ts +++ b/src/client/interface.ts @@ -4,7 +4,6 @@ import { SafeConnectOptions } from '../wallet/SafeConnectProvider' import { BrowserDataInterface } from '../utils/support/isSupported' import { WalletConnection } from '../wallet/Web3WalletProvider' -// add new blockchain to both rows export type SupportedBlockchainsParam = 'evm' | 'flow' | 'solana' export const SignatureSupportedBlockchainsParamList = ['evm', 'flow', 'solana'] @@ -55,7 +54,6 @@ export interface NegotiationInterface { autoEnableTokens?: boolean messagingForceTab?: boolean safeConnectOptions?: SafeConnectOptions - // force enable/disable redirect mode. The default (undefined) is to only use redirect for browsers where iframes are not possible. offChainRedirectMode?: 'always' | 'never' tokenPersistenceTTL?: number unSupportedUserAgent?: { diff --git a/src/client/tokenStore.ts b/src/client/tokenStore.ts index d48c995b..2c1500a9 100644 --- a/src/client/tokenStore.ts +++ b/src/client/tokenStore.ts @@ -23,10 +23,8 @@ export class TokenStore { private currentIssuers: { [issuer: string]: boolean } = {} // mapping of issuer to on/off chain - // Cached token data private tokenData: TokenLookup = {} - // Cached issuer data for contract level metadata private tokenLookup: IssuerLookup = {} // TODO: change to disabled tokens @@ -57,7 +55,7 @@ export class TokenStore { } } - this.saveTokenStore() // Save data without expired entries + this.saveTokenStore() } private saveTokenStore() { @@ -205,7 +203,6 @@ export class TokenStore { this.selectedTokens[issuer.collectionID] = { tokens: this.tokenData[issuer.collectionID].tokens } } - // Don't overwrite config of existing/cached issuers if (!this.tokenLookup[issuer.collectionID]) this.updateTokenLookupStore(issuer.collectionID, issuer, false) collectionIds[issuer.collectionID] = issuer.onChain @@ -213,10 +210,6 @@ export class TokenStore { this.currentIssuers = collectionIds } - // To enrich the token lookup store with data. - // for on chain tokens that are not using token script this is - // required, for off chain this is most likely not required because the configurations - // are already pre-defined e.g. title, issuer image image etc. public updateTokenLookupStore(tokenKey: string, data: OnChainTokenConfig | OffChainTokenConfig, save = true) { this.tokenLookup[tokenKey] = { ...this.tokenLookup[tokenKey], ...data, timestamp: Date.now() } diff --git a/src/client/ui.ts b/src/client/ui.ts index 04df8a43..655b155b 100644 --- a/src/client/ui.ts +++ b/src/client/ui.ts @@ -209,7 +209,6 @@ export class Ui implements UiInterface { openOverlay() { if (this.options.uiType === 'inline') return - // Prevent out-of-popup click from closing the popup straight away setTimeout(() => { this.client.eventSender('opened-overlay', null) this.popupContainer.classList.add('open') @@ -244,7 +243,6 @@ export class Ui implements UiInterface { if (data?.viewName) viewName = data.viewName } - // Manually specified view options can override ones set in the viewOverrides config if (options) viewOptions = { ...viewOptions, ...options } if (!this.viewContainer) { @@ -252,7 +250,6 @@ export class Ui implements UiInterface { return } - // Setup state transition let transitionClass let oldViewRef @@ -261,10 +258,8 @@ export class Ui implements UiInterface { if (viewOptions?.viewTransition && AVAILABLE_TRANSITIONS.indexOf(viewOptions?.viewTransition) > -1) { transitionClass = viewOptions?.viewTransition + '-tn' - // Keep reference to old view for cleanup oldViewRef = this.viewContainer - // Inset new view container - add transition class to ensure it's out of frame const newViewContainer = document.createElement('div') this.transitionContainer.classList.add(transitionClass) @@ -276,7 +271,6 @@ export class Ui implements UiInterface { this.transitionContainer.appendChild(newViewContainer) } - // Set new viewContainer ref this.viewContainer = newViewContainer } @@ -310,7 +304,6 @@ export class Ui implements UiInterface { this.transitionContainer.classList.remove('slide-in', transitionClass) }, 300) - // Add transition start class into viewport to start animation this.transitionContainer.classList.add('slide-in') } diff --git a/src/client/views/icon-view.ts b/src/client/views/icon-view.ts index 0f98bf96..4ccd9e7d 100644 --- a/src/client/views/icon-view.ts +++ b/src/client/views/icon-view.ts @@ -12,7 +12,6 @@ export class IconView { let image if (src && src !== 'undefined') { - // Create image elements and add onload/onerror events image = document.createElement('img') image.loading = 'lazy' image.addEventListener('load', (e: Event) => { diff --git a/src/client/views/select-issuers.ts b/src/client/views/select-issuers.ts index a2999356..0353a25a 100644 --- a/src/client/views/select-issuers.ts +++ b/src/client/views/select-issuers.ts @@ -174,15 +174,12 @@ export class SelectIssuers extends AbstractView { issuerConnectMarkup(title: string, image: string | undefined, issuer: string, tokens: any[], data: Issuer) { let buttonText = '' - if (tokens?.length) - buttonText = data?.fungible ? 'Balance found' : `${tokens.length} token${tokens.length > 1 ? 's' : ''} available` + if (tokens?.length) buttonText = data?.fungible ? 'Balance found' : `${tokens.length} token${tokens.length > 1 ? 's' : ''} available` return `