From c9dc866266b51024591eaeb6fe142e489f883b45 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Thu, 5 Oct 2023 14:03:09 -0400 Subject: [PATCH 01/25] chore: add vercel as dev dep --- package.json | 2 + yarn.lock | 662 +++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 618 insertions(+), 46 deletions(-) diff --git a/package.json b/package.json index 9f3428a34..1832fd970 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "typescript": "^4.1.2" }, "scripts": { + "vc:dev": "yarn vercel dev", "start": "export REACT_APP_GIT_COMMIT_HASH=$(git rev-parse HEAD) && vite", "dev": "export REACT_APP_GIT_COMMIT_HASH=$(git rev-parse HEAD) && vite --port $PORT", "build": "export REACT_APP_GIT_COMMIT_HASH=$(git rev-parse HEAD) && tsc && vite build", @@ -143,6 +144,7 @@ "ts-jest": "^29.1.1", "ts-node": "^10.9.1", "tsconfig-paths-webpack-plugin": "^4.0.0", + "vercel": "^32.4.1", "vite": "^4.3.9", "vite-plugin-environment": "^1.1.3", "vite-plugin-eslint": "^1.8.1", diff --git a/yarn.lock b/yarn.lock index 0b72a21cd..59b0968a7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2825,11 +2825,33 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@edge-runtime/cookies@3.4.1": + version "3.4.1" + resolved "https://registry.yarnpkg.com/@edge-runtime/cookies/-/cookies-3.4.1.tgz#c725e7ae92c89d11ee7c6a316d8d5b1445dfe33c" + integrity sha512-z27BvgPxI73CgSlxU/NAUf1Q/shnqi6cobHEowf6VuLdSjGR3NjI2Y5dZUIBbK2zOJVZbXcHsVzJjz8LklteFQ== + +"@edge-runtime/format@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@edge-runtime/format/-/format-2.2.0.tgz#00b54a2b659f9ec835e1f995d58bb3dcc0b5ccef" + integrity sha512-gPrS6AVw/qJJL0vcxMXv4kFXCU3ZTCD1uuJpwX15YxHV8BgU9OG5v9LrkkXcr96PBT/9epypfNJMhlWADuEziw== + "@edge-runtime/format@^1.1.0-beta.23": version "1.1.0-beta.31" resolved "https://registry.yarnpkg.com/@edge-runtime/format/-/format-1.1.0-beta.31.tgz#58f945ad8e437a660d038da73f5a5802fc81cecd" integrity sha512-tUZy+LMls1TivqVb7dbC0C0IMNjwP55co6vSkTgXCl9xFos3v43bCwAzivMaJ3NR8ZuihvK1gEj8CmvoqvOt0g== +"@edge-runtime/node-utils@2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@edge-runtime/node-utils/-/node-utils-2.2.1.tgz#c6e59d498c49be91d3baf05bab94cad5506547fe" + integrity sha512-RUl/439BHKshkhSGFRlZ1kzy68wL4mn8VNKDSZr3p0tciyZ33Mjfpl+vofqnHqXRmDI6nLnZpfJvhY3D88o0pA== + dependencies: + "@edge-runtime/cookies" "3.4.1" + +"@edge-runtime/primitives@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@edge-runtime/primitives/-/primitives-3.1.1.tgz#45c97f492ad06272136024122c4b639241f9b0f9" + integrity sha512-ROO22py+KdAfzqWZu6CtVMC4qV6mS0W1jPI51jGXE+uenyBUN7cQTWB9ReQc8Bm4cnjqmhajvpqEx3j7Y9iSOg== + "@edge-runtime/primitives@^1.1.0-beta.23", "@edge-runtime/primitives@^1.1.0-beta.31": version "1.1.0-beta.31" resolved "https://registry.yarnpkg.com/@edge-runtime/primitives/-/primitives-1.1.0-beta.31.tgz#f0e52f0ab77b088e6a45988afcccb07d663b3b33" @@ -2842,6 +2864,13 @@ dependencies: "@edge-runtime/primitives" "^1.1.0-beta.23" +"@edge-runtime/vm@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@edge-runtime/vm/-/vm-3.1.1.tgz#1693bd43ceffb28eb34b852f375eb939d9ec134c" + integrity sha512-6NJRRG04/91qnWLZj+wZm27q6fJkTbkZdIJdo/Ig++GTxkAv8Wh/45nIcz9Xg7AzIAMpAkflFdiCrCoZ3hp1Iw== + dependencies: + "@edge-runtime/primitives" "3.1.1" + "@edge-runtime/vm@^1.1.0-beta.23": version "1.1.0-beta.31" resolved "https://registry.yarnpkg.com/@edge-runtime/vm/-/vm-1.1.0-beta.31.tgz#4deb95bf2b50cfc1bb2e7641ad2e165bde33e6c2" @@ -5199,6 +5228,21 @@ dependencies: "@lit-labs/ssr-dom-shim" "^1.0.0" +"@mapbox/node-pre-gyp@^1.0.5": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" + integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== + dependencies: + detect-libc "^2.0.0" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.7" + nopt "^5.0.0" + npmlog "^5.0.1" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.11" + "@maticnetwork/fx-portal@^1.0.4": version "1.0.5" resolved "https://registry.yarnpkg.com/@maticnetwork/fx-portal/-/fx-portal-1.0.5.tgz#c26bc0bdf979985f22223d2f1170171a10fa0764" @@ -6174,7 +6218,7 @@ tiny-warning "^1.0.3" tslib "^2.3.0" -"@rollup/pluginutils@^4.2.1": +"@rollup/pluginutils@^4.0.0", "@rollup/pluginutils@^4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== @@ -6417,7 +6461,7 @@ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== -"@sinclair/typebox@^0.25.16": +"@sinclair/typebox@0.25.24", "@sinclair/typebox@^0.25.16": version "0.25.24" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== @@ -7693,7 +7737,7 @@ dependencies: "@babel/runtime" "^7.12.5" -"@tootallnate/once@2": +"@tootallnate/once@2", "@tootallnate/once@2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== @@ -8343,6 +8387,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== +"@types/node@14.18.33": + version "14.18.33" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.33.tgz#8c29a0036771569662e4635790ffa9e057db379b" + integrity sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg== + "@types/node@^10.0.3": version "10.17.60" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" @@ -9085,11 +9134,128 @@ resolved "https://registry.yarnpkg.com/@vercel/build-utils/-/build-utils-5.4.1.tgz#09a347f189fb13a3184a46c89d04e0f3da9793df" integrity sha512-5+xIl65g8TpgLPQtlq7WYaS31/UZf+GcAO1O1IifUsLGM8+fhSgmmUVz7yoQ53YNWdnSA3WiKZfCgKopQPjlYQ== +"@vercel/build-utils@7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@vercel/build-utils/-/build-utils-7.2.2.tgz#8d9aef0f590dad0bc3f1d2f3f3b7bb29777eefa4" + integrity sha512-CUMgVKTJCba5tGe+KZaVvwGUCsuSeuNEmPIzMggIMDtzdqllRu8+QjjIhEI+unHoYvUgGfen6Z5lMeMo9Ne0qQ== + +"@vercel/error-utils@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@vercel/error-utils/-/error-utils-2.0.1.tgz#ea16a69542fe18013ff4f4a93dfc0d2fea9cae64" + integrity sha512-ZUVpRFArh5eyKpJmdfEuCaMpZKQvZgUq0pQ7PdK8m5FgRYEvF4I0TMJH3JnkbYaMMUH82aYWZr+/hFJtEBcmTQ== + +"@vercel/fun@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@vercel/fun/-/fun-1.1.0.tgz#5bac83585a736b6bfe4616017fe5f0a46562c3ba" + integrity sha512-SpuPAo+MlAYMtcMcC0plx7Tv4Mp7SQhJJj1iIENlOnABL24kxHpL09XLQMGzZIzIW7upR8c3edwgfpRtp+dhVw== + dependencies: + "@tootallnate/once" "2.0.0" + async-listen "1.2.0" + debug "4.1.1" + execa "3.2.0" + fs-extra "8.1.0" + generic-pool "3.4.2" + micro "9.3.5-canary.3" + ms "2.1.1" + node-fetch "2.6.7" + path-match "1.2.4" + promisepipe "3.0.0" + semver "7.3.5" + stat-mode "0.3.0" + stream-to-promise "2.2.0" + tar "4.4.18" + tree-kill "1.2.2" + uid-promise "1.0.0" + uuid "3.3.2" + xdg-app-paths "5.1.0" + yauzl-promise "2.1.3" + +"@vercel/gatsby-plugin-vercel-analytics@1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@vercel/gatsby-plugin-vercel-analytics/-/gatsby-plugin-vercel-analytics-1.0.11.tgz#07e6a02665c340ad31ad9d9d3b0df00a30a32aed" + integrity sha512-iTEA0vY6RBPuEzkwUTVzSHDATo1aF6bdLLspI68mQ/BTbi5UQEGjpjyzdKOVcSYApDtFU6M6vypZ1t4vIEnHvw== + dependencies: + web-vitals "0.2.4" + +"@vercel/gatsby-plugin-vercel-builder@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@vercel/gatsby-plugin-vercel-builder/-/gatsby-plugin-vercel-builder-2.0.7.tgz#c1d93f73348aa8adbca06ac480b5aebb259929e0" + integrity sha512-hzaWLdBeb/QnGRE17ldaxeXMTLroaiJTlaW2G3HwvaK8sXA9e+jmcfAw8fjN3BNMnkFU523CnE7InqmjKH4TfQ== + dependencies: + "@sinclair/typebox" "0.25.24" + "@vercel/build-utils" "7.2.2" + "@vercel/routing-utils" "3.0.0" + esbuild "0.14.47" + etag "1.8.1" + fs-extra "11.1.0" + +"@vercel/go@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@vercel/go/-/go-3.0.3.tgz#38316e6570a258711af1afa514e174c32c541d6f" + integrity sha512-XhrmpsACxNo64ojhscL//Mq+XEfm3VXlx/UIUcHzJJXdvFnz7DEzh1zs0AtdpVgZbYhPQ7rW3GIejaHrIJnN5w== + +"@vercel/hydrogen@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@vercel/hydrogen/-/hydrogen-1.0.1.tgz#e3edb8a6326e22020b8bfc76afae196e098df0cd" + integrity sha512-4PYk4LeIWPTjGtgnxvB0Hdw7aqCau843/96K2xX3z9pa0Hn//pUnZBMz2jrs5MRseCm1Li1LdQAK3u8/vaUnVQ== + dependencies: + "@vercel/static-config" "3.0.0" + ts-morph "12.0.0" + +"@vercel/next@4.0.10": + version "4.0.10" + resolved "https://registry.yarnpkg.com/@vercel/next/-/next-4.0.10.tgz#cf713ed867ea321a97269b88189760022a96f59c" + integrity sha512-+Z+R7Dev1OFU9Rm8R4h34W0/RdSHeZ4dvkv50lS7TneRj1Ab1zLlqupyG0tEdSP5/Nvb/OZ4ixvTiLqw9oo8oA== + dependencies: + "@vercel/nft" "0.24.2" + +"@vercel/nft@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@vercel/nft/-/nft-0.24.2.tgz#9b910ce52692a9a621f52740d896d4a2440d5865" + integrity sha512-KhY3Ky/lCqE+fHpOXiKOLnXYJ49PZh1dyDSfVtZhmYtmica0NQgyO6kPOAGDNWqD9IOBx8hb65upxxjfnfa1JA== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.5" + "@rollup/pluginutils" "^4.0.0" + acorn "^8.6.0" + async-sema "^3.1.1" + bindings "^1.4.0" + estree-walker "2.0.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + micromatch "^4.0.2" + node-gyp-build "^4.2.2" + resolve-from "^5.0.0" + "@vercel/node-bridge@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@vercel/node-bridge/-/node-bridge-3.0.0.tgz#443655b74713ec65531726fb5a30c5c528c804bf" integrity sha512-TNQK6cufwrhd8ASDk5YHHenH8Xhp9sY8xUjOTKnQQI37KLk+Sw2HlHhT5rzUFN23ahosUlkY8InwtYUmSNb9kw== +"@vercel/node@3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@vercel/node/-/node-3.0.7.tgz#93d6c1f89f1a1a5110a9b6f9cdd2f5d19d2712c3" + integrity sha512-0KrDGi6z+qPtCyC7wSHmHDU/ot352AJpAeAO1OIEYqYFsYwzvwuyu7TbGGwiUbtolij4/EBUCls3YmwADM/vKw== + dependencies: + "@edge-runtime/node-utils" "2.2.1" + "@edge-runtime/primitives" "3.1.1" + "@edge-runtime/vm" "3.1.1" + "@types/node" "14.18.33" + "@vercel/build-utils" "7.2.2" + "@vercel/error-utils" "2.0.1" + "@vercel/nft" "0.24.2" + "@vercel/static-config" "3.0.0" + async-listen "3.0.0" + edge-runtime "2.5.1" + esbuild "0.14.47" + etag "1.8.1" + exit-hook "2.2.1" + node-fetch "2.6.9" + path-to-regexp "6.2.1" + ts-morph "12.0.0" + ts-node "10.9.1" + typescript "4.9.5" + undici "5.23.0" + "@vercel/node@^2.5.13": version "2.5.13" resolved "https://registry.yarnpkg.com/@vercel/node/-/node-2.5.13.tgz#a7ed62290a34e601830986856404910f4a27d670" @@ -9107,6 +9273,53 @@ ts-node "8.9.1" typescript "4.3.4" +"@vercel/python@4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@vercel/python/-/python-4.0.2.tgz#c30bd1d41b85d67191e4e5e13bb4118a7e98d5aa" + integrity sha512-mmUeR3GBuDnaJK3IIHRoPl3bNevcWO3N/YrNAx+zxLPSHzfzmCLZbFVVXbzoKBi/cALiOPcApVhlQXwU26y7xg== + +"@vercel/redwood@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@vercel/redwood/-/redwood-2.0.4.tgz#2ae5bac2953175e6de1cbd2d80b65af433d178bd" + integrity sha512-f0dzR8xQ34MKTzLmUygfu6vngCaRozN0z2Aao1sQ7sIC0+UExgiL0qJ9syejWwDv7IxK4yZ0w1WvztrHtAMa9Q== + dependencies: + "@vercel/nft" "0.24.2" + "@vercel/routing-utils" "3.0.0" + semver "6.3.1" + +"@vercel/remix-builder@2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@vercel/remix-builder/-/remix-builder-2.0.9.tgz#c7846b84389857dd08540900d96ab1964c3e8eff" + integrity sha512-/wgZrnKGZYJ8Z1tgAQc2UUhF+51tGwSHw9PnAhnaY5KclLiBrnXSjKqUAXW8GyaM4IB1ZjPXoI5oARKKUGu8kQ== + dependencies: + "@vercel/nft" "0.24.2" + "@vercel/static-config" "3.0.0" + ts-morph "12.0.0" + +"@vercel/routing-utils@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@vercel/routing-utils/-/routing-utils-3.0.0.tgz#595b9fd33dd850b2fa3bd6d04c7991c4b05a31b6" + integrity sha512-u+SoHnL+RzRQIRP+YxvigzzKXQcbgYQF9qCTIuWuoLw5h9thIYWcDJvz3KxrUzxjGZ3dWboXA29KAlT6eeaeFw== + dependencies: + path-to-regexp "6.1.0" + optionalDependencies: + ajv "^6.0.0" + +"@vercel/ruby@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@vercel/ruby/-/ruby-2.0.2.tgz#93d40e07087e625c90332cbf58bd40929fbcb292" + integrity sha512-MqFynhtZ905L210DWAbgkiEQEK39LTtp9eL2Nm6PjzhjNzU6hV0UfK8Z24vU9CC6J4mrUTTZx396fH7XTYJWqg== + +"@vercel/static-build@2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@vercel/static-build/-/static-build-2.0.8.tgz#645bac294ab02ddd9a1eda2165bb04c826337d8b" + integrity sha512-46//Pxez7mc+UdOZgNv6y9lPSBehMdvCxajb/nvquptDMNH543Itospu9lyt448EQoS7HVE1NSPI21iiCboqvA== + dependencies: + "@vercel/gatsby-plugin-vercel-analytics" "1.0.11" + "@vercel/gatsby-plugin-vercel-builder" "2.0.7" + "@vercel/static-config" "3.0.0" + ts-morph "12.0.0" + "@vercel/static-config@2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@vercel/static-config/-/static-config-2.0.3.tgz#a3a9fd3994878df0f92c6a617dd1d4589fc1e739" @@ -9116,6 +9329,15 @@ json-schema-to-ts "1.6.4" ts-morph "12.0.0" +"@vercel/static-config@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@vercel/static-config/-/static-config-3.0.0.tgz#2bd56aa08d1293f0982ca3a5923412550bf64bfe" + integrity sha512-2qtvcBJ1bGY0dYGYh3iM7yGKkk971FujLEDXzuW5wcZsPr1GSEjO/w2iSr3qve6nDDtBImsGoDEnus5FI4+fIw== + dependencies: + ajv "8.6.3" + json-schema-to-ts "1.6.4" + ts-morph "12.0.0" + "@vitejs/plugin-react@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.0.1.tgz#793aa790633433558da7ac0a38c58ddf47dff518" @@ -10107,6 +10329,11 @@ acorn@^8.1.0, acorn@^8.8.1, acorn@^8.9.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59" integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== +acorn@^8.6.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + acorn@^8.8.0: version "8.8.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" @@ -10209,7 +10436,7 @@ ajv@8.6.3: require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.0.0, ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -10435,6 +10662,11 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +arg@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.0.tgz#583c518199419e0037abb74062c37f8519e575f0" + integrity sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg== + arg@5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" @@ -10720,6 +10952,21 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +async-listen@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/async-listen/-/async-listen-1.2.0.tgz#861ab6f92e1703ba54498b10ddb9b5da7b69f363" + integrity sha512-CcEtRh/oc9Jc4uWeUwdpG/+Mb2YUHKmdaTf0gUr7Wa+bfp4xx70HOb3RuSTJMvqKNB1TkdTfjLdrcz2X4rkkZA== + +async-listen@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/async-listen/-/async-listen-3.0.0.tgz#2e5941390b7d8c753d4dbe94bc6aecbdde52ec5e" + integrity sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg== + +async-listen@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/async-listen/-/async-listen-3.0.1.tgz#cbe4edeace2b93ebf5cf8092899ee139457978b7" + integrity sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA== + async-mutex@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" @@ -10734,6 +10981,11 @@ async-retry@^1.3.3: dependencies: retry "0.13.1" +async-sema@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/async-sema/-/async-sema-3.1.1.tgz#e527c08758a0f8f6f9f15f799a173ff3c40ea808" + integrity sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg== + async@1.x, async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -11870,7 +12122,7 @@ bind-decorator@^1.0.11: resolved "https://registry.yarnpkg.com/bind-decorator/-/bind-decorator-1.0.11.tgz#e41bc06a1f65dd9cec476c91c5daf3978488252f" integrity sha1-5BvAah9l3ZzsR2yRxdrzl4SIJS8= -bindings@^1.3.0, bindings@^1.5.0: +bindings@^1.3.0, bindings@^1.4.0, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -12396,6 +12648,11 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -12859,6 +13116,21 @@ chokidar@3.3.0: optionalDependencies: fsevents "~2.1.1" +chokidar@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" + integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.3.0" + optionalDependencies: + fsevents "~2.1.2" + chokidar@3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" @@ -13545,7 +13817,7 @@ content-hash@^2.5.2: multicodec "^0.5.5" multihashes "^0.4.15" -content-type@^1.0.4: +content-type@1.0.4, content-type@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== @@ -14078,6 +14350,13 @@ debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, de dependencies: ms "2.1.2" +debug@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + debug@4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" @@ -14270,6 +14549,11 @@ depd@2.0.0, depd@^2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + dequal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" @@ -14322,6 +14606,11 @@ detect-libc@^1.0.3: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== +detect-libc@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -14665,6 +14954,21 @@ edge-runtime@1.1.0-beta.23: pretty-ms "7.0.1" time-span "4.0.0" +edge-runtime@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/edge-runtime/-/edge-runtime-2.5.1.tgz#70591ba5746bf02edb4e616dc116ccf5954d458e" + integrity sha512-E0kY1Dqvwvk9yh7dvR56KnCjXf/dlbrrGjO5Sjnz9Ja3WqYT3csv2B8O4erxJiOWfWy9NTukBk4Kb3yrR66gBw== + dependencies: + "@edge-runtime/format" "2.2.0" + "@edge-runtime/vm" "3.1.1" + async-listen "3.0.1" + mri "1.2.0" + picocolors "1.0.0" + pretty-bytes "5.6.0" + pretty-ms "7.0.1" + signal-exit "4.0.2" + time-span "4.0.0" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -15554,22 +15858,22 @@ estree-to-babel@^3.1.0: "@babel/types" "^7.2.0" c8 "^7.6.0" +estree-walker@2.0.2, estree-walker@^2.0.1, estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + estree-walker@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== -estree-walker@^2.0.1, estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: +etag@1.8.1, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== @@ -16219,6 +16523,11 @@ eventid@^2.0.0: dependencies: uuid "^8.0.0" +events-intercept@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/events-intercept/-/events-intercept-2.0.0.tgz#adbf38681c5a4b2011c41ee41f61a34cba448897" + integrity sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q== + events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -16237,6 +16546,22 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== +execa@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.2.0.tgz#18326b79c7ab7fbd6610fd900c1b9e95fa48f90a" + integrity sha512-kJJfVbI/lZE1PZYDI5VPxp8zXPO9rtxOkhpZ0jMKha56AI9y2gGVC6bkukStQf0ka5Rh15BA5m7cCCH4jmHqkw== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + execa@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" @@ -17010,6 +17335,24 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed" + integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@8.1.0, fs-extra@^8.1, fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -17048,15 +17391,6 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.1, fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -17119,7 +17453,7 @@ fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -fsevents@~2.1.1: +fsevents@~2.1.1, fsevents@~2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== @@ -17215,6 +17549,11 @@ gcp-metadata@^5.0.0: gaxios "^5.0.0" json-bigint "^1.0.0" +generic-pool@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.4.2.tgz#92ff7196520d670839a67308092a12aadf2f6a59" + integrity sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag== + gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -18357,6 +18696,17 @@ http-call@^5.2.2, http-call@^5.3.0: parse-json "^4.0.0" tunnel-agent "^0.6.0" +http-errors@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -18368,6 +18718,14 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-errors@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.4.0.tgz#6c0242dea6b3df7afda153c71089b31c6e82aabf" + integrity sha512-oLjPqve1tuOl5aRhv8GK5eHpqP1C9fb+Ol+XTLjKfLltE44zdDbEdjPSbU7Ch5rSNsVFqZn97SrMmZLdu1/YMw== + dependencies: + inherits "2.0.1" + statuses ">= 1.2.1 < 2" + http-https@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" @@ -21344,7 +21702,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -21622,6 +21980,15 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +micro@9.3.5-canary.3: + version "9.3.5-canary.3" + resolved "https://registry.yarnpkg.com/micro/-/micro-9.3.5-canary.3.tgz#e957598abb9ab05aea8453e0150a521fe22135c3" + integrity sha512-viYIo9PefV+w9dvoIBh1gI44Mvx1BOk67B4BpC2QK77qdY0xZF0Q+vWLt/BII6cLkIc8rLmSIcJaB/OrXXKe1g== + dependencies: + arg "4.1.0" + content-type "1.0.4" + raw-body "2.4.1" + microevent.ts@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" @@ -21861,6 +22228,11 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + minizlib@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -22468,6 +22840,13 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" +node-fetch@2.6.9, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + node-fetch@^1.0.1, node-fetch@~1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -22483,13 +22862,6 @@ node-fetch@^2.6.0: dependencies: whatwg-url "^5.0.0" -node-fetch@^2.6.1, node-fetch@^2.6.7: - version "2.6.9" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" - integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== - dependencies: - whatwg-url "^5.0.0" - node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" @@ -22505,6 +22877,11 @@ node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== +node-gyp-build@^4.2.2: + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" + integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== + node-hid@^0.7.9: version "0.7.9" resolved "https://registry.yarnpkg.com/node-hid/-/node-hid-0.7.9.tgz#cc0cdf1418a286a7667f0b63642b5eeb544ccd05" @@ -22595,6 +22972,13 @@ nopt@3.x: dependencies: abbrev "1" +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -23050,6 +23434,11 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" +os-paths@^4.0.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/os-paths/-/os-paths-4.4.0.tgz#2908b5bcb60cbfe3afb869292281a2a6b2f77ebe" + integrity sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg== + os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -23123,6 +23512,11 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -23472,6 +23866,14 @@ path-key@^4.0.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== +path-match@1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/path-match/-/path-match-1.2.4.tgz#a62747f3c7e0c2514762697f24443585b09100ea" + integrity sha512-UWlehEdqu36jmh4h5CWJ7tARp1OEVKGHKm6+dg9qMq5RKUTV5WJrGgaZ3dN2m7WFAXDbjlHzvJvL/IUpy84Ktw== + dependencies: + http-errors "~1.4.0" + path-to-regexp "^1.0.0" + path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -23487,7 +23889,17 @@ path-to-regexp@2.2.1: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== -path-to-regexp@^1.7.0: +path-to-regexp@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.1.0.tgz#0b18f88b7a0ce0bfae6a25990c909ab86f512427" + integrity sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw== + +path-to-regexp@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" + integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== + +path-to-regexp@^1.0.0, path-to-regexp@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== @@ -23584,7 +23996,7 @@ picocolors@^0.2.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.0.7, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -24084,6 +24496,11 @@ promiseback@^2.0.2: is-callable "^1.1.5" promise-deferred "^2.0.3" +promisepipe@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/promisepipe/-/promisepipe-3.0.0.tgz#c9b6e5aa861ef5fcce6134f6f75e14f8f30bd3b2" + integrity sha512-V6TbZDJ/ZswevgkDNpGt/YqNCiZP9ASfgU+p83uJE6NrGtvSGoOcHLiDCqkMs2+yg7F5qHdLV8d0aS8O26G/KA== + prompts@^2.0.1, prompts@^2.4.0: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -24492,6 +24909,16 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== +raw-body@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + raw-body@2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" @@ -24902,6 +25329,13 @@ readdirp@~3.2.0: dependencies: picomatch "^2.0.4" +readdirp@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" + integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== + dependencies: + picomatch "^2.0.7" + readdirp@~3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" @@ -25878,6 +26312,18 @@ semaphore@>=1.0.1, semaphore@^1.0.3: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + semver@7.3.7: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" @@ -26073,6 +26519,11 @@ setimmediate@^1.0.4, setimmediate@^1.0.5: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -26150,6 +26601,11 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +signal-exit@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" + integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== + signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -26583,6 +27039,11 @@ stacktrace-parser@^0.1.10: dependencies: type-fest "^0.7.1" +stat-mode@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.3.0.tgz#69283b081f851582b328d2a4ace5f591ce52f54b" + integrity sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng== + state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" @@ -26601,6 +27062,11 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +"statuses@>= 1.2.1 < 2", "statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" @@ -26682,7 +27148,7 @@ stream-to-it@^0.2.2: dependencies: get-iterator "^1.0.2" -stream-to-promise@^2.2.0: +stream-to-promise@2.2.0, stream-to-promise@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/stream-to-promise/-/stream-to-promise-2.2.0.tgz#b1edb2e1c8cb11289d1b503c08d3f2aef51e650f" integrity sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw== @@ -27226,6 +27692,19 @@ tar-stream@^2.0.1, tar-stream@^2.1.4: inherits "^2.0.3" readable-stream "^3.1.1" +tar@4.4.18: + version "4.4.18" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.18.tgz#a565090fdcf786ee08ed14b1739179451b3cc476" + integrity sha512-ZuOtqqmkV9RE1+4odd+MhBpibmCxNP6PJhH/h2OqNuotTX7/XHPZQJv2pKvWMplFH9SIZZhitehh6vBH6LO8Pg== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + tar@^4.0.2: version "4.4.19" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" @@ -27251,6 +27730,18 @@ tar@^6.0.2: mkdirp "^1.0.3" yallist "^4.0.0" +tar@^6.1.11: + version "6.2.0" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" + integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + teeny-request@^8.0.0: version "8.0.3" resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-8.0.3.tgz#5cb9c471ef5e59f2fca8280dc3c5909595e6ca24" @@ -27541,6 +28032,11 @@ toggle-selection@^1.0.6: resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + toidentifier@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -27590,6 +28086,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +tree-kill@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + treeify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" @@ -27667,18 +28168,7 @@ ts-morph@12.0.0: "@ts-morph/common" "~0.11.0" code-block-writer "^10.1.1" -ts-node@8.9.1: - version "8.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.9.1.tgz#2f857f46c47e91dcd28a14e052482eb14cfd65a5" - integrity sha512-yrq6ODsxEFTLz0R3BX2myf0WBCSQh9A+py8PBo1dCzWIOcvisbyH6akNKqDHMgXePF2kir5mm5JXJTH3OUJYOQ== - dependencies: - arg "^4.1.0" - diff "^4.0.1" - make-error "^1.1.1" - source-map-support "^0.5.17" - yn "3.1.1" - -ts-node@^10.9.1: +ts-node@10.9.1, ts-node@^10.9.1: version "10.9.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== @@ -27697,6 +28187,17 @@ ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" +ts-node@8.9.1: + version "8.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.9.1.tgz#2f857f46c47e91dcd28a14e052482eb14cfd65a5" + integrity sha512-yrq6ODsxEFTLz0R3BX2myf0WBCSQh9A+py8PBo1dCzWIOcvisbyH6akNKqDHMgXePF2kir5mm5JXJTH3OUJYOQ== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" @@ -27897,6 +28398,11 @@ typescript@4.3.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc" integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew== +typescript@4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + typescript@^3.9.7: version "3.9.10" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" @@ -27927,6 +28433,11 @@ uglify-js@^3.1.4, uglify-js@^3.7.7: resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== +uid-promise@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/uid-promise/-/uid-promise-1.0.0.tgz#68ef7c70a19dea4d637c7e3df2e0e548106f1a37" + integrity sha512-R8375j0qwXyIu/7R0tjdF06/sElHqbmdmWC9M2qQHpEVbvE4I5+38KJI7LUUmQMp7NVq4tKHiBMkT0NFM453Ig== + uint8arrays@1.1.0, uint8arrays@^1.0.0, uint8arrays@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-1.1.0.tgz#d034aa65399a9fd213a1579e323f0b29f67d0ed2" @@ -27969,6 +28480,13 @@ underscore@^1.7.0, underscore@~1.13.2: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== +undici@5.23.0: + version "5.23.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.23.0.tgz#e7bdb0ed42cebe7b7aca87ced53e6eaafb8f8ca0" + integrity sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg== + dependencies: + busboy "^1.6.0" + undici@^5.14.0: version "5.20.0" resolved "https://registry.yarnpkg.com/undici/-/undici-5.20.0.tgz#6327462f5ce1d3646bcdac99da7317f455bcc263" @@ -28466,6 +28984,24 @@ vary@^1, vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +vercel@^32.4.1: + version "32.4.1" + resolved "https://registry.yarnpkg.com/vercel/-/vercel-32.4.1.tgz#6a393d68de314b5ef06856b276705a2fc48312ae" + integrity sha512-cULmLvceDaluXz2usPtPYhb9y/jwjWolAjBBbG1DLGQmxVlnHVHTOJrYPaq2ioujQpU0yi92+RQPdzjzOY6aEg== + dependencies: + "@vercel/build-utils" "7.2.2" + "@vercel/fun" "1.1.0" + "@vercel/go" "3.0.3" + "@vercel/hydrogen" "1.0.1" + "@vercel/next" "4.0.10" + "@vercel/node" "3.0.7" + "@vercel/python" "4.0.2" + "@vercel/redwood" "2.0.4" + "@vercel/remix-builder" "2.0.9" + "@vercel/ruby" "2.0.2" + "@vercel/static-build" "2.0.8" + chokidar "3.3.1" + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -28614,6 +29150,11 @@ web-namespaces@^1.0.0: resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== +web-vitals@0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-0.2.4.tgz#ec3df43c834a207fd7cdefd732b2987896e08511" + integrity sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg== + web3-bzz@1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.7.4.tgz#9419e606e38a9777443d4ce40506ebd796e06075" @@ -29773,6 +30314,20 @@ x-default-browser@^0.4.0: optionalDependencies: default-browser-id "^1.0.4" +xdg-app-paths@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/xdg-app-paths/-/xdg-app-paths-5.1.0.tgz#f52f724f91e88244148c085c09bcd396443d8cae" + integrity sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA== + dependencies: + xdg-portable "^7.0.0" + +xdg-portable@^7.0.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/xdg-portable/-/xdg-portable-7.3.0.tgz#c6b1610de806a2ca1fe65727d5f8402c295d2e96" + integrity sha512-sqMMuL1rc0FmMBOzCpd0yuy9trqF2yTTVe+E9ogwCSWQCdDEtQUwrZPT6AxqtsFGRNxycgncbP/xmOOSPw5ZUw== + dependencies: + os-paths "^4.0.1" + xhr-request-promise@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" @@ -30019,7 +30574,22 @@ yargs@^4.7.1: y18n "^3.2.1" yargs-parser "^2.4.1" -yauzl@^2.10.0: +yauzl-clone@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/yauzl-clone/-/yauzl-clone-1.0.4.tgz#8bc6d293b17cc98802bbbed2e289d18e7697c96c" + integrity sha512-igM2RRCf3k8TvZoxR2oguuw4z1xasOnA31joCqHIyLkeWrvAc2Jgay5ISQ2ZplinkoGaJ6orCz56Ey456c5ESA== + dependencies: + events-intercept "^2.0.0" + +yauzl-promise@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/yauzl-promise/-/yauzl-promise-2.1.3.tgz#17467845db89fc6592ca987ca2ecfee8c381ae3d" + integrity sha512-A1pf6fzh6eYkK0L4Qp7g9jzJSDrM6nN0bOn5T0IbY4Yo3w+YkWlHFkJP7mzknMXjqusHFHlKsK2N+4OLsK2MRA== + dependencies: + yauzl "^2.9.1" + yauzl-clone "^1.0.4" + +yauzl@^2.10.0, yauzl@^2.9.1: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== From 403499ea4ce852ecdd5977e0ebeffb4b61df659c Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Thu, 5 Oct 2023 14:03:27 -0400 Subject: [PATCH 02/25] improve: simulate relay gas fees --- api/_types/utility.types.ts | 6 +++++ api/_utils.ts | 51 ++++++++++++++++++++++--------------- api/suggested-fees.ts | 36 ++++++++++++++++++++++++-- 3 files changed, 71 insertions(+), 22 deletions(-) diff --git a/api/_types/utility.types.ts b/api/_types/utility.types.ts index 620c5e1ce..186b51215 100644 --- a/api/_types/utility.types.ts +++ b/api/_types/utility.types.ts @@ -3,3 +3,9 @@ export type PoolStateResult = { exchangeRateCurrent: string; totalPoolSize: string; }; + +export type MessagePayload = { + message: string; + recipientAddress: string; + relayerAddress?: string; +}; diff --git a/api/_utils.ts b/api/_utils.ts index 9dd9a51a2..be9b144d6 100644 --- a/api/_utils.ts +++ b/api/_utils.ts @@ -33,7 +33,7 @@ import { maxRelayFeePct, relayerFeeCapitalCostConfig, } from "./_constants"; -import { PoolStateResult } from "./_types"; +import { MessagePayload, PoolStateResult } from "./_types"; type LoggingUtility = sdk.relayFeeCalculator.Logger; @@ -333,7 +333,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.MAINNET) @@ -344,7 +343,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.OPTIMISM) @@ -355,7 +353,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.POLYGON) @@ -366,7 +363,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.ARBITRUM) @@ -377,7 +373,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.ZK_SYNC) @@ -388,7 +383,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.BASE) @@ -400,7 +394,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.GOERLI) @@ -411,7 +404,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.ARBITRUM_GOERLI) @@ -422,7 +414,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.ZK_SYNC_GOERLI) @@ -433,7 +424,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.BASE_GOERLI) @@ -492,22 +482,43 @@ export const getTokenSymbol = (tokenAddress: string): string => { * @param tokenPrice An optional overred price to prevent the SDK from creating its own call * @returns The a promise to the relayer fee for the given `amount` of transferring `l1Token` to `destinationChainId` */ -export const getRelayerFeeDetails = ( +export const getRelayerFeeDetails = async ( l1Token: string, amount: sdk.utils.BigNumberish, originChainId: number, destinationChainId: number, - tokenPrice?: number + tokenPrice?: number, + messagePayload?: MessagePayload ): Promise => { const tokenSymbol = getTokenSymbol(l1Token); const relayFeeCalculator = getRelayerFeeCalculator(destinationChainId); - return relayFeeCalculator.relayerFeeDetails( - amount, - tokenSymbol, - tokenPrice, - originChainId.toString(), - destinationChainId.toString() - ); + try { + return await relayFeeCalculator.relayerFeeDetails( + amount, + tokenSymbol, + String(originChainId), + String(destinationChainId), + messagePayload, + tokenPrice + ); + } catch (_e: unknown) { + const e = _e as Error; + // If the error is due to a specific number of erroneous inputs, + // we can propagate the error to the user as a 4xx. + if (e.message.includes("Could not simulate message fill.")) { + throw new InputError(e.message); + } else { + // Otherwise, we throw a 500. + throw new Error( + `Could not process relayer fee details. + ${ + sdk.utils.isDefined(messagePayload) + ? " The likely cause is related to message payload." + : "" + }` + ); + } + } }; /** diff --git a/api/suggested-fees.ts b/api/suggested-fees.ts index 55934785b..af7ac87e2 100644 --- a/api/suggested-fees.ts +++ b/api/suggested-fees.ts @@ -5,7 +5,7 @@ import * as sdk from "@across-protocol/sdk-v2"; import { BlockFinder } from "@uma/sdk"; import { VercelResponse } from "@vercel/node"; import { ethers } from "ethers"; -import { type, assert, Infer, optional } from "superstruct"; +import { type, assert, Infer, optional, string } from "superstruct"; import { disabledL1Tokens, DEFAULT_QUOTE_TIMESTAMP_BUFFER } from "./_constants"; import { TypedVercelRequest } from "./_types"; import { @@ -33,6 +33,9 @@ const SuggestedFeesQueryParamsSchema = type({ originChainId: optional(positiveIntStr()), timestamp: optional(positiveIntStr()), skipAmountLimit: optional(boolStr()), + message: optional(string()), + recipientAddress: optional(validAddress()), + relayerAddress: optional(validAddress()), }); type SuggestedFeesQueryParams = Infer; @@ -64,6 +67,9 @@ const handler = async ( originChainId, timestamp, skipAmountLimit, + recipientAddress, + relayerAddress, + message, } = query; if (originChainId === destinationChainId) { @@ -78,6 +84,31 @@ const handler = async ( ]); const { l1Token, hubPool, chainId: computedOriginChainId } = tokenDetails; + if ( + sdk.utils.isDefined(message) && + !sdk.utils.isDefined(recipientAddress) + ) { + throw new InputError( + "Recipient address is required when message is provided" + ); + } + if ( + sdk.utils.isDefined(message) && + // Our message encoding is a hex string, so we need to check that the length is even. + message.length % 2 !== 0 + ) { + throw new InputError("Message must be an even hex string"); + } + + const messagePayload = + sdk.utils.isDefined(message) && sdk.utils.isDefined(recipientAddress) + ? { + message, + recipientAddress, + relayerAddress, + } + : undefined; + // Note: Add a buffer to "latest" timestamp so that it corresponds to a block older than HEAD. // This is to improve relayer UX who have heightened risk of sending inadvertent invalid fills // for quote times right at HEAD (or worst, in the future of HEAD). If timestamp is supplied as @@ -151,7 +182,8 @@ const handler = async ( amount, computedOriginChainId, Number(destinationChainId), - tokenPrice + tokenPrice, + messagePayload ); const skipAmountLimitEnabled = skipAmountLimit === "true"; From b3efc79491f1d8e911c64101407eb8e160aef877 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Thu, 5 Oct 2023 14:06:57 -0400 Subject: [PATCH 03/25] chore: revert for another PR --- package.json | 2 - yarn.lock | 662 ++++----------------------------------------------- 2 files changed, 46 insertions(+), 618 deletions(-) diff --git a/package.json b/package.json index 1832fd970..9f3428a34 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,6 @@ "typescript": "^4.1.2" }, "scripts": { - "vc:dev": "yarn vercel dev", "start": "export REACT_APP_GIT_COMMIT_HASH=$(git rev-parse HEAD) && vite", "dev": "export REACT_APP_GIT_COMMIT_HASH=$(git rev-parse HEAD) && vite --port $PORT", "build": "export REACT_APP_GIT_COMMIT_HASH=$(git rev-parse HEAD) && tsc && vite build", @@ -144,7 +143,6 @@ "ts-jest": "^29.1.1", "ts-node": "^10.9.1", "tsconfig-paths-webpack-plugin": "^4.0.0", - "vercel": "^32.4.1", "vite": "^4.3.9", "vite-plugin-environment": "^1.1.3", "vite-plugin-eslint": "^1.8.1", diff --git a/yarn.lock b/yarn.lock index 59b0968a7..0b72a21cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2825,33 +2825,11 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@edge-runtime/cookies@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@edge-runtime/cookies/-/cookies-3.4.1.tgz#c725e7ae92c89d11ee7c6a316d8d5b1445dfe33c" - integrity sha512-z27BvgPxI73CgSlxU/NAUf1Q/shnqi6cobHEowf6VuLdSjGR3NjI2Y5dZUIBbK2zOJVZbXcHsVzJjz8LklteFQ== - -"@edge-runtime/format@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@edge-runtime/format/-/format-2.2.0.tgz#00b54a2b659f9ec835e1f995d58bb3dcc0b5ccef" - integrity sha512-gPrS6AVw/qJJL0vcxMXv4kFXCU3ZTCD1uuJpwX15YxHV8BgU9OG5v9LrkkXcr96PBT/9epypfNJMhlWADuEziw== - "@edge-runtime/format@^1.1.0-beta.23": version "1.1.0-beta.31" resolved "https://registry.yarnpkg.com/@edge-runtime/format/-/format-1.1.0-beta.31.tgz#58f945ad8e437a660d038da73f5a5802fc81cecd" integrity sha512-tUZy+LMls1TivqVb7dbC0C0IMNjwP55co6vSkTgXCl9xFos3v43bCwAzivMaJ3NR8ZuihvK1gEj8CmvoqvOt0g== -"@edge-runtime/node-utils@2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@edge-runtime/node-utils/-/node-utils-2.2.1.tgz#c6e59d498c49be91d3baf05bab94cad5506547fe" - integrity sha512-RUl/439BHKshkhSGFRlZ1kzy68wL4mn8VNKDSZr3p0tciyZ33Mjfpl+vofqnHqXRmDI6nLnZpfJvhY3D88o0pA== - dependencies: - "@edge-runtime/cookies" "3.4.1" - -"@edge-runtime/primitives@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@edge-runtime/primitives/-/primitives-3.1.1.tgz#45c97f492ad06272136024122c4b639241f9b0f9" - integrity sha512-ROO22py+KdAfzqWZu6CtVMC4qV6mS0W1jPI51jGXE+uenyBUN7cQTWB9ReQc8Bm4cnjqmhajvpqEx3j7Y9iSOg== - "@edge-runtime/primitives@^1.1.0-beta.23", "@edge-runtime/primitives@^1.1.0-beta.31": version "1.1.0-beta.31" resolved "https://registry.yarnpkg.com/@edge-runtime/primitives/-/primitives-1.1.0-beta.31.tgz#f0e52f0ab77b088e6a45988afcccb07d663b3b33" @@ -2864,13 +2842,6 @@ dependencies: "@edge-runtime/primitives" "^1.1.0-beta.23" -"@edge-runtime/vm@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@edge-runtime/vm/-/vm-3.1.1.tgz#1693bd43ceffb28eb34b852f375eb939d9ec134c" - integrity sha512-6NJRRG04/91qnWLZj+wZm27q6fJkTbkZdIJdo/Ig++GTxkAv8Wh/45nIcz9Xg7AzIAMpAkflFdiCrCoZ3hp1Iw== - dependencies: - "@edge-runtime/primitives" "3.1.1" - "@edge-runtime/vm@^1.1.0-beta.23": version "1.1.0-beta.31" resolved "https://registry.yarnpkg.com/@edge-runtime/vm/-/vm-1.1.0-beta.31.tgz#4deb95bf2b50cfc1bb2e7641ad2e165bde33e6c2" @@ -5228,21 +5199,6 @@ dependencies: "@lit-labs/ssr-dom-shim" "^1.0.0" -"@mapbox/node-pre-gyp@^1.0.5": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" - integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== - dependencies: - detect-libc "^2.0.0" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.7" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" - "@maticnetwork/fx-portal@^1.0.4": version "1.0.5" resolved "https://registry.yarnpkg.com/@maticnetwork/fx-portal/-/fx-portal-1.0.5.tgz#c26bc0bdf979985f22223d2f1170171a10fa0764" @@ -6218,7 +6174,7 @@ tiny-warning "^1.0.3" tslib "^2.3.0" -"@rollup/pluginutils@^4.0.0", "@rollup/pluginutils@^4.2.1": +"@rollup/pluginutils@^4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== @@ -6461,7 +6417,7 @@ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== -"@sinclair/typebox@0.25.24", "@sinclair/typebox@^0.25.16": +"@sinclair/typebox@^0.25.16": version "0.25.24" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== @@ -7737,7 +7693,7 @@ dependencies: "@babel/runtime" "^7.12.5" -"@tootallnate/once@2", "@tootallnate/once@2.0.0": +"@tootallnate/once@2": version "2.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== @@ -8387,11 +8343,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== -"@types/node@14.18.33": - version "14.18.33" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.33.tgz#8c29a0036771569662e4635790ffa9e057db379b" - integrity sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg== - "@types/node@^10.0.3": version "10.17.60" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" @@ -9134,128 +9085,11 @@ resolved "https://registry.yarnpkg.com/@vercel/build-utils/-/build-utils-5.4.1.tgz#09a347f189fb13a3184a46c89d04e0f3da9793df" integrity sha512-5+xIl65g8TpgLPQtlq7WYaS31/UZf+GcAO1O1IifUsLGM8+fhSgmmUVz7yoQ53YNWdnSA3WiKZfCgKopQPjlYQ== -"@vercel/build-utils@7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@vercel/build-utils/-/build-utils-7.2.2.tgz#8d9aef0f590dad0bc3f1d2f3f3b7bb29777eefa4" - integrity sha512-CUMgVKTJCba5tGe+KZaVvwGUCsuSeuNEmPIzMggIMDtzdqllRu8+QjjIhEI+unHoYvUgGfen6Z5lMeMo9Ne0qQ== - -"@vercel/error-utils@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@vercel/error-utils/-/error-utils-2.0.1.tgz#ea16a69542fe18013ff4f4a93dfc0d2fea9cae64" - integrity sha512-ZUVpRFArh5eyKpJmdfEuCaMpZKQvZgUq0pQ7PdK8m5FgRYEvF4I0TMJH3JnkbYaMMUH82aYWZr+/hFJtEBcmTQ== - -"@vercel/fun@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@vercel/fun/-/fun-1.1.0.tgz#5bac83585a736b6bfe4616017fe5f0a46562c3ba" - integrity sha512-SpuPAo+MlAYMtcMcC0plx7Tv4Mp7SQhJJj1iIENlOnABL24kxHpL09XLQMGzZIzIW7upR8c3edwgfpRtp+dhVw== - dependencies: - "@tootallnate/once" "2.0.0" - async-listen "1.2.0" - debug "4.1.1" - execa "3.2.0" - fs-extra "8.1.0" - generic-pool "3.4.2" - micro "9.3.5-canary.3" - ms "2.1.1" - node-fetch "2.6.7" - path-match "1.2.4" - promisepipe "3.0.0" - semver "7.3.5" - stat-mode "0.3.0" - stream-to-promise "2.2.0" - tar "4.4.18" - tree-kill "1.2.2" - uid-promise "1.0.0" - uuid "3.3.2" - xdg-app-paths "5.1.0" - yauzl-promise "2.1.3" - -"@vercel/gatsby-plugin-vercel-analytics@1.0.11": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@vercel/gatsby-plugin-vercel-analytics/-/gatsby-plugin-vercel-analytics-1.0.11.tgz#07e6a02665c340ad31ad9d9d3b0df00a30a32aed" - integrity sha512-iTEA0vY6RBPuEzkwUTVzSHDATo1aF6bdLLspI68mQ/BTbi5UQEGjpjyzdKOVcSYApDtFU6M6vypZ1t4vIEnHvw== - dependencies: - web-vitals "0.2.4" - -"@vercel/gatsby-plugin-vercel-builder@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@vercel/gatsby-plugin-vercel-builder/-/gatsby-plugin-vercel-builder-2.0.7.tgz#c1d93f73348aa8adbca06ac480b5aebb259929e0" - integrity sha512-hzaWLdBeb/QnGRE17ldaxeXMTLroaiJTlaW2G3HwvaK8sXA9e+jmcfAw8fjN3BNMnkFU523CnE7InqmjKH4TfQ== - dependencies: - "@sinclair/typebox" "0.25.24" - "@vercel/build-utils" "7.2.2" - "@vercel/routing-utils" "3.0.0" - esbuild "0.14.47" - etag "1.8.1" - fs-extra "11.1.0" - -"@vercel/go@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@vercel/go/-/go-3.0.3.tgz#38316e6570a258711af1afa514e174c32c541d6f" - integrity sha512-XhrmpsACxNo64ojhscL//Mq+XEfm3VXlx/UIUcHzJJXdvFnz7DEzh1zs0AtdpVgZbYhPQ7rW3GIejaHrIJnN5w== - -"@vercel/hydrogen@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@vercel/hydrogen/-/hydrogen-1.0.1.tgz#e3edb8a6326e22020b8bfc76afae196e098df0cd" - integrity sha512-4PYk4LeIWPTjGtgnxvB0Hdw7aqCau843/96K2xX3z9pa0Hn//pUnZBMz2jrs5MRseCm1Li1LdQAK3u8/vaUnVQ== - dependencies: - "@vercel/static-config" "3.0.0" - ts-morph "12.0.0" - -"@vercel/next@4.0.10": - version "4.0.10" - resolved "https://registry.yarnpkg.com/@vercel/next/-/next-4.0.10.tgz#cf713ed867ea321a97269b88189760022a96f59c" - integrity sha512-+Z+R7Dev1OFU9Rm8R4h34W0/RdSHeZ4dvkv50lS7TneRj1Ab1zLlqupyG0tEdSP5/Nvb/OZ4ixvTiLqw9oo8oA== - dependencies: - "@vercel/nft" "0.24.2" - -"@vercel/nft@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@vercel/nft/-/nft-0.24.2.tgz#9b910ce52692a9a621f52740d896d4a2440d5865" - integrity sha512-KhY3Ky/lCqE+fHpOXiKOLnXYJ49PZh1dyDSfVtZhmYtmica0NQgyO6kPOAGDNWqD9IOBx8hb65upxxjfnfa1JA== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.5" - "@rollup/pluginutils" "^4.0.0" - acorn "^8.6.0" - async-sema "^3.1.1" - bindings "^1.4.0" - estree-walker "2.0.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - micromatch "^4.0.2" - node-gyp-build "^4.2.2" - resolve-from "^5.0.0" - "@vercel/node-bridge@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@vercel/node-bridge/-/node-bridge-3.0.0.tgz#443655b74713ec65531726fb5a30c5c528c804bf" integrity sha512-TNQK6cufwrhd8ASDk5YHHenH8Xhp9sY8xUjOTKnQQI37KLk+Sw2HlHhT5rzUFN23ahosUlkY8InwtYUmSNb9kw== -"@vercel/node@3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@vercel/node/-/node-3.0.7.tgz#93d6c1f89f1a1a5110a9b6f9cdd2f5d19d2712c3" - integrity sha512-0KrDGi6z+qPtCyC7wSHmHDU/ot352AJpAeAO1OIEYqYFsYwzvwuyu7TbGGwiUbtolij4/EBUCls3YmwADM/vKw== - dependencies: - "@edge-runtime/node-utils" "2.2.1" - "@edge-runtime/primitives" "3.1.1" - "@edge-runtime/vm" "3.1.1" - "@types/node" "14.18.33" - "@vercel/build-utils" "7.2.2" - "@vercel/error-utils" "2.0.1" - "@vercel/nft" "0.24.2" - "@vercel/static-config" "3.0.0" - async-listen "3.0.0" - edge-runtime "2.5.1" - esbuild "0.14.47" - etag "1.8.1" - exit-hook "2.2.1" - node-fetch "2.6.9" - path-to-regexp "6.2.1" - ts-morph "12.0.0" - ts-node "10.9.1" - typescript "4.9.5" - undici "5.23.0" - "@vercel/node@^2.5.13": version "2.5.13" resolved "https://registry.yarnpkg.com/@vercel/node/-/node-2.5.13.tgz#a7ed62290a34e601830986856404910f4a27d670" @@ -9273,53 +9107,6 @@ ts-node "8.9.1" typescript "4.3.4" -"@vercel/python@4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@vercel/python/-/python-4.0.2.tgz#c30bd1d41b85d67191e4e5e13bb4118a7e98d5aa" - integrity sha512-mmUeR3GBuDnaJK3IIHRoPl3bNevcWO3N/YrNAx+zxLPSHzfzmCLZbFVVXbzoKBi/cALiOPcApVhlQXwU26y7xg== - -"@vercel/redwood@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@vercel/redwood/-/redwood-2.0.4.tgz#2ae5bac2953175e6de1cbd2d80b65af433d178bd" - integrity sha512-f0dzR8xQ34MKTzLmUygfu6vngCaRozN0z2Aao1sQ7sIC0+UExgiL0qJ9syejWwDv7IxK4yZ0w1WvztrHtAMa9Q== - dependencies: - "@vercel/nft" "0.24.2" - "@vercel/routing-utils" "3.0.0" - semver "6.3.1" - -"@vercel/remix-builder@2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@vercel/remix-builder/-/remix-builder-2.0.9.tgz#c7846b84389857dd08540900d96ab1964c3e8eff" - integrity sha512-/wgZrnKGZYJ8Z1tgAQc2UUhF+51tGwSHw9PnAhnaY5KclLiBrnXSjKqUAXW8GyaM4IB1ZjPXoI5oARKKUGu8kQ== - dependencies: - "@vercel/nft" "0.24.2" - "@vercel/static-config" "3.0.0" - ts-morph "12.0.0" - -"@vercel/routing-utils@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@vercel/routing-utils/-/routing-utils-3.0.0.tgz#595b9fd33dd850b2fa3bd6d04c7991c4b05a31b6" - integrity sha512-u+SoHnL+RzRQIRP+YxvigzzKXQcbgYQF9qCTIuWuoLw5h9thIYWcDJvz3KxrUzxjGZ3dWboXA29KAlT6eeaeFw== - dependencies: - path-to-regexp "6.1.0" - optionalDependencies: - ajv "^6.0.0" - -"@vercel/ruby@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@vercel/ruby/-/ruby-2.0.2.tgz#93d40e07087e625c90332cbf58bd40929fbcb292" - integrity sha512-MqFynhtZ905L210DWAbgkiEQEK39LTtp9eL2Nm6PjzhjNzU6hV0UfK8Z24vU9CC6J4mrUTTZx396fH7XTYJWqg== - -"@vercel/static-build@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@vercel/static-build/-/static-build-2.0.8.tgz#645bac294ab02ddd9a1eda2165bb04c826337d8b" - integrity sha512-46//Pxez7mc+UdOZgNv6y9lPSBehMdvCxajb/nvquptDMNH543Itospu9lyt448EQoS7HVE1NSPI21iiCboqvA== - dependencies: - "@vercel/gatsby-plugin-vercel-analytics" "1.0.11" - "@vercel/gatsby-plugin-vercel-builder" "2.0.7" - "@vercel/static-config" "3.0.0" - ts-morph "12.0.0" - "@vercel/static-config@2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@vercel/static-config/-/static-config-2.0.3.tgz#a3a9fd3994878df0f92c6a617dd1d4589fc1e739" @@ -9329,15 +9116,6 @@ json-schema-to-ts "1.6.4" ts-morph "12.0.0" -"@vercel/static-config@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@vercel/static-config/-/static-config-3.0.0.tgz#2bd56aa08d1293f0982ca3a5923412550bf64bfe" - integrity sha512-2qtvcBJ1bGY0dYGYh3iM7yGKkk971FujLEDXzuW5wcZsPr1GSEjO/w2iSr3qve6nDDtBImsGoDEnus5FI4+fIw== - dependencies: - ajv "8.6.3" - json-schema-to-ts "1.6.4" - ts-morph "12.0.0" - "@vitejs/plugin-react@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.0.1.tgz#793aa790633433558da7ac0a38c58ddf47dff518" @@ -10329,11 +10107,6 @@ acorn@^8.1.0, acorn@^8.8.1, acorn@^8.9.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59" integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== -acorn@^8.6.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== - acorn@^8.8.0: version "8.8.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" @@ -10436,7 +10209,7 @@ ajv@8.6.3: require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@^6.0.0, ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -10662,11 +10435,6 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" -arg@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.0.tgz#583c518199419e0037abb74062c37f8519e575f0" - integrity sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg== - arg@5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" @@ -10952,21 +10720,6 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async-listen@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/async-listen/-/async-listen-1.2.0.tgz#861ab6f92e1703ba54498b10ddb9b5da7b69f363" - integrity sha512-CcEtRh/oc9Jc4uWeUwdpG/+Mb2YUHKmdaTf0gUr7Wa+bfp4xx70HOb3RuSTJMvqKNB1TkdTfjLdrcz2X4rkkZA== - -async-listen@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/async-listen/-/async-listen-3.0.0.tgz#2e5941390b7d8c753d4dbe94bc6aecbdde52ec5e" - integrity sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg== - -async-listen@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/async-listen/-/async-listen-3.0.1.tgz#cbe4edeace2b93ebf5cf8092899ee139457978b7" - integrity sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA== - async-mutex@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" @@ -10981,11 +10734,6 @@ async-retry@^1.3.3: dependencies: retry "0.13.1" -async-sema@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/async-sema/-/async-sema-3.1.1.tgz#e527c08758a0f8f6f9f15f799a173ff3c40ea808" - integrity sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg== - async@1.x, async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -12122,7 +11870,7 @@ bind-decorator@^1.0.11: resolved "https://registry.yarnpkg.com/bind-decorator/-/bind-decorator-1.0.11.tgz#e41bc06a1f65dd9cec476c91c5daf3978488252f" integrity sha1-5BvAah9l3ZzsR2yRxdrzl4SIJS8= -bindings@^1.3.0, bindings@^1.4.0, bindings@^1.5.0: +bindings@^1.3.0, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -12648,11 +12396,6 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -13116,21 +12859,6 @@ chokidar@3.3.0: optionalDependencies: fsevents "~2.1.1" -chokidar@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" - integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.3.0" - optionalDependencies: - fsevents "~2.1.2" - chokidar@3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" @@ -13817,7 +13545,7 @@ content-hash@^2.5.2: multicodec "^0.5.5" multihashes "^0.4.15" -content-type@1.0.4, content-type@^1.0.4: +content-type@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== @@ -14350,13 +14078,6 @@ debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, de dependencies: ms "2.1.2" -debug@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - debug@4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" @@ -14549,11 +14270,6 @@ depd@2.0.0, depd@^2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - dequal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" @@ -14606,11 +14322,6 @@ detect-libc@^1.0.3: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== -detect-libc@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" - integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -14954,21 +14665,6 @@ edge-runtime@1.1.0-beta.23: pretty-ms "7.0.1" time-span "4.0.0" -edge-runtime@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/edge-runtime/-/edge-runtime-2.5.1.tgz#70591ba5746bf02edb4e616dc116ccf5954d458e" - integrity sha512-E0kY1Dqvwvk9yh7dvR56KnCjXf/dlbrrGjO5Sjnz9Ja3WqYT3csv2B8O4erxJiOWfWy9NTukBk4Kb3yrR66gBw== - dependencies: - "@edge-runtime/format" "2.2.0" - "@edge-runtime/vm" "3.1.1" - async-listen "3.0.1" - mri "1.2.0" - picocolors "1.0.0" - pretty-bytes "5.6.0" - pretty-ms "7.0.1" - signal-exit "4.0.2" - time-span "4.0.0" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -15858,22 +15554,22 @@ estree-to-babel@^3.1.0: "@babel/types" "^7.2.0" c8 "^7.6.0" -estree-walker@2.0.2, estree-walker@^2.0.1, estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - estree-walker@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^2.0.1, estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@1.8.1, etag@~1.8.1: +etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== @@ -16523,11 +16219,6 @@ eventid@^2.0.0: dependencies: uuid "^8.0.0" -events-intercept@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/events-intercept/-/events-intercept-2.0.0.tgz#adbf38681c5a4b2011c41ee41f61a34cba448897" - integrity sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q== - events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -16546,22 +16237,6 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== -execa@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.2.0.tgz#18326b79c7ab7fbd6610fd900c1b9e95fa48f90a" - integrity sha512-kJJfVbI/lZE1PZYDI5VPxp8zXPO9rtxOkhpZ0jMKha56AI9y2gGVC6bkukStQf0ka5Rh15BA5m7cCCH4jmHqkw== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - execa@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" @@ -17335,24 +17010,6 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed" - integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@8.1.0, fs-extra@^8.1, fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -17391,6 +17048,15 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^8.1, fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -17453,7 +17119,7 @@ fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -fsevents@~2.1.1, fsevents@~2.1.2: +fsevents@~2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== @@ -17549,11 +17215,6 @@ gcp-metadata@^5.0.0: gaxios "^5.0.0" json-bigint "^1.0.0" -generic-pool@3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.4.2.tgz#92ff7196520d670839a67308092a12aadf2f6a59" - integrity sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag== - gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -18696,17 +18357,6 @@ http-call@^5.2.2, http-call@^5.3.0: parse-json "^4.0.0" tunnel-agent "^0.6.0" -http-errors@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -18718,14 +18368,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.4.0.tgz#6c0242dea6b3df7afda153c71089b31c6e82aabf" - integrity sha512-oLjPqve1tuOl5aRhv8GK5eHpqP1C9fb+Ol+XTLjKfLltE44zdDbEdjPSbU7Ch5rSNsVFqZn97SrMmZLdu1/YMw== - dependencies: - inherits "2.0.1" - statuses ">= 1.2.1 < 2" - http-https@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" @@ -21702,7 +21344,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -21980,15 +21622,6 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micro@9.3.5-canary.3: - version "9.3.5-canary.3" - resolved "https://registry.yarnpkg.com/micro/-/micro-9.3.5-canary.3.tgz#e957598abb9ab05aea8453e0150a521fe22135c3" - integrity sha512-viYIo9PefV+w9dvoIBh1gI44Mvx1BOk67B4BpC2QK77qdY0xZF0Q+vWLt/BII6cLkIc8rLmSIcJaB/OrXXKe1g== - dependencies: - arg "4.1.0" - content-type "1.0.4" - raw-body "2.4.1" - microevent.ts@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" @@ -22228,11 +21861,6 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - minizlib@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -22840,13 +22468,6 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@2.6.9, node-fetch@^2.6.1, node-fetch@^2.6.7: - version "2.6.9" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" - integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== - dependencies: - whatwg-url "^5.0.0" - node-fetch@^1.0.1, node-fetch@~1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -22862,6 +22483,13 @@ node-fetch@^2.6.0: dependencies: whatwg-url "^5.0.0" +node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" @@ -22877,11 +22505,6 @@ node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== -node-gyp-build@^4.2.2: - version "4.6.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" - integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== - node-hid@^0.7.9: version "0.7.9" resolved "https://registry.yarnpkg.com/node-hid/-/node-hid-0.7.9.tgz#cc0cdf1418a286a7667f0b63642b5eeb544ccd05" @@ -22972,13 +22595,6 @@ nopt@3.x: dependencies: abbrev "1" -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -23434,11 +23050,6 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-paths@^4.0.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/os-paths/-/os-paths-4.4.0.tgz#2908b5bcb60cbfe3afb869292281a2a6b2f77ebe" - integrity sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg== - os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -23512,11 +23123,6 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -23866,14 +23472,6 @@ path-key@^4.0.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== -path-match@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/path-match/-/path-match-1.2.4.tgz#a62747f3c7e0c2514762697f24443585b09100ea" - integrity sha512-UWlehEdqu36jmh4h5CWJ7tARp1OEVKGHKm6+dg9qMq5RKUTV5WJrGgaZ3dN2m7WFAXDbjlHzvJvL/IUpy84Ktw== - dependencies: - http-errors "~1.4.0" - path-to-regexp "^1.0.0" - path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -23889,17 +23487,7 @@ path-to-regexp@2.2.1: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== -path-to-regexp@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.1.0.tgz#0b18f88b7a0ce0bfae6a25990c909ab86f512427" - integrity sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw== - -path-to-regexp@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" - integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== - -path-to-regexp@^1.0.0, path-to-regexp@^1.7.0: +path-to-regexp@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== @@ -23996,7 +23584,7 @@ picocolors@^0.2.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== -picomatch@^2.0.4, picomatch@^2.0.7, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -24496,11 +24084,6 @@ promiseback@^2.0.2: is-callable "^1.1.5" promise-deferred "^2.0.3" -promisepipe@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/promisepipe/-/promisepipe-3.0.0.tgz#c9b6e5aa861ef5fcce6134f6f75e14f8f30bd3b2" - integrity sha512-V6TbZDJ/ZswevgkDNpGt/YqNCiZP9ASfgU+p83uJE6NrGtvSGoOcHLiDCqkMs2+yg7F5qHdLV8d0aS8O26G/KA== - prompts@^2.0.1, prompts@^2.4.0: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -24909,16 +24492,6 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" - integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== - dependencies: - bytes "3.1.0" - http-errors "1.7.3" - iconv-lite "0.4.24" - unpipe "1.0.0" - raw-body@2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" @@ -25329,13 +24902,6 @@ readdirp@~3.2.0: dependencies: picomatch "^2.0.4" -readdirp@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" - integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== - dependencies: - picomatch "^2.0.7" - readdirp@~3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" @@ -26312,18 +25878,6 @@ semaphore@>=1.0.1, semaphore@^1.0.3: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - semver@7.3.7: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" @@ -26519,11 +26073,6 @@ setimmediate@^1.0.4, setimmediate@^1.0.5: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -26601,11 +26150,6 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" - integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== - signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -27039,11 +26583,6 @@ stacktrace-parser@^0.1.10: dependencies: type-fest "^0.7.1" -stat-mode@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.3.0.tgz#69283b081f851582b328d2a4ace5f591ce52f54b" - integrity sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng== - state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" @@ -27062,11 +26601,6 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.2.1 < 2", "statuses@>= 1.5.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" @@ -27148,7 +26682,7 @@ stream-to-it@^0.2.2: dependencies: get-iterator "^1.0.2" -stream-to-promise@2.2.0, stream-to-promise@^2.2.0: +stream-to-promise@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/stream-to-promise/-/stream-to-promise-2.2.0.tgz#b1edb2e1c8cb11289d1b503c08d3f2aef51e650f" integrity sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw== @@ -27692,19 +27226,6 @@ tar-stream@^2.0.1, tar-stream@^2.1.4: inherits "^2.0.3" readable-stream "^3.1.1" -tar@4.4.18: - version "4.4.18" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.18.tgz#a565090fdcf786ee08ed14b1739179451b3cc476" - integrity sha512-ZuOtqqmkV9RE1+4odd+MhBpibmCxNP6PJhH/h2OqNuotTX7/XHPZQJv2pKvWMplFH9SIZZhitehh6vBH6LO8Pg== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - tar@^4.0.2: version "4.4.19" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" @@ -27730,18 +27251,6 @@ tar@^6.0.2: mkdirp "^1.0.3" yallist "^4.0.0" -tar@^6.1.11: - version "6.2.0" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" - integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - teeny-request@^8.0.0: version "8.0.3" resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-8.0.3.tgz#5cb9c471ef5e59f2fca8280dc3c5909595e6ca24" @@ -28032,11 +27541,6 @@ toggle-selection@^1.0.6: resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - toidentifier@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -28086,11 +27590,6 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -tree-kill@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - treeify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" @@ -28168,7 +27667,18 @@ ts-morph@12.0.0: "@ts-morph/common" "~0.11.0" code-block-writer "^10.1.1" -ts-node@10.9.1, ts-node@^10.9.1: +ts-node@8.9.1: + version "8.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.9.1.tgz#2f857f46c47e91dcd28a14e052482eb14cfd65a5" + integrity sha512-yrq6ODsxEFTLz0R3BX2myf0WBCSQh9A+py8PBo1dCzWIOcvisbyH6akNKqDHMgXePF2kir5mm5JXJTH3OUJYOQ== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + +ts-node@^10.9.1: version "10.9.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== @@ -28187,17 +27697,6 @@ ts-node@10.9.1, ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -ts-node@8.9.1: - version "8.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.9.1.tgz#2f857f46c47e91dcd28a14e052482eb14cfd65a5" - integrity sha512-yrq6ODsxEFTLz0R3BX2myf0WBCSQh9A+py8PBo1dCzWIOcvisbyH6akNKqDHMgXePF2kir5mm5JXJTH3OUJYOQ== - dependencies: - arg "^4.1.0" - diff "^4.0.1" - make-error "^1.1.1" - source-map-support "^0.5.17" - yn "3.1.1" - ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" @@ -28398,11 +27897,6 @@ typescript@4.3.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc" integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew== -typescript@4.9.5: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - typescript@^3.9.7: version "3.9.10" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" @@ -28433,11 +27927,6 @@ uglify-js@^3.1.4, uglify-js@^3.7.7: resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== -uid-promise@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/uid-promise/-/uid-promise-1.0.0.tgz#68ef7c70a19dea4d637c7e3df2e0e548106f1a37" - integrity sha512-R8375j0qwXyIu/7R0tjdF06/sElHqbmdmWC9M2qQHpEVbvE4I5+38KJI7LUUmQMp7NVq4tKHiBMkT0NFM453Ig== - uint8arrays@1.1.0, uint8arrays@^1.0.0, uint8arrays@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-1.1.0.tgz#d034aa65399a9fd213a1579e323f0b29f67d0ed2" @@ -28480,13 +27969,6 @@ underscore@^1.7.0, underscore@~1.13.2: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== -undici@5.23.0: - version "5.23.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.23.0.tgz#e7bdb0ed42cebe7b7aca87ced53e6eaafb8f8ca0" - integrity sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg== - dependencies: - busboy "^1.6.0" - undici@^5.14.0: version "5.20.0" resolved "https://registry.yarnpkg.com/undici/-/undici-5.20.0.tgz#6327462f5ce1d3646bcdac99da7317f455bcc263" @@ -28984,24 +28466,6 @@ vary@^1, vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -vercel@^32.4.1: - version "32.4.1" - resolved "https://registry.yarnpkg.com/vercel/-/vercel-32.4.1.tgz#6a393d68de314b5ef06856b276705a2fc48312ae" - integrity sha512-cULmLvceDaluXz2usPtPYhb9y/jwjWolAjBBbG1DLGQmxVlnHVHTOJrYPaq2ioujQpU0yi92+RQPdzjzOY6aEg== - dependencies: - "@vercel/build-utils" "7.2.2" - "@vercel/fun" "1.1.0" - "@vercel/go" "3.0.3" - "@vercel/hydrogen" "1.0.1" - "@vercel/next" "4.0.10" - "@vercel/node" "3.0.7" - "@vercel/python" "4.0.2" - "@vercel/redwood" "2.0.4" - "@vercel/remix-builder" "2.0.9" - "@vercel/ruby" "2.0.2" - "@vercel/static-build" "2.0.8" - chokidar "3.3.1" - verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -29150,11 +28614,6 @@ web-namespaces@^1.0.0: resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== -web-vitals@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-0.2.4.tgz#ec3df43c834a207fd7cdefd732b2987896e08511" - integrity sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg== - web3-bzz@1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.7.4.tgz#9419e606e38a9777443d4ce40506ebd796e06075" @@ -30314,20 +29773,6 @@ x-default-browser@^0.4.0: optionalDependencies: default-browser-id "^1.0.4" -xdg-app-paths@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/xdg-app-paths/-/xdg-app-paths-5.1.0.tgz#f52f724f91e88244148c085c09bcd396443d8cae" - integrity sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA== - dependencies: - xdg-portable "^7.0.0" - -xdg-portable@^7.0.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/xdg-portable/-/xdg-portable-7.3.0.tgz#c6b1610de806a2ca1fe65727d5f8402c295d2e96" - integrity sha512-sqMMuL1rc0FmMBOzCpd0yuy9trqF2yTTVe+E9ogwCSWQCdDEtQUwrZPT6AxqtsFGRNxycgncbP/xmOOSPw5ZUw== - dependencies: - os-paths "^4.0.1" - xhr-request-promise@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" @@ -30574,22 +30019,7 @@ yargs@^4.7.1: y18n "^3.2.1" yargs-parser "^2.4.1" -yauzl-clone@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/yauzl-clone/-/yauzl-clone-1.0.4.tgz#8bc6d293b17cc98802bbbed2e289d18e7697c96c" - integrity sha512-igM2RRCf3k8TvZoxR2oguuw4z1xasOnA31joCqHIyLkeWrvAc2Jgay5ISQ2ZplinkoGaJ6orCz56Ey456c5ESA== - dependencies: - events-intercept "^2.0.0" - -yauzl-promise@2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/yauzl-promise/-/yauzl-promise-2.1.3.tgz#17467845db89fc6592ca987ca2ecfee8c381ae3d" - integrity sha512-A1pf6fzh6eYkK0L4Qp7g9jzJSDrM6nN0bOn5T0IbY4Yo3w+YkWlHFkJP7mzknMXjqusHFHlKsK2N+4OLsK2MRA== - dependencies: - yauzl "^2.9.1" - yauzl-clone "^1.0.4" - -yauzl@^2.10.0, yauzl@^2.9.1: +yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== From 80cb76f5159902db393a33ce2fc5155571e4ba56 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Tue, 10 Oct 2023 17:03:34 -0400 Subject: [PATCH 04/25] improve: throw error if recipient is not a contract --- api/_types/utility.types.ts | 6 ------ api/_utils.ts | 14 +++++++++----- api/suggested-fees.ts | 33 +++++++++++++-------------------- 3 files changed, 22 insertions(+), 31 deletions(-) diff --git a/api/_types/utility.types.ts b/api/_types/utility.types.ts index 186b51215..620c5e1ce 100644 --- a/api/_types/utility.types.ts +++ b/api/_types/utility.types.ts @@ -3,9 +3,3 @@ export type PoolStateResult = { exchangeRateCurrent: string; totalPoolSize: string; }; - -export type MessagePayload = { - message: string; - recipientAddress: string; - relayerAddress?: string; -}; diff --git a/api/_utils.ts b/api/_utils.ts index be9b144d6..34674da9e 100644 --- a/api/_utils.ts +++ b/api/_utils.ts @@ -33,7 +33,7 @@ import { maxRelayFeePct, relayerFeeCapitalCostConfig, } from "./_constants"; -import { MessagePayload, PoolStateResult } from "./_types"; +import { PoolStateResult } from "./_types"; type LoggingUtility = sdk.relayFeeCalculator.Logger; @@ -487,8 +487,10 @@ export const getRelayerFeeDetails = async ( amount: sdk.utils.BigNumberish, originChainId: number, destinationChainId: number, + recipientAddress: string, tokenPrice?: number, - messagePayload?: MessagePayload + message?: string, + relayerAddress?: string ): Promise => { const tokenSymbol = getTokenSymbol(l1Token); const relayFeeCalculator = getRelayerFeeCalculator(destinationChainId); @@ -498,8 +500,10 @@ export const getRelayerFeeDetails = async ( tokenSymbol, String(originChainId), String(destinationChainId), - messagePayload, - tokenPrice + recipientAddress, + message, + tokenPrice, + relayerAddress ); } catch (_e: unknown) { const e = _e as Error; @@ -512,7 +516,7 @@ export const getRelayerFeeDetails = async ( throw new Error( `Could not process relayer fee details. ${ - sdk.utils.isDefined(messagePayload) + sdk.utils.isDefined(message) ? " The likely cause is related to message payload." : "" }` diff --git a/api/suggested-fees.ts b/api/suggested-fees.ts index af7ac87e2..372ce7fcd 100644 --- a/api/suggested-fees.ts +++ b/api/suggested-fees.ts @@ -34,7 +34,7 @@ const SuggestedFeesQueryParamsSchema = type({ timestamp: optional(positiveIntStr()), skipAmountLimit: optional(boolStr()), message: optional(string()), - recipientAddress: optional(validAddress()), + recipientAddress: validAddress(), relayerAddress: optional(validAddress()), }); @@ -78,18 +78,18 @@ const handler = async ( token = ethers.utils.getAddress(token); - const [latestBlock, tokenDetails] = await Promise.all([ - provider.getBlock("latest"), - getTokenDetails(provider, undefined, token, originChainId), - ]); + const [latestBlock, tokenDetails, isRecipientAContract] = await Promise.all( + [ + provider.getBlock("latest"), + getTokenDetails(provider, undefined, token, originChainId), + sdk.utils.isContractDeployedToAddress(recipientAddress, provider), + ] + ); const { l1Token, hubPool, chainId: computedOriginChainId } = tokenDetails; - if ( - sdk.utils.isDefined(message) && - !sdk.utils.isDefined(recipientAddress) - ) { + if (sdk.utils.isDefined(message) && !isRecipientAContract) { throw new InputError( - "Recipient address is required when message is provided" + "Recipient address with a contract deployed to it is required when a message is provided" ); } if ( @@ -100,15 +100,6 @@ const handler = async ( throw new InputError("Message must be an even hex string"); } - const messagePayload = - sdk.utils.isDefined(message) && sdk.utils.isDefined(recipientAddress) - ? { - message, - recipientAddress, - relayerAddress, - } - : undefined; - // Note: Add a buffer to "latest" timestamp so that it corresponds to a block older than HEAD. // This is to improve relayer UX who have heightened risk of sending inadvertent invalid fills // for quote times right at HEAD (or worst, in the future of HEAD). If timestamp is supplied as @@ -182,8 +173,10 @@ const handler = async ( amount, computedOriginChainId, Number(destinationChainId), + recipientAddress, tokenPrice, - messagePayload + message, + relayerAddress ); const skipAmountLimitEnabled = skipAmountLimit === "true"; From bb5925eeafa9be3f73291a093f090ce2bbf484ad Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Fri, 20 Oct 2023 12:51:43 -0400 Subject: [PATCH 05/25] improve: change constructor imports --- api/_utils.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/api/_utils.ts b/api/_utils.ts index 34674da9e..72b277d36 100644 --- a/api/_utils.ts +++ b/api/_utils.ts @@ -333,6 +333,7 @@ export const queries: Record< undefined, undefined, undefined, + undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.MAINNET) @@ -343,6 +344,7 @@ export const queries: Record< undefined, undefined, undefined, + undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.OPTIMISM) @@ -353,6 +355,7 @@ export const queries: Record< undefined, undefined, undefined, + undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.POLYGON) @@ -363,6 +366,7 @@ export const queries: Record< undefined, undefined, undefined, + undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.ARBITRUM) @@ -373,6 +377,7 @@ export const queries: Record< undefined, undefined, undefined, + undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.ZK_SYNC) @@ -383,6 +388,7 @@ export const queries: Record< undefined, undefined, undefined, + undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.BASE) @@ -394,6 +400,7 @@ export const queries: Record< undefined, undefined, undefined, + undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.GOERLI) @@ -404,6 +411,7 @@ export const queries: Record< undefined, undefined, undefined, + undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.ARBITRUM_GOERLI) @@ -414,6 +422,7 @@ export const queries: Record< undefined, undefined, undefined, + undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.ZK_SYNC_GOERLI) @@ -424,6 +433,7 @@ export const queries: Record< undefined, undefined, undefined, + undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.BASE_GOERLI) From 2ae0db402987edf5944712ad7a11dff3a4ee3757 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Fri, 20 Oct 2023 12:52:06 -0400 Subject: [PATCH 06/25] chore: bump sdk --- package.json | 2 +- yarn.lock | 45 ++++++++++++++++++++++++++------------------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 9f3428a34..cbfb8ab0a 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "AGPL-3.0-only", "dependencies": { "@across-protocol/constants-v2": "^1.0.4", - "@across-protocol/sdk-v2": "^0.16.4", + "@across-protocol/sdk-v2": "^0.17.3", "@amplitude/analytics-browser": "^1.6.6", "@amplitude/marketing-analytics-browser": "^0.3.6", "@balancer-labs/sdk": "^1.1.3", diff --git a/yarn.lock b/yarn.lock index 0b72a21cd..39b758d6d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21,18 +21,19 @@ resolved "https://registry.yarnpkg.com/@across-protocol/constants-v2/-/constants-v2-1.0.4.tgz#df31c81038982a25de2b1b8f7604875f3de1186c" integrity sha512-Nzl8Z1rZFvcpuKQu7CmBVfvgB13/NoulcsRVYBSkG90imS/e6mugxzqD9UrUb+WOL0ODMCANCAoDw54ZBBzNiQ== -"@across-protocol/contracts-v2@^2.4.3": - version "2.4.3" - resolved "https://registry.yarnpkg.com/@across-protocol/contracts-v2/-/contracts-v2-2.4.3.tgz#9cc0b1f52b4f819b32ca1524ef84af9dfed8687a" - integrity sha512-NT5zBhTMYk7jUgZ6Q+xXz0p3ukXth8F6lBTiNCIrrzFSBl5JLVrhk00+TIIIOfwtpGSiG+MGkKuwCOKWMhwOMg== +"@across-protocol/contracts-v2@^2.4.4": + version "2.4.6" + resolved "https://registry.yarnpkg.com/@across-protocol/contracts-v2/-/contracts-v2-2.4.6.tgz#a87987a25fa30010387af1f9739b229953944e33" + integrity sha512-gIu/LC8c3c51A5XPwmmyPIbTY1z3dzBk+9P8HrdwFeFB7np9vl5GgUzkRyJoihHaeZCYP+Kj3eEy11Min+LbPA== dependencies: + "@across-protocol/constants-v2" "^1.0.4" "@defi-wonderland/smock" "^2.3.4" "@eth-optimism/contracts" "^0.5.40" "@ethersproject/abstract-provider" "5.7.0" "@ethersproject/abstract-signer" "5.7.0" "@ethersproject/bignumber" "5.7.0" - "@openzeppelin/contracts" "4.9.2" - "@openzeppelin/contracts-upgradeable" "4.9.2" + "@openzeppelin/contracts" "4.9.3" + "@openzeppelin/contracts-upgradeable" "4.9.3" "@uma/common" "^2.34.0" "@uma/contracts-node" "^0.4.17" "@uma/core" "^2.56.0" @@ -47,15 +48,16 @@ "@openzeppelin/contracts" "4.1.0" "@uma/core" "^2.18.0" -"@across-protocol/sdk-v2@^0.16.4": - version "0.16.4" - resolved "https://registry.yarnpkg.com/@across-protocol/sdk-v2/-/sdk-v2-0.16.4.tgz#89ef2dc46fae9647ed46fda50a4de270f925f68e" - integrity sha512-mpPYiW4Kb2uQXmPOmsnCqer/iSuRuixSJM91svIxwA2z3kw1xk57G94LeVSufFPzVD/5urUS/sYm7Ea0z75WSw== +"@across-protocol/sdk-v2@^0.17.3": + version "0.17.3" + resolved "https://registry.yarnpkg.com/@across-protocol/sdk-v2/-/sdk-v2-0.17.3.tgz#182b3a0ed20291de367bd5b757618a0d1b3ced52" + integrity sha512-xn74oeBTy/5cGzrZL//7KSYuKf0kviduspLlbQudFqGQDlMUOV0+23sHY/jBLh4DmKLJhFL7jPwk+xbkn1WPFw== dependencies: "@across-protocol/across-token" "^1.0.0" - "@across-protocol/contracts-v2" "^2.4.3" + "@across-protocol/contracts-v2" "^2.4.4" "@eth-optimism/sdk" "^2.1.0" "@pinata/sdk" "^2.1.0" + "@types/mocha" "^10.0.1" "@uma/sdk" "^0.34.1" axios "^0.27.2" big-number "^2.0.0" @@ -5997,10 +5999,10 @@ resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.3.tgz#f1d606e2827d409053f3e908ba4eb8adb1dd6995" integrity sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A== -"@openzeppelin/contracts-upgradeable@4.9.2": - version "4.9.2" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.2.tgz#a817c75688f8daede420052fbcb34e52482e769e" - integrity sha512-siviV3PZV/fHfPaoIC51rf1Jb6iElkYWnNYZ0leO23/ukXuvOyoC/ahy8jqiV7g+++9Nuo3n/rk5ajSN/+d/Sg== +"@openzeppelin/contracts-upgradeable@4.9.3": + version "4.9.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.3.tgz#ff17a80fb945f5102571f8efecb5ce5915cc4811" + integrity sha512-jjaHAVRMrE4UuZNfDwjlLGDxTHWIOwTJS2ldnc278a0gevfXfPr8hxKEVBGFBE96kl2G3VHDZhUimw/+G3TG2A== "@openzeppelin/contracts-upgradeable@^4.8.1": version "4.8.3" @@ -6028,10 +6030,10 @@ resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.7.3.tgz#939534757a81f8d69cc854c7692805684ff3111e" integrity sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw== -"@openzeppelin/contracts@4.9.2": - version "4.9.2" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.2.tgz#1cb2d5e4d3360141a17dbc45094a8cad6aac16c1" - integrity sha512-mO+y6JaqXjWeMh9glYVzVu8HYPGknAAnWyxTRhGeckOruyXQMNnlcW6w/Dx9ftLeIQk6N+ZJFuVmTwF7lEIFrg== +"@openzeppelin/contracts@4.9.3": + version "4.9.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.3.tgz#00d7a8cf35a475b160b3f0293a6403c511099364" + integrity sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg== "@openzeppelin/contracts@^4.2.0", "@openzeppelin/contracts@^4.7.3", "@openzeppelin/contracts@^4.8.1": version "4.8.3" @@ -8325,6 +8327,11 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== +"@types/mocha@^10.0.1": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.3.tgz#4804fe9cd39da26eb62fa65c15ea77615a187812" + integrity sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ== + "@types/ms@*": version "0.7.31" resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" From 1abe39e004dd4fde3782cfc4e860d02e1fa950c7 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Fri, 20 Oct 2023 14:31:50 -0400 Subject: [PATCH 07/25] improve: ready for changes --- api/_utils.ts | 43 ++++++++++++++++++------------- api/limits.ts | 2 ++ api/suggested-fees.ts | 59 ++++++++++++++++++++++++++++++------------- package.json | 2 +- yarn.lock | 9 ++++--- 5 files changed, 75 insertions(+), 40 deletions(-) diff --git a/api/_utils.ts b/api/_utils.ts index 72b277d36..a18022d40 100644 --- a/api/_utils.ts +++ b/api/_utils.ts @@ -333,7 +333,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.MAINNET) @@ -344,7 +343,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.OPTIMISM) @@ -355,7 +353,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.POLYGON) @@ -366,7 +363,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.ARBITRUM) @@ -377,7 +373,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.ZK_SYNC) @@ -388,7 +383,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.BASE) @@ -400,7 +394,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.GOERLI) @@ -411,7 +404,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.ARBITRUM_GOERLI) @@ -422,7 +414,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.ZK_SYNC_GOERLI) @@ -433,7 +424,6 @@ export const queries: Record< undefined, undefined, undefined, - undefined, REACT_APP_COINGECKO_PRO_API_KEY, getLogger(), getGasMarkup(CHAIN_IDs.BASE_GOERLI) @@ -502,18 +492,35 @@ export const getRelayerFeeDetails = async ( message?: string, relayerAddress?: string ): Promise => { - const tokenSymbol = getTokenSymbol(l1Token); + const tokenAddresses = sdk.utils.getL2TokenAddresses(l1Token); + if (!tokenAddresses) { + throw new InputError( + `Could not resolve token address for token ${l1Token}` + ); + } + const originToken = tokenAddresses[originChainId]; + const destinationToken = tokenAddresses[destinationChainId]; + const relayFeeCalculator = getRelayerFeeCalculator(destinationChainId); try { return await relayFeeCalculator.relayerFeeDetails( + { + amount: sdk.utils.toBN(amount), + depositId: sdk.utils.bnUint32Max.toNumber(), + depositor: sdk.utils.randomAddress(), // Random depositor - shouldn't make too much of a difference. + destinationChainId, + originChainId, + relayerFeePct: sdk.utils.bnZero, + realizedLpFeePct: sdk.utils.bnZero, + recipient: recipientAddress, + message: message ?? sdk.constants.EMPTY_MESSAGE, + quoteTimestamp: sdk.utils.getCurrentTime(), + originToken, + destinationToken, + }, amount, - tokenSymbol, - String(originChainId), - String(destinationChainId), - recipientAddress, - message, - tokenPrice, - relayerAddress + relayerAddress, + tokenPrice ); } catch (_e: unknown) { const e = _e as Error; diff --git a/api/limits.ts b/api/limits.ts index a052fc231..2ab48bb7d 100644 --- a/api/limits.ts +++ b/api/limits.ts @@ -30,6 +30,7 @@ import { HUB_POOL_CHAIN_ID, ENABLED_ROUTES, } from "./_utils"; +import { utils } from "@across-protocol/sdk-v2"; const LimitsQueryParamsSchema = object({ token: validAddress(), @@ -149,6 +150,7 @@ const handler = async ( ethers.BigNumber.from("10").pow(18), computedOriginChainId, Number(destinationChainId), + utils.randomAddress(), tokenPriceNative ), hubPool.callStatic.multicall(multicallInput, { blockTag: BLOCK_TAG_LAG }), diff --git a/api/suggested-fees.ts b/api/suggested-fees.ts index 372ce7fcd..c129b88e8 100644 --- a/api/suggested-fees.ts +++ b/api/suggested-fees.ts @@ -76,28 +76,53 @@ const handler = async ( throw new InputError("Origin and destination chains cannot be the same"); } + relayerAddress ??= sdk.constants.DEFAULT_SIMULATED_RELAYER_ADDRESS; token = ethers.utils.getAddress(token); - const [latestBlock, tokenDetails, isRecipientAContract] = await Promise.all( - [ - provider.getBlock("latest"), - getTokenDetails(provider, undefined, token, originChainId), - sdk.utils.isContractDeployedToAddress(recipientAddress, provider), - ] - ); + const [latestBlock, tokenDetails] = await Promise.all([ + provider.getBlock("latest"), + getTokenDetails(provider, undefined, token, originChainId), + ]); const { l1Token, hubPool, chainId: computedOriginChainId } = tokenDetails; - if (sdk.utils.isDefined(message) && !isRecipientAContract) { - throw new InputError( - "Recipient address with a contract deployed to it is required when a message is provided" + if (sdk.utils.isDefined(message) && !sdk.utils.isMessageEmpty(message)) { + if (message.length % 2 !== 0) { + // Our message encoding is a hex string, so we need to check that the length is even. + throw new InputError("Message must be an even hex string"); + } + const isRecipientAContract = await sdk.utils.isContractDeployedToAddress( + recipientAddress, + provider ); - } - if ( - sdk.utils.isDefined(message) && - // Our message encoding is a hex string, so we need to check that the length is even. - message.length % 2 !== 0 - ) { - throw new InputError("Message must be an even hex string"); + if (!isRecipientAContract) { + throw new InputError( + "Recipient address with a contract deployed to it is required when a message is provided" + ); + } else { + // If we're in this case, it's likely that we're going to have to simulate the execution of + // a complex message handling from the specified relayer to the specified recipient by calling + // the arbitrary function call `handleAcrossMessage` at the recipient. So that we can discern + // the difference between an OUT_OF_FUNDS error in either the transfer or through the execution + // of the `handleAcrossMessage` we will check that the balance of the relayer is sufficient to + // support this deposit. + const destinationToken = + sdk.utils.getL2TokenAddresses(l1Token)?.[Number(destinationChainId)]; + if (!sdk.utils.isDefined(destinationToken)) { + throw new InputError( + `Could not resolve token address on ${destinationChainId} for ${l1Token}` + ); + } + const balanceOfToken = await sdk.utils.getTokenBalance( + relayerAddress, + destinationToken, + provider + ); + if (balanceOfToken.lt(amountInput)) { + throw new InputError( + `Quotes for partial filling when message is defined are unavailable.` + ); + } + } } // Note: Add a buffer to "latest" timestamp so that it corresponds to a block older than HEAD. diff --git a/package.json b/package.json index cbfb8ab0a..655a06b96 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "AGPL-3.0-only", "dependencies": { "@across-protocol/constants-v2": "^1.0.4", - "@across-protocol/sdk-v2": "^0.17.3", + "@across-protocol/sdk-v2": "^0.17.5", "@amplitude/analytics-browser": "^1.6.6", "@amplitude/marketing-analytics-browser": "^0.3.6", "@balancer-labs/sdk": "^1.1.3", diff --git a/yarn.lock b/yarn.lock index 39b758d6d..630f8114f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -48,12 +48,13 @@ "@openzeppelin/contracts" "4.1.0" "@uma/core" "^2.18.0" -"@across-protocol/sdk-v2@^0.17.3": - version "0.17.3" - resolved "https://registry.yarnpkg.com/@across-protocol/sdk-v2/-/sdk-v2-0.17.3.tgz#182b3a0ed20291de367bd5b757618a0d1b3ced52" - integrity sha512-xn74oeBTy/5cGzrZL//7KSYuKf0kviduspLlbQudFqGQDlMUOV0+23sHY/jBLh4DmKLJhFL7jPwk+xbkn1WPFw== +"@across-protocol/sdk-v2@^0.17.5": + version "0.17.5" + resolved "https://registry.yarnpkg.com/@across-protocol/sdk-v2/-/sdk-v2-0.17.5.tgz#2163afb65092afa2f5d37eca511b1e4b89c0e2e6" + integrity sha512-C12ih8ZpX4Q+WLkPOCYqkR9K4GPEk9a8TGtPQdtdGszPS6/1t9mGGeU/dDJu52eMKRC8A7VmBNxwWndDcTdw/Q== dependencies: "@across-protocol/across-token" "^1.0.0" + "@across-protocol/constants-v2" "^1.0.4" "@across-protocol/contracts-v2" "^2.4.4" "@eth-optimism/sdk" "^2.1.0" "@pinata/sdk" "^2.1.0" From 8ab4e64b4070071a8c7dd10f7431e1914349bc24 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Fri, 20 Oct 2023 14:35:22 -0400 Subject: [PATCH 08/25] chore: wrap error --- api/_utils.ts | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/api/_utils.ts b/api/_utils.ts index a18022d40..c657ed9e7 100644 --- a/api/_utils.ts +++ b/api/_utils.ts @@ -523,22 +523,10 @@ export const getRelayerFeeDetails = async ( tokenPrice ); } catch (_e: unknown) { + // Resolve and transform the error const e = _e as Error; - // If the error is due to a specific number of erroneous inputs, - // we can propagate the error to the user as a 4xx. - if (e.message.includes("Could not simulate message fill.")) { - throw new InputError(e.message); - } else { - // Otherwise, we throw a 500. - throw new Error( - `Could not process relayer fee details. - ${ - sdk.utils.isDefined(message) - ? " The likely cause is related to message payload." - : "" - }` - ); - } + // We want to mask this error as an Input error. + throw new InputError(e?.message); } }; From 856bf67a4507d90a4e8c0d20e3d2deeb96e54434 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Mon, 23 Oct 2023 12:51:48 -0400 Subject: [PATCH 09/25] chore: resolve check for hex string at first --- api/suggested-fees.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/api/suggested-fees.ts b/api/suggested-fees.ts index c129b88e8..6d0d8bb4b 100644 --- a/api/suggested-fees.ts +++ b/api/suggested-fees.ts @@ -86,6 +86,9 @@ const handler = async ( const { l1Token, hubPool, chainId: computedOriginChainId } = tokenDetails; if (sdk.utils.isDefined(message) && !sdk.utils.isMessageEmpty(message)) { + if (!ethers.utils.isHexString(message)) { + throw new InputError("Message must be a hex string"); + } if (message.length % 2 !== 0) { // Our message encoding is a hex string, so we need to check that the length is even. throw new InputError("Message must be an even hex string"); From e0ca8d2363ba401b899ee2461829be2340ea8276 Mon Sep 17 00:00:00 2001 From: "James Morris, MS" <96435344+james-a-morris@users.noreply.github.com> Date: Mon, 23 Oct 2023 12:53:49 -0400 Subject: [PATCH 10/25] improve: doc representation Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com> --- api/suggested-fees.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/suggested-fees.ts b/api/suggested-fees.ts index 6d0d8bb4b..c1c852d18 100644 --- a/api/suggested-fees.ts +++ b/api/suggested-fees.ts @@ -99,7 +99,7 @@ const handler = async ( ); if (!isRecipientAContract) { throw new InputError( - "Recipient address with a contract deployed to it is required when a message is provided" + "Recipient must be a contract when a message is provided" ); } else { // If we're in this case, it's likely that we're going to have to simulate the execution of From a8e7c84a9c751734ff705059e7bd2c31e570f68c Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Mon, 23 Oct 2023 12:56:01 -0400 Subject: [PATCH 11/25] improve: error message --- api/suggested-fees.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/suggested-fees.ts b/api/suggested-fees.ts index c1c852d18..ac02c6e43 100644 --- a/api/suggested-fees.ts +++ b/api/suggested-fees.ts @@ -122,7 +122,7 @@ const handler = async ( ); if (balanceOfToken.lt(amountInput)) { throw new InputError( - `Quotes for partial filling when message is defined are unavailable.` + `Relayer Address (${relayerAddress}) doesn't have enough funds to support this deposit. For help, please reach out to https://discord.across.to` ); } } From 703312bb7db53f7766a41cc3ac2db9e4feb781ca Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Mon, 23 Oct 2023 14:00:04 -0400 Subject: [PATCH 12/25] improve: add token caching --- api/_utils.ts | 52 +++++++++++++++++++++++++++---- api/account-balance.ts | 70 ++++++++++++++++++++++++++++++++++++++++++ api/limits.ts | 8 ++--- api/suggested-fees.ts | 7 +++-- 4 files changed, 124 insertions(+), 13 deletions(-) create mode 100644 api/account-balance.ts diff --git a/api/_utils.ts b/api/_utils.ts index c657ed9e7..5a491d8e6 100644 --- a/api/_utils.ts +++ b/api/_utils.ts @@ -611,23 +611,63 @@ export const isRouteEnabled = ( }; /** - * Resolves the balance of a given ERC20 token at a provided address + * Resolves the balance of a given ERC20 token at a provided address. If no token is provided, the balance of the + * native currency will be returned. * @param chainId The blockchain Id to query against - * @param token The valid ERC20 token address on the given `chainId` + * @param token The valid ERC20 token address on the given `chainId`. If undefined, the native currency will be used * @param account A valid Web3 wallet address - * @param blockTag A blockTag to specify a historical balance date + * @param blockTag A blockTag to specify a historical balance date or the latest balance * @returns A promise that resolves to the BigNumber of the balance */ export const getBalance = ( chainId: string | number, - token: string, account: string, + token?: string, blockTag: number | "latest" = "latest" ): Promise => { - return ERC20__factory.connect(token, getProvider(Number(chainId))).balanceOf( + const provider = getProvider(Number(chainId)); + if (sdk.utils.isDefined(token)) { + return sdk.utils.getTokenBalance(account, token, provider, blockTag); + } else { + return provider.getBalance(account, blockTag); + } +}; + +/** + * Resolves the cached balance of a given ERC20 token at a provided address. If no token is provided, the balance of the + * native currency will be returned. + * @param chainId The blockchain Id to query against + * @param token The valid ERC20 token address on the given `chainId`. If undefined, the native currency will be used + * @param account A valid Web3 wallet address + * @param blockTag A blockTag to specify a historical balance date or the latest balance + * @returns A promise that resolves to the BigNumber of the balance + */ +export const getCachedTokenBalance = async ( + chainId: string | number, + account: string, + token?: string, + blockTag: number | "latest" = "latest" +): Promise => { + // Define the initial params + const params: Record = { + chainId, account, - { blockTag } + }; + if (token) { + params["token"] = token; + } + if (blockTag !== "latest") { + params["blockTag"] = blockTag; + } + // Make the request + const response = await axios.get<{ balance: string }>( + `${resolveVercelEndpoint()}/api/account-balance`, + { + params, + } ); + // Return the balance + return BigNumber.from(response.data.balance); }; /** diff --git a/api/account-balance.ts b/api/account-balance.ts new file mode 100644 index 000000000..952889d12 --- /dev/null +++ b/api/account-balance.ts @@ -0,0 +1,70 @@ +import { VercelResponse } from "@vercel/node"; +import { assert, Infer, optional, type, min, integer } from "superstruct"; +import { TypedVercelRequest } from "./_types"; +import { + getBalance, + getLogger, + handleErrorCondition, + validAddress, +} from "./_utils"; + +const AccountBalanceQueryParamsSchema = type({ + token: optional(validAddress()), + account: validAddress(), + chainId: min(integer(), 1), + blockTag: optional(min(integer(), 0)), +}); + +type AccountBalanceQueryParams = Infer; + +const handler = async ( + { query }: TypedVercelRequest, + response: VercelResponse +) => { + const logger = getLogger(); + logger.debug({ + at: "AccountBalance", + message: "Query data", + query, + }); + try { + // Validate the query parameters + assert(query, AccountBalanceQueryParamsSchema); + // Deconstruct the query parameters + let { token, account, chainId, blockTag } = query; + // Rely on the utils to query the balance of either the native + // token or an ERC20 token. + const balance = await getBalance(chainId, account, token, blockTag); + // Package the response + const result = { + balance: balance.toString(), + account: account, + token: token, + isNative: token === undefined, + tag: blockTag, + }; + // Determine the age of the caching of the response + // 1. If the blockTag is specified, then we can cache for 5 minutes (300 seconds) + // 2. If the blockTag is not specified, the "latest" block is used, and we should + // only cache for 10 seconds. + const cachingTime = blockTag ? 300 : 10; + // Log the response + logger.debug({ + at: "AccountBalance", + message: "Response data", + responseJson: result, + secondsCached: cachingTime, + }); + // Set the caching headers that will be used by the CDN. + response.setHeader( + "Cache-Control", + `s-maxage=${cachingTime}, stale-while-revalidate=${cachingTime}}` + ); + // Return the response + response.status(200).json(result); + } catch (error: unknown) { + return handleErrorCondition("account-balance", response, logger, error); + } +}; + +export default handler; diff --git a/api/limits.ts b/api/limits.ts index 2ab48bb7d..3fcced6c7 100644 --- a/api/limits.ts +++ b/api/limits.ts @@ -18,7 +18,7 @@ import { getRelayerFeeDetails, getCachedTokenPrice, getTokenDetails, - getBalance, + getCachedTokenBalance, maxBN, minBN, isRouteEnabled, @@ -156,7 +156,7 @@ const handler = async ( hubPool.callStatic.multicall(multicallInput, { blockTag: BLOCK_TAG_LAG }), Promise.all( fullRelayers.map((relayer) => - getBalance( + getCachedTokenBalance( destinationChainId!, destinationToken, relayer, @@ -166,7 +166,7 @@ const handler = async ( ), Promise.all( transferRestrictedRelayers.map((relayer) => - getBalance( + getCachedTokenBalance( destinationChainId!, destinationToken, relayer, @@ -178,7 +178,7 @@ const handler = async ( fullRelayers.map((relayer) => destinationChainId === "1" ? ethers.BigNumber.from("0") - : getBalance("1", l1Token, relayer, BLOCK_TAG_LAG) + : getCachedTokenBalance("1", l1Token, relayer, BLOCK_TAG_LAG) ) ), ]); diff --git a/api/suggested-fees.ts b/api/suggested-fees.ts index ac02c6e43..945a363f2 100644 --- a/api/suggested-fees.ts +++ b/api/suggested-fees.ts @@ -24,6 +24,7 @@ import { HUB_POOL_CHAIN_ID, ENABLED_ROUTES, getSpokePoolAddress, + getCachedTokenBalance, } from "./_utils"; const SuggestedFeesQueryParamsSchema = type({ @@ -115,10 +116,10 @@ const handler = async ( `Could not resolve token address on ${destinationChainId} for ${l1Token}` ); } - const balanceOfToken = await sdk.utils.getTokenBalance( - relayerAddress, + const balanceOfToken = await getCachedTokenBalance( + destinationChainId, destinationToken, - provider + relayerAddress ); if (balanceOfToken.lt(amountInput)) { throw new InputError( From bc6c8f73b975ca0f6a1025a16ca36003ac8730c9 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Tue, 24 Oct 2023 16:07:35 -0400 Subject: [PATCH 13/25] chore: remove blockTag --- api/account-balance.ts | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/api/account-balance.ts b/api/account-balance.ts index 952889d12..43218f226 100644 --- a/api/account-balance.ts +++ b/api/account-balance.ts @@ -12,7 +12,6 @@ const AccountBalanceQueryParamsSchema = type({ token: optional(validAddress()), account: validAddress(), chainId: min(integer(), 1), - blockTag: optional(min(integer(), 0)), }); type AccountBalanceQueryParams = Infer; @@ -31,34 +30,28 @@ const handler = async ( // Validate the query parameters assert(query, AccountBalanceQueryParamsSchema); // Deconstruct the query parameters - let { token, account, chainId, blockTag } = query; + let { token, account, chainId } = query; // Rely on the utils to query the balance of either the native // token or an ERC20 token. - const balance = await getBalance(chainId, account, token, blockTag); + const balance = await getBalance(chainId, account, token); // Package the response const result = { balance: balance.toString(), account: account, token: token, isNative: token === undefined, - tag: blockTag, + tag: "latest", }; - // Determine the age of the caching of the response - // 1. If the blockTag is specified, then we can cache for 5 minutes (300 seconds) - // 2. If the blockTag is not specified, the "latest" block is used, and we should - // only cache for 10 seconds. - const cachingTime = blockTag ? 300 : 10; // Log the response logger.debug({ at: "AccountBalance", message: "Response data", responseJson: result, - secondsCached: cachingTime, }); // Set the caching headers that will be used by the CDN. response.setHeader( "Cache-Control", - `s-maxage=${cachingTime}, stale-while-revalidate=${cachingTime}}` + "s-maxage=150, stale-while-revalidate=150" ); // Return the response response.status(200).json(result); From 682126802e21201ca5aed8a4aff88f54ca05101c Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Tue, 24 Oct 2023 16:13:33 -0400 Subject: [PATCH 14/25] improve: use dummy address --- api/_utils.ts | 7 +++++-- api/limits.ts | 3 +-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/api/_utils.ts b/api/_utils.ts index 8ab12cc8e..904f8364a 100644 --- a/api/_utils.ts +++ b/api/_utils.ts @@ -477,7 +477,10 @@ export const getTokenSymbol = (tokenAddress: string): string => { * @param amount The amount of funds that are requesting to be transferred * @param originChainId The origin chain that this token will be transferred from * @param destinationChainId The destination chain that this token will be transferred to + * @param recipientAddress The address that will receive the transferred funds * @param tokenPrice An optional overred price to prevent the SDK from creating its own call + * @param message An optional message to include in the transfer + * @param relayerAddress An optional relayer address to use for the transfer * @returns The a promise to the relayer fee for the given `amount` of transferring `l1Token` to `destinationChainId` */ export const getRelayerFeeDetails = async ( @@ -485,7 +488,7 @@ export const getRelayerFeeDetails = async ( amount: sdk.utils.BigNumberish, originChainId: number, destinationChainId: number, - recipientAddress: string, + recipientAddress = "0x893d0d70ad97717052e3aa8903d9615804167759", // A known dummy address tokenPrice?: number, message?: string, relayerAddress?: string @@ -505,7 +508,7 @@ export const getRelayerFeeDetails = async ( { amount: sdk.utils.toBN(amount), depositId: sdk.utils.bnUint32Max.toNumber(), - depositor: sdk.utils.randomAddress(), // Random depositor - shouldn't make too much of a difference. + depositor: recipientAddress, destinationChainId, originChainId, relayerFeePct: sdk.utils.bnZero, diff --git a/api/limits.ts b/api/limits.ts index 3fcced6c7..b856209ba 100644 --- a/api/limits.ts +++ b/api/limits.ts @@ -30,7 +30,6 @@ import { HUB_POOL_CHAIN_ID, ENABLED_ROUTES, } from "./_utils"; -import { utils } from "@across-protocol/sdk-v2"; const LimitsQueryParamsSchema = object({ token: validAddress(), @@ -150,7 +149,7 @@ const handler = async ( ethers.BigNumber.from("10").pow(18), computedOriginChainId, Number(destinationChainId), - utils.randomAddress(), + undefined, tokenPriceNative ), hubPool.callStatic.multicall(multicallInput, { blockTag: BLOCK_TAG_LAG }), From fef8c7a170bb8b4c89673a51c1867147de121c35 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Wed, 25 Oct 2023 11:08:04 -0400 Subject: [PATCH 15/25] improve: remove blocktag reference. Always "latest" --- api/_utils.ts | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/api/_utils.ts b/api/_utils.ts index 904f8364a..64c27b10c 100644 --- a/api/_utils.ts +++ b/api/_utils.ts @@ -617,20 +617,18 @@ export const isRouteEnabled = ( * @param chainId The blockchain Id to query against * @param token The valid ERC20 token address on the given `chainId`. If undefined, the native currency will be used * @param account A valid Web3 wallet address - * @param blockTag A blockTag to specify a historical balance date or the latest balance * @returns A promise that resolves to the BigNumber of the balance */ export const getBalance = ( chainId: string | number, account: string, - token?: string, - blockTag: number | "latest" = "latest" + token?: string ): Promise => { const provider = getProvider(Number(chainId)); if (sdk.utils.isDefined(token)) { - return sdk.utils.getTokenBalance(account, token, provider, blockTag); + return sdk.utils.getTokenBalance(account, token, provider); } else { - return provider.getBalance(account, blockTag); + return provider.getBalance(account); } }; @@ -640,14 +638,12 @@ export const getBalance = ( * @param chainId The blockchain Id to query against * @param token The valid ERC20 token address on the given `chainId`. If undefined, the native currency will be used * @param account A valid Web3 wallet address - * @param blockTag A blockTag to specify a historical balance date or the latest balance * @returns A promise that resolves to the BigNumber of the balance */ export const getCachedTokenBalance = async ( chainId: string | number, account: string, - token?: string, - blockTag: number | "latest" = "latest" + token?: string ): Promise => { // Define the initial params const params: Record = { @@ -657,9 +653,6 @@ export const getCachedTokenBalance = async ( if (token) { params["token"] = token; } - if (blockTag !== "latest") { - params["blockTag"] = blockTag; - } // Make the request const response = await axios.get<{ balance: string }>( `${resolveVercelEndpoint()}/api/account-balance`, From 5b790223cf646f5ba3626c29c36663f58b92e68f Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Wed, 25 Oct 2023 11:12:12 -0400 Subject: [PATCH 16/25] chore: fix bug --- api/limits.ts | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/api/limits.ts b/api/limits.ts index b856209ba..5cb785405 100644 --- a/api/limits.ts +++ b/api/limits.ts @@ -155,29 +155,19 @@ const handler = async ( hubPool.callStatic.multicall(multicallInput, { blockTag: BLOCK_TAG_LAG }), Promise.all( fullRelayers.map((relayer) => - getCachedTokenBalance( - destinationChainId!, - destinationToken, - relayer, - BLOCK_TAG_LAG - ) + getCachedTokenBalance(destinationChainId!, destinationToken, relayer) ) ), Promise.all( transferRestrictedRelayers.map((relayer) => - getCachedTokenBalance( - destinationChainId!, - destinationToken, - relayer, - BLOCK_TAG_LAG - ) + getCachedTokenBalance(destinationChainId!, destinationToken, relayer) ) ), Promise.all( fullRelayers.map((relayer) => destinationChainId === "1" ? ethers.BigNumber.from("0") - : getCachedTokenBalance("1", l1Token, relayer, BLOCK_TAG_LAG) + : getCachedTokenBalance("1", l1Token, relayer) ) ), ]); From 351f1027d5b03fa192098040389c42cef70b41b6 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Wed, 25 Oct 2023 11:38:43 -0400 Subject: [PATCH 17/25] improve: remove account balance --- api/_utils.ts | 35 +++++++++++++++-------------------- api/account-balance.ts | 8 +++----- 2 files changed, 18 insertions(+), 25 deletions(-) diff --git a/api/_utils.ts b/api/_utils.ts index 64c27b10c..98f409011 100644 --- a/api/_utils.ts +++ b/api/_utils.ts @@ -615,49 +615,44 @@ export const isRouteEnabled = ( * Resolves the balance of a given ERC20 token at a provided address. If no token is provided, the balance of the * native currency will be returned. * @param chainId The blockchain Id to query against - * @param token The valid ERC20 token address on the given `chainId`. If undefined, the native currency will be used * @param account A valid Web3 wallet address + * @param token The valid ERC20 token address on the given `chainId`. * @returns A promise that resolves to the BigNumber of the balance */ export const getBalance = ( chainId: string | number, account: string, - token?: string + token: string ): Promise => { - const provider = getProvider(Number(chainId)); - if (sdk.utils.isDefined(token)) { - return sdk.utils.getTokenBalance(account, token, provider); - } else { - return provider.getBalance(account); - } + return sdk.utils.getTokenBalance( + account, + token, + getProvider(Number(chainId)) + ); }; /** * Resolves the cached balance of a given ERC20 token at a provided address. If no token is provided, the balance of the * native currency will be returned. * @param chainId The blockchain Id to query against - * @param token The valid ERC20 token address on the given `chainId`. If undefined, the native currency will be used * @param account A valid Web3 wallet address + * @param token The valid ERC20 token address on the given `chainId`. * @returns A promise that resolves to the BigNumber of the balance */ export const getCachedTokenBalance = async ( chainId: string | number, account: string, - token?: string + token: string ): Promise => { - // Define the initial params - const params: Record = { - chainId, - account, - }; - if (token) { - params["token"] = token; - } - // Make the request + // Make the request to the vercel API. const response = await axios.get<{ balance: string }>( `${resolveVercelEndpoint()}/api/account-balance`, { - params, + params: { + chainId, + account, + token, + }, } ); // Return the balance diff --git a/api/account-balance.ts b/api/account-balance.ts index 43218f226..23cddae11 100644 --- a/api/account-balance.ts +++ b/api/account-balance.ts @@ -1,5 +1,5 @@ import { VercelResponse } from "@vercel/node"; -import { assert, Infer, optional, type, min, integer } from "superstruct"; +import { assert, Infer, type, string } from "superstruct"; import { TypedVercelRequest } from "./_types"; import { getBalance, @@ -9,9 +9,9 @@ import { } from "./_utils"; const AccountBalanceQueryParamsSchema = type({ - token: optional(validAddress()), + token: validAddress(), account: validAddress(), - chainId: min(integer(), 1), + chainId: string(), }); type AccountBalanceQueryParams = Infer; @@ -39,8 +39,6 @@ const handler = async ( balance: balance.toString(), account: account, token: token, - isNative: token === undefined, - tag: "latest", }; // Log the response logger.debug({ From aba05f7f9046216277bd27ab9eeb6c32f9cca949 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Wed, 25 Oct 2023 11:50:32 -0400 Subject: [PATCH 18/25] improve: use recipient ZERO_ADDRESS --- api/_utils.ts | 2 +- api/limits.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/api/_utils.ts b/api/_utils.ts index 98f409011..5fd60f5b3 100644 --- a/api/_utils.ts +++ b/api/_utils.ts @@ -488,7 +488,7 @@ export const getRelayerFeeDetails = async ( amount: sdk.utils.BigNumberish, originChainId: number, destinationChainId: number, - recipientAddress = "0x893d0d70ad97717052e3aa8903d9615804167759", // A known dummy address + recipientAddress: string, tokenPrice?: number, message?: string, relayerAddress?: string diff --git a/api/limits.ts b/api/limits.ts index 5cb785405..863338519 100644 --- a/api/limits.ts +++ b/api/limits.ts @@ -30,6 +30,7 @@ import { HUB_POOL_CHAIN_ID, ENABLED_ROUTES, } from "./_utils"; +import { constants } from "@across-protocol/sdk-v2"; const LimitsQueryParamsSchema = object({ token: validAddress(), @@ -149,7 +150,7 @@ const handler = async ( ethers.BigNumber.from("10").pow(18), computedOriginChainId, Number(destinationChainId), - undefined, + constants.ZERO_ADDRESS, tokenPriceNative ), hubPool.callStatic.multicall(multicallInput, { blockTag: BLOCK_TAG_LAG }), From ac085a46b417e897df54f2e19a5d3aa92cf212a0 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Wed, 25 Oct 2023 11:51:37 -0400 Subject: [PATCH 19/25] chore: change out comment --- api/account-balance.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/api/account-balance.ts b/api/account-balance.ts index 23cddae11..56be95685 100644 --- a/api/account-balance.ts +++ b/api/account-balance.ts @@ -31,8 +31,7 @@ const handler = async ( assert(query, AccountBalanceQueryParamsSchema); // Deconstruct the query parameters let { token, account, chainId } = query; - // Rely on the utils to query the balance of either the native - // token or an ERC20 token. + // Rely on the utils to query the balance of the account for the token const balance = await getBalance(chainId, account, token); // Package the response const result = { From fd5dc96b5d32118f903d90957f817e1bbab922e7 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Wed, 25 Oct 2023 14:23:59 -0400 Subject: [PATCH 20/25] improve: modify UI call --- src/hooks/useBridgeFees.ts | 1 + src/utils/bridge.ts | 2 ++ src/utils/serverless-api/mocked/suggested-fees.mocked.ts | 2 ++ src/utils/serverless-api/prod/suggested-fees.prod.ts | 3 +++ src/utils/serverless-api/types.ts | 1 + 5 files changed, 9 insertions(+) diff --git a/src/hooks/useBridgeFees.ts b/src/hooks/useBridgeFees.ts index 4fb798d56..12468f906 100644 --- a/src/hooks/useBridgeFees.ts +++ b/src/hooks/useBridgeFees.ts @@ -6,6 +6,7 @@ import { useBlock } from "./useBlock"; /** * This hook calculates the bridge fees for a given token and amount. * @param amount - The amount to check bridge fees for. + * @param recipient - The recipient of the bridge transfer. * @param fromChainId The chain Id of the origin chain * @param toChainId The chain Id of the receiving chain, its timestamp will be used to calculate the fees. * @param tokenSymbol - The token symbol to check bridge fees for. diff --git a/src/utils/bridge.ts b/src/utils/bridge.ts index c6b669eaa..7a8e577ff 100644 --- a/src/utils/bridge.ts +++ b/src/utils/bridge.ts @@ -8,6 +8,7 @@ import { getConfig } from "utils"; import getApiEndpoint from "./serverless-api"; import { BridgeLimitInterface } from "./serverless-api/types"; import { DepositNetworkMismatchProperties } from "ampli"; +import { AddressZero } from "./constants"; export type Fee = { total: ethers.BigNumber; @@ -64,6 +65,7 @@ export async function getBridgeFees({ lpFee, } = await getApiEndpoint().suggestedFees( amount, + AddressZero, // We don't need to know the recipient address for this call. getConfig().getTokenInfoBySymbol(fromChainId, tokenSymbol).address, toChainId, fromChainId diff --git a/src/utils/serverless-api/mocked/suggested-fees.mocked.ts b/src/utils/serverless-api/mocked/suggested-fees.mocked.ts index c5f2013fb..7048c1357 100644 --- a/src/utils/serverless-api/mocked/suggested-fees.mocked.ts +++ b/src/utils/serverless-api/mocked/suggested-fees.mocked.ts @@ -5,6 +5,7 @@ import { SuggestedApiFeeReturnType } from "../types"; /** * Creates a mocked variant of the suggestedAPI Call * @param _amount The amount of fees to calculate + * @param _recipientAddress The address of the recipient * @param _originToken The ERC20 token address from the origin chain * @param _toChainid The destination chain number. The chain `amount` of `originToken` will be bridged to * @param _fromChainid The origin chain number. The chain `amount` of `originToken` will be bridged from @@ -12,6 +13,7 @@ import { SuggestedApiFeeReturnType } from "../types"; */ export async function suggestedFeesMockedApiCall( _amount: ethers.BigNumber, + _recipientAddress: string, _originToken: string, _toChainid: ChainId, _fromChainid: ChainId diff --git a/src/utils/serverless-api/prod/suggested-fees.prod.ts b/src/utils/serverless-api/prod/suggested-fees.prod.ts index a348eb4e7..399a2f24b 100644 --- a/src/utils/serverless-api/prod/suggested-fees.prod.ts +++ b/src/utils/serverless-api/prod/suggested-fees.prod.ts @@ -6,6 +6,7 @@ import { SuggestedApiFeeReturnType } from "../types"; /** * Creates an HTTP call to the `suggested-fees` API endpoint * @param amount The amount of fees to calculate + * @param recipientAddress The address of the recipient * @param originToken The ERC20 token address from the origin chain * @param toChainid The destination chain number. The chain `amount` of `originToken` will be bridged to * @param fromChainid The origin chain number. The chain `amount` of `originToken` will be bridged from @@ -13,6 +14,7 @@ import { SuggestedApiFeeReturnType } from "../types"; */ export async function suggestedFeesApiCall( amount: ethers.BigNumber, + recipientAddress: string, originToken: string, toChainid: ChainId, fromChainid: ChainId @@ -24,6 +26,7 @@ export async function suggestedFeesApiCall( originChainId: fromChainid, amount: amount.toString(), skipAmountLimit: true, + recipientAddress, }, }); const result = response.data; diff --git a/src/utils/serverless-api/types.ts b/src/utils/serverless-api/types.ts index 9a5495978..0872e348b 100644 --- a/src/utils/serverless-api/types.ts +++ b/src/utils/serverless-api/types.ts @@ -54,6 +54,7 @@ export type SuggestedApiFeeReturnType = { export type SuggestedApiFeeType = ( amount: ethers.BigNumber, + recipientAddress: string, originToken: string, toChainid: ChainId, fromChainid: ChainId From 1d6d0e6588e4f9d6187d156d825fda3375769e05 Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Wed, 25 Oct 2023 16:32:42 -0400 Subject: [PATCH 21/25] chore: target block lag --- api/_utils.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/api/_utils.ts b/api/_utils.ts index 5fd60f5b3..2d0d6948b 100644 --- a/api/_utils.ts +++ b/api/_utils.ts @@ -32,6 +32,7 @@ import { TOKEN_SYMBOLS_MAP, maxRelayFeePct, relayerFeeCapitalCostConfig, + BLOCK_TAG_LAG, } from "./_constants"; import { PoolStateResult } from "./_types"; @@ -627,7 +628,8 @@ export const getBalance = ( return sdk.utils.getTokenBalance( account, token, - getProvider(Number(chainId)) + getProvider(Number(chainId)), + BLOCK_TAG_LAG ); }; From b16d52d79207d842640b9483e68e693312a1f305 Mon Sep 17 00:00:00 2001 From: "James Morris, MS" <96435344+james-a-morris@users.noreply.github.com> Date: Wed, 25 Oct 2023 17:47:30 -0400 Subject: [PATCH 22/25] chore: revise item --- api/suggested-fees.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/suggested-fees.ts b/api/suggested-fees.ts index 0e7d47db6..80321b079 100644 --- a/api/suggested-fees.ts +++ b/api/suggested-fees.ts @@ -118,8 +118,8 @@ const handler = async ( } const balanceOfToken = await getCachedTokenBalance( destinationChainId, - destinationToken, - relayerAddress + relayerAddress, + destinationToken ); if (balanceOfToken.lt(amountInput)) { throw new InputError( From 572ce1e3fdb8095e2211d3fd93281afd8f4a20dc Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Wed, 25 Oct 2023 18:18:45 -0400 Subject: [PATCH 23/25] improve: use optional param --- api/suggested-fees.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/suggested-fees.ts b/api/suggested-fees.ts index 80321b079..6c7d7b13c 100644 --- a/api/suggested-fees.ts +++ b/api/suggested-fees.ts @@ -35,7 +35,7 @@ const SuggestedFeesQueryParamsSchema = type({ timestamp: optional(positiveIntStr()), skipAmountLimit: optional(boolStr()), message: optional(string()), - recipientAddress: validAddress(), + recipientAddress: optional(validAddress()), relayerAddress: optional(validAddress()), }); @@ -78,6 +78,7 @@ const handler = async ( } relayerAddress ??= sdk.constants.DEFAULT_SIMULATED_RELAYER_ADDRESS; + recipientAddress ??= sdk.constants.DEFAULT_SIMULATED_RELAYER_ADDRESS; token = ethers.utils.getAddress(token); const [latestBlock, tokenDetails] = await Promise.all([ From 70bea1d4e4184cecd2aef5b820fa3ea8a675983e Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Wed, 25 Oct 2023 18:24:17 -0400 Subject: [PATCH 24/25] chore: revert optional params --- src/hooks/useBridgeFees.ts | 1 - src/utils/bridge.ts | 2 -- src/utils/serverless-api/mocked/suggested-fees.mocked.ts | 2 -- src/utils/serverless-api/prod/suggested-fees.prod.ts | 3 --- src/utils/serverless-api/types.ts | 1 - 5 files changed, 9 deletions(-) diff --git a/src/hooks/useBridgeFees.ts b/src/hooks/useBridgeFees.ts index 12468f906..4fb798d56 100644 --- a/src/hooks/useBridgeFees.ts +++ b/src/hooks/useBridgeFees.ts @@ -6,7 +6,6 @@ import { useBlock } from "./useBlock"; /** * This hook calculates the bridge fees for a given token and amount. * @param amount - The amount to check bridge fees for. - * @param recipient - The recipient of the bridge transfer. * @param fromChainId The chain Id of the origin chain * @param toChainId The chain Id of the receiving chain, its timestamp will be used to calculate the fees. * @param tokenSymbol - The token symbol to check bridge fees for. diff --git a/src/utils/bridge.ts b/src/utils/bridge.ts index 7a8e577ff..c6b669eaa 100644 --- a/src/utils/bridge.ts +++ b/src/utils/bridge.ts @@ -8,7 +8,6 @@ import { getConfig } from "utils"; import getApiEndpoint from "./serverless-api"; import { BridgeLimitInterface } from "./serverless-api/types"; import { DepositNetworkMismatchProperties } from "ampli"; -import { AddressZero } from "./constants"; export type Fee = { total: ethers.BigNumber; @@ -65,7 +64,6 @@ export async function getBridgeFees({ lpFee, } = await getApiEndpoint().suggestedFees( amount, - AddressZero, // We don't need to know the recipient address for this call. getConfig().getTokenInfoBySymbol(fromChainId, tokenSymbol).address, toChainId, fromChainId diff --git a/src/utils/serverless-api/mocked/suggested-fees.mocked.ts b/src/utils/serverless-api/mocked/suggested-fees.mocked.ts index 7048c1357..c5f2013fb 100644 --- a/src/utils/serverless-api/mocked/suggested-fees.mocked.ts +++ b/src/utils/serverless-api/mocked/suggested-fees.mocked.ts @@ -5,7 +5,6 @@ import { SuggestedApiFeeReturnType } from "../types"; /** * Creates a mocked variant of the suggestedAPI Call * @param _amount The amount of fees to calculate - * @param _recipientAddress The address of the recipient * @param _originToken The ERC20 token address from the origin chain * @param _toChainid The destination chain number. The chain `amount` of `originToken` will be bridged to * @param _fromChainid The origin chain number. The chain `amount` of `originToken` will be bridged from @@ -13,7 +12,6 @@ import { SuggestedApiFeeReturnType } from "../types"; */ export async function suggestedFeesMockedApiCall( _amount: ethers.BigNumber, - _recipientAddress: string, _originToken: string, _toChainid: ChainId, _fromChainid: ChainId diff --git a/src/utils/serverless-api/prod/suggested-fees.prod.ts b/src/utils/serverless-api/prod/suggested-fees.prod.ts index 399a2f24b..a348eb4e7 100644 --- a/src/utils/serverless-api/prod/suggested-fees.prod.ts +++ b/src/utils/serverless-api/prod/suggested-fees.prod.ts @@ -6,7 +6,6 @@ import { SuggestedApiFeeReturnType } from "../types"; /** * Creates an HTTP call to the `suggested-fees` API endpoint * @param amount The amount of fees to calculate - * @param recipientAddress The address of the recipient * @param originToken The ERC20 token address from the origin chain * @param toChainid The destination chain number. The chain `amount` of `originToken` will be bridged to * @param fromChainid The origin chain number. The chain `amount` of `originToken` will be bridged from @@ -14,7 +13,6 @@ import { SuggestedApiFeeReturnType } from "../types"; */ export async function suggestedFeesApiCall( amount: ethers.BigNumber, - recipientAddress: string, originToken: string, toChainid: ChainId, fromChainid: ChainId @@ -26,7 +24,6 @@ export async function suggestedFeesApiCall( originChainId: fromChainid, amount: amount.toString(), skipAmountLimit: true, - recipientAddress, }, }); const result = response.data; diff --git a/src/utils/serverless-api/types.ts b/src/utils/serverless-api/types.ts index 0872e348b..9a5495978 100644 --- a/src/utils/serverless-api/types.ts +++ b/src/utils/serverless-api/types.ts @@ -54,7 +54,6 @@ export type SuggestedApiFeeReturnType = { export type SuggestedApiFeeType = ( amount: ethers.BigNumber, - recipientAddress: string, originToken: string, toChainid: ChainId, fromChainid: ChainId From 11c855253cb063bffadaeec3a17a76090f6943cb Mon Sep 17 00:00:00 2001 From: james-a-morris Date: Wed, 25 Oct 2023 18:24:37 -0400 Subject: [PATCH 25/25] fix: invalid signature call --- api/limits.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api/limits.ts b/api/limits.ts index 863338519..57959453b 100644 --- a/api/limits.ts +++ b/api/limits.ts @@ -156,19 +156,19 @@ const handler = async ( hubPool.callStatic.multicall(multicallInput, { blockTag: BLOCK_TAG_LAG }), Promise.all( fullRelayers.map((relayer) => - getCachedTokenBalance(destinationChainId!, destinationToken, relayer) + getCachedTokenBalance(destinationChainId!, relayer, destinationToken) ) ), Promise.all( transferRestrictedRelayers.map((relayer) => - getCachedTokenBalance(destinationChainId!, destinationToken, relayer) + getCachedTokenBalance(destinationChainId!, relayer, destinationToken) ) ), Promise.all( fullRelayers.map((relayer) => destinationChainId === "1" ? ethers.BigNumber.from("0") - : getCachedTokenBalance("1", l1Token, relayer) + : getCachedTokenBalance("1", relayer, l1Token) ) ), ]);