From 0532de9dd1c4cf23c2318b6433ac5923f202b0e9 Mon Sep 17 00:00:00 2001 From: PhilReact Date: Fri, 11 Apr 2025 09:21:35 +0300 Subject: [PATCH] added interfaces --- package-lock.json | 672 ++++++++++++++++++++++--- package.json | 17 +- src/global.d.ts | 192 +++++-- src/hooks/useResources.tsx | 4 +- src/types/qortalRequests/interfaces.ts | 617 +++++++++++++++++++++++ src/types/qortalRequests/types.ts | 176 +++++++ src/utils/text.ts | 2 +- 7 files changed, 1542 insertions(+), 138 deletions(-) create mode 100644 src/types/qortalRequests/interfaces.ts create mode 100644 src/types/qortalRequests/types.ts diff --git a/package-lock.json b/package-lock.json index e9d2b7a..ec5d187 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "qapp-core", - "version": "1.0.17", + "version": "1.0.18", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "qapp-core", - "version": "1.0.17", + "version": "1.0.18", "license": "MIT", "dependencies": { "@tanstack/react-virtual": "^3.13.2", @@ -23,7 +23,14 @@ "zustand": "^4.3.2" }, "devDependencies": { + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", + "@mui/icons-material": "^7.0.1", + "@mui/material": "^7.0.1", "@types/crypto-js": "^4.2.2", + "@types/react": "^19.0.10", + "cpy-cli": "^5.0.0", + "react": "^19.0.0", "tsup": "^8.4.0", "typescript": "^5.2.0" }, @@ -39,7 +46,7 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", @@ -53,7 +60,7 @@ "version": "7.26.9", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", - "peer": true, + "dev": true, "dependencies": { "@babel/parser": "^7.26.9", "@babel/types": "^7.26.9", @@ -69,7 +76,7 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "peer": true, + "dev": true, "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" @@ -82,7 +89,7 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "peer": true, + "dev": true, "engines": { "node": ">=6.9.0" } @@ -91,7 +98,7 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "peer": true, + "dev": true, "engines": { "node": ">=6.9.0" } @@ -100,7 +107,7 @@ "version": "7.26.9", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", - "peer": true, + "dev": true, "dependencies": { "@babel/types": "^7.26.9" }, @@ -115,7 +122,7 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", - "peer": true, + "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -127,7 +134,7 @@ "version": "7.26.9", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", - "peer": true, + "dev": true, "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/parser": "^7.26.9", @@ -141,7 +148,7 @@ "version": "7.26.9", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", - "peer": true, + "dev": true, "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.9", @@ -159,7 +166,7 @@ "version": "7.26.9", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" @@ -172,7 +179,7 @@ "version": "11.13.5", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", @@ -191,7 +198,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -200,7 +207,7 @@ "version": "11.14.0", "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", - "peer": true, + "dev": true, "dependencies": { "@emotion/memoize": "^0.9.0", "@emotion/sheet": "^1.4.0", @@ -213,13 +220,13 @@ "version": "0.9.2", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", - "peer": true + "dev": true }, "node_modules/@emotion/is-prop-valid": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", - "peer": true, + "dev": true, "dependencies": { "@emotion/memoize": "^0.9.0" } @@ -228,13 +235,13 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", - "peer": true + "dev": true }, "node_modules/@emotion/react": { "version": "11.14.0", "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -258,7 +265,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", - "peer": true, + "dev": true, "dependencies": { "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", @@ -271,13 +278,13 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", - "peer": true + "dev": true }, "node_modules/@emotion/styled": { "version": "11.14.0", "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz", "integrity": "sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -300,13 +307,13 @@ "version": "0.10.0", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", - "peer": true + "dev": true }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", - "peer": true, + "dev": true, "peerDependencies": { "react": ">=16.8.0" } @@ -315,13 +322,13 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", - "peer": true + "dev": true }, "node_modules/@emotion/weak-memoize": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", - "peer": true + "dev": true }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.2", @@ -744,6 +751,7 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -757,6 +765,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -765,6 +774,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -772,12 +782,14 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -787,7 +799,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.0.2.tgz", "integrity": "sha512-TfeFU9TgN1N06hyb/pV/63FfO34nijZRMqgHk0TJ3gkl4Fbd+wZ73+ZtOd7jag6hMmzO9HSrBc6Vdn591nhkAg==", - "peer": true, + "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" @@ -797,7 +809,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.0.2.tgz", "integrity": "sha512-Bo57PFLOqXOqPNrXjd8AhzH5s6TCsNUQbvnQ0VKZ8D+lIlteqKnrk/O1luMJUc/BXONK7BfIdTdc7qOnXYbMdw==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.27.0" }, @@ -823,7 +835,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.0.2.tgz", "integrity": "sha512-rjJlJ13+3LdLfobRplkXbjIFEIkn6LgpetgU/Cs3Xd8qINCCQK9qXQIjjQ6P0FXFTPFzEVMj0VgBR1mN+FhOcA==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.27.0", "@mui/core-downloads-tracker": "^7.0.2", @@ -872,7 +884,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.0.2.tgz", "integrity": "sha512-6lt8heDC9wN8YaRqEdhqnm0cFCv08AMf4IlttFvOVn7ZdKd81PNpD/rEtPGLLwQAFyyKSxBG4/2XCgpbcdNKiA==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.27.0", "@mui/utils": "^7.0.2", @@ -899,7 +911,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.0.2.tgz", "integrity": "sha512-11Bt4YdHGlh7sB8P75S9mRCUxTlgv7HGbr0UKz6m6Z9KLeiw1Bm9y/t3iqLLVMvSHYB6zL8X8X+LmfTE++gyBw==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.27.0", "@emotion/cache": "^11.13.5", @@ -933,7 +945,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.0.2.tgz", "integrity": "sha512-yFUraAWYWuKIISPPEVPSQ1NLeqmTT4qiQ+ktmyS8LO/KwHxB+NNVOacEZaIofh5x1NxY8rzphvU5X2heRZ/RDA==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.27.0", "@mui/private-theming": "^7.0.2", @@ -973,7 +985,7 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.1.tgz", "integrity": "sha512-gUL8IIAI52CRXP/MixT1tJKt3SI6tVv4U/9soFsTtAsHzaJQptZ42ffdHZV3niX1ei0aUgMvOxBBN0KYqdG39g==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.27.0" }, @@ -990,7 +1002,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.0.2.tgz", "integrity": "sha512-72gcuQjPzhj/MLmPHLCgZjy2VjOH4KniR/4qRtXTTXIEwbkgcN+Y5W/rC90rWtMmZbjt9svZev/z+QHUI4j74w==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.27.0", "@mui/types": "^7.4.1", @@ -1016,6 +1028,41 @@ } } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -1030,7 +1077,7 @@ "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true, + "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -1337,19 +1384,19 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "peer": true + "dev": true }, "node_modules/@types/prop-types": { "version": "15.7.14", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", - "peer": true + "dev": true }, "node_modules/@types/react": { "version": "19.0.10", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz", "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==", - "peer": true, + "devOptional": true, "dependencies": { "csstype": "^3.0.2" } @@ -1358,7 +1405,7 @@ "version": "4.4.12", "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", - "peer": true, + "dev": true, "peerDependencies": { "@types/react": "*" } @@ -1374,6 +1421,22 @@ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", "optional": true }, + "node_modules/aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dev": true, + "dependencies": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", @@ -1404,6 +1467,18 @@ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true }, + "node_modules/arrify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", + "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/attr-accept": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz", @@ -1416,7 +1491,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", @@ -1492,6 +1567,18 @@ "balanced-match": "^1.0.0" } }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -1543,7 +1630,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "peer": true, + "dev": true, "engines": { "node": ">=6" } @@ -1563,11 +1650,38 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clean-stack/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "peer": true, + "dev": true, "engines": { "node": ">=6" } @@ -1621,13 +1735,13 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "peer": true + "dev": true }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "peer": true, + "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -1643,11 +1757,69 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "peer": true, + "dev": true, "engines": { "node": ">= 6" } }, + "node_modules/cp-file": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-10.0.0.tgz", + "integrity": "sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.10", + "nested-error-stacks": "^2.1.1", + "p-event": "^5.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cpy": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-10.1.0.tgz", + "integrity": "sha512-VC2Gs20JcTyeQob6UViBLnyP0bYHkBh6EiKzot9vi2DmeGlFT9Wd7VG3NBrkNx/jYvFBeyDOMMHdHQhbtKLgHQ==", + "dev": true, + "dependencies": { + "arrify": "^3.0.0", + "cp-file": "^10.0.0", + "globby": "^13.1.4", + "junk": "^4.0.1", + "micromatch": "^4.0.5", + "nested-error-stacks": "^2.1.1", + "p-filter": "^3.0.0", + "p-map": "^6.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cpy-cli": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-5.0.0.tgz", + "integrity": "sha512-fb+DZYbL9KHc0BC4NYqGRrDIJZPXUmjjtqdw4XRRg8iV8dIfghUX/WiL+q4/B/KFTy3sK6jsbUhBaz0/Hxg7IQ==", + "dev": true, + "dependencies": { + "cpy": "^10.1.0", + "meow": "^12.0.1" + }, + "bin": { + "cpy": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -1686,6 +1858,7 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, "dependencies": { "ms": "^2.1.3" }, @@ -1698,11 +1871,23 @@ } } }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" @@ -1732,7 +1917,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "peer": true, + "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -1781,7 +1966,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "peer": true, + "dev": true, "engines": { "node": ">=10" }, @@ -1789,6 +1974,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fdir": { "version": "6.4.3", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", @@ -1814,11 +2024,23 @@ "node": ">= 12" } }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "peer": true + "dev": true }, "node_modules/foreground-child": { "version": "3.3.1", @@ -1854,7 +2076,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "peer": true, + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1879,15 +2101,46 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/goober": { "version": "2.1.16", "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.16.tgz", @@ -1896,11 +2149,17 @@ "csstype": "^3.0.10" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "peer": true, + "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -1912,7 +2171,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "peer": true, + "dev": true, "dependencies": { "react-is": "^16.7.0" } @@ -1921,7 +2180,7 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "peer": true + "dev": true }, "node_modules/ieee754": { "version": "1.2.1", @@ -1942,11 +2201,20 @@ } ] }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "peer": true, + "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -1962,16 +2230,28 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "peer": true + "dev": true }, "node_modules/is-blob": { "version": "2.1.0", @@ -2010,7 +2290,7 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "peer": true, + "dev": true, "dependencies": { "hasown": "^2.0.2" }, @@ -2021,6 +2301,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -2030,6 +2319,27 @@ "node": ">=8" } }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2069,7 +2379,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "peer": true, + "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -2081,7 +2391,19 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "peer": true + "dev": true + }, + "node_modules/junk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", + "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/lilconfig": { "version": "3.1.3", @@ -2098,7 +2420,8 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "node_modules/load-tsconfig": { "version": "0.2.5", @@ -2142,6 +2465,52 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true }, + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -2169,7 +2538,8 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, "node_modules/mz": { "version": "2.7.0", @@ -2182,6 +2552,12 @@ "thenify-all": "^1.0.0" } }, + "node_modules/nested-error-stacks": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", + "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", + "dev": true + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2190,6 +2566,75 @@ "node": ">=0.10.0" } }, + "node_modules/p-event": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", + "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==", + "dev": true, + "dependencies": { + "p-timeout": "^5.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz", + "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==", + "dev": true, + "dependencies": { + "p-map": "^5.1.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter/node_modules/p-map": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "dev": true, + "dependencies": { + "aggregate-error": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-6.0.0.tgz", + "integrity": "sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -2200,7 +2645,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "peer": true, + "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -2212,7 +2657,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "peer": true, + "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -2239,7 +2684,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "peer": true + "dev": true }, "node_modules/path-scurry": { "version": "1.11.1", @@ -2261,7 +2706,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "peer": true, + "dev": true, "engines": { "node": ">=8" } @@ -2269,7 +2714,8 @@ "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true }, "node_modules/picomatch": { "version": "4.0.2", @@ -2358,11 +2804,30 @@ "node": ">=6" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/react": { "version": "19.0.0", "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -2429,13 +2894,13 @@ "version": "19.1.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz", "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==", - "peer": true + "dev": true }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -2469,13 +2934,13 @@ "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "peer": true + "dev": true }, "node_modules/resolve": { "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "peer": true, + "dev": true, "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -2500,6 +2965,16 @@ "node": ">=8" } }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rollup": { "version": "4.39.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.39.0.tgz", @@ -2539,6 +3014,29 @@ "fsevents": "~2.3.2" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/scheduler": { "version": "0.25.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", @@ -2592,6 +3090,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/source-map": { "version": "0.8.0-beta.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", @@ -2704,7 +3214,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", - "peer": true + "dev": true }, "node_modules/sucrase": { "version": "3.35.0", @@ -2732,7 +3242,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.4" }, @@ -2783,6 +3293,18 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", diff --git a/package.json b/package.json index 52eba31..b5d6bfa 100644 --- a/package.json +++ b/package.json @@ -9,13 +9,17 @@ ".": { "import": "./dist/index.mjs", "require": "./dist/index.js" + }, + "./global": { + "types": "./dist/src/global.d.ts" } }, "files": [ "dist" ], "scripts": { - "build": "tsup", + "build": "tsup && npm run copy-types", + "copy-types": "cpy src/global.d.ts dist", "prepare": "npm run build", "clean": "rm -rf dist" }, @@ -39,17 +43,18 @@ "@mui/icons-material": "^7.0.1", "@mui/material": "^7.0.1", "react": "^19.0.0" -}, + }, "devDependencies": { - "@types/crypto-js": "^4.2.2", - "tsup": "^8.4.0", - "typescript": "^5.2.0", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", "@mui/icons-material": "^7.0.1", "@mui/material": "^7.0.1", + "@types/crypto-js": "^4.2.2", + "@types/react": "^19.0.10", + "cpy-cli": "^5.0.0", "react": "^19.0.0", - "@types/react": "^19.0.10" + "tsup": "^8.4.0", + "typescript": "^5.2.0" }, "repository": { "type": "git", diff --git a/src/global.d.ts b/src/global.d.ts index 0d1c920..ff49e82 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -1,60 +1,144 @@ -// src/global.d.ts -interface QortalRequestOptions { - action: string - name?: string - service?: string - data64?: string - title?: string - description?: string - category?: string - tags?: string[] - identifier?: string - address?: string - metaData?: string - encoding?: string - includeMetadata?: boolean - limit?: numebr - offset?: number - reverse?: boolean - resources?: any[] - filename?: string - list_name?: string - item?: string - items?: strings[] - tag1?: string - tag2?: string - tag3?: string - tag4?: string - tag5?: string - coin?: string - destinationAddress?: string - amount?: number - blob?: Blob - mimeType?: string - file?: File - encryptedData?: string - prefix?: boolean - exactMatchNames?: boolean - base64?: string - groupId?: number | string - isAdmins?: boolean - payments?: any[] - assetId?: number, - publicKeys?: string[] - recipient?: string, - before?: number | null - qortalLink?: string -} +import { AddForeignServerQortalRequest, AddListItemsQortalRequest, BuyNameQortalRequest, CancelSellNameQortalRequest, CancelTradeSellOrderQortalRequest, CreatePollQortalRequest, CreateTradeBuyOrderQortalRequest, CreateTradeSellOrderQortalRequest, DecryptDataQortalRequest, DecryptDataWithSharingKeyQortalRequest, DecryptQortalGroupDataQortalRequest, DeleteHostedDataQortalRequest, DeleteListItemQortalRequest, EncryptDataQortalRequest, EncryptDataWithSharingKeyQortalRequest, EncryptQortalGroupDataQortalRequest, FetchQdnResourceQortalRequest, GetAccountDataQortalRequest, GetAccountNamesQortalRequest, GetBalanceQortalRequest, GetCrosschainServerInfoQortalRequest, GetDaySummaryQortalRequest, GetForeignFeeQortalRequest, GetHostedDataQortalRequest, GetListItemsQortalRequest, GetNameDataQortalRequest, GetPriceQortalRequest, GetQdnResourceMetadataQortalRequest, GetQdnResourcePropertiesQortalRequest, GetQdnResourceStatusQortalRequest, GetQdnResourceUrlQortalRequest, GetServerConnectionHistoryQortalRequest, GetTxActivitySummaryQortalRequest, GetUserAccountQortalRequest, GetUserWalletInfoQortalRequest, GetUserWalletQortalRequest, GetWalletBalanceQortalRequest, LinkToQdnResourceQortalRequest, ListQdnResourcesQortalRequest, PublishMultipleQdnResourcesQortalRequest, PublishQdnResourceQortalRequest, RegisterNameQortalRequest, RemoveForeignServerQortalRequest, SearchNamesQortalRequest, SearchQdnResourcesQortalRequest, SellNameQortalRequest, SendCoinQortalRequest, SetCurrentForeignServerQortalRequest, UpdateForeignFeeQortalRequest, UpdateNameQortalRequest, VoteOnPollQortalRequest, SendChatMessageQortalRequest, SearchChatMessagesQortalRequest, JoinGroupQortalRequest, AddGroupAdminQortalRequest, UpdateGroupQortalRequest, ListGroupsQortalRequest, CreateGroupQortalRequest, RemoveGroupAdminQortalRequest, BanFromGroupQortalRequest, CancelGroupBanQortalRequest, KickFromGroupQortalRequest, InviteToGroupQortalRequest, CancelGroupInviteQortalRequest, LeaveGroupQortalRequest, DeployAtQortalRequest, GetAtQortalRequest, GetAtDataQortalRequest, ListAtsQortalRequest, FetchBlockQortalRequest, FetchBlockRangeQortalRequest, SearchTransactionsQortalRequest, IsUsingPublicNodeQortalRequest, AdminActionQortalRequest, OpenNewTabQortalRequest, ShowActionsQortalRequest, SignTransactionQortalRequest, } from "./types/qortalRequests/interfaces" -declare function qortalRequest(options: QortalRequestOptions): Promise -declare function qortalRequestWithTimeout( - options: QortalRequestOptions, - time: number, -): Promise +export {} // mark this file as a module declare global { + + // interface QortalRequestOptions { + // action: string + // name?: string + // service?: string + // data64?: string + // title?: string + // description?: string + // category?: string + // tags?: string[] + // identifier?: string + // address?: string + // metaData?: string + // encoding?: string + // includeMetadata?: boolean + // limit?: number + // offset?: number + // reverse?: boolean + // resources?: any[] + // filename?: string + // list_name?: string + // item?: string + // items?: string[] + // tag1?: string + // tag2?: string + // tag3?: string + // tag4?: string + // tag5?: string + // coin?: string + // destinationAddress?: string + // amount?: number + // blob?: Blob + // mimeType?: string + // file?: File + // encryptedData?: string + // prefix?: boolean + // exactMatchNames?: boolean + // base64?: string + // groupId?: number | string + // isAdmins?: boolean + // payments?: any[] + // assetId?: number + // publicKeys?: string[] + // recipient?: string + // before?: number | null + // qortalLink?: string + // } + + type QortalRequestOptions = + SendCoinQortalRequest | + GetCrosschainServerInfoQortalRequest | + GetTxActivitySummaryQortalRequest | + GetForeignFeeQortalRequest | + UpdateForeignFeeQortalRequest | + GetServerConnectionHistoryQortalRequest | + SetCurrentForeignServerQortalRequest | + AddForeignServerQortalRequest | + RemoveForeignServerQortalRequest | + GetDaySummaryQortalRequest | + CreateTradeBuyOrderQortalRequest | + CreateTradeSellOrderQortalRequest | + CancelTradeSellOrderQortalRequest | + GetPriceQortalRequest | + GetUserAccountQortalRequest | + GetUserWalletQortalRequest | + GetWalletBalanceQortalRequest | + GetUserWalletInfoQortalRequest | + GetAccountDataQortalRequest | + GetAccountNamesQortalRequest | + SearchNamesQortalRequest | + GetNameDataQortalRequest | + GetBalanceQortalRequest | + RegisterNameQortalRequest | + SellNameQortalRequest | + CancelSellNameQortalRequest | + BuyNameQortalRequest | + UpdateNameQortalRequest | + VoteOnPollQortalRequest | + CreatePollQortalRequest | + GetListItemsQortalRequest | + AddListItemsQortalRequest | + DeleteListItemQortalRequest | + DecryptDataQortalRequest | + PublishMultipleQdnResourcesQortalRequest | + PublishQdnResourceQortalRequest | + EncryptDataQortalRequest | + DecryptQortalGroupDataQortalRequest | + EncryptQortalGroupDataQortalRequest | + DecryptDataWithSharingKeyQortalRequest | + EncryptDataWithSharingKeyQortalRequest | + GetHostedDataQortalRequest | + DeleteHostedDataQortalRequest | + GetQdnResourceUrlQortalRequest | + LinkToQdnResourceQortalRequest | + ListQdnResourcesQortalRequest | + SearchQdnResourcesQortalRequest | + FetchQdnResourceQortalRequest | + GetQdnResourceStatusQortalRequest | + GetQdnResourcePropertiesQortalRequest | + GetQdnResourceMetadataQortalRequest | + SendChatMessageQortalRequest | + SearchChatMessagesQortalRequest | + JoinGroupQortalRequest | + ListGroupsQortalRequest | + CreateGroupQortalRequest | + UpdateGroupQortalRequest | + AddGroupAdminQortalRequest | + RemoveGroupAdminQortalRequest | + BanFromGroupQortalRequest | + CancelGroupBanQortalRequest | + KickFromGroupQortalRequest | + InviteToGroupQortalRequest | + CancelGroupInviteQortalRequest | + LeaveGroupQortalRequest | + DeployAtQortalRequest | + GetAtQortalRequest | + GetAtDataQortalRequest | + ListAtsQortalRequest | + FetchBlockQortalRequest | + FetchBlockRangeQortalRequest | + SearchTransactionsQortalRequest | + IsUsingPublicNodeQortalRequest | + AdminActionQortalRequest | + OpenNewTabQortalRequest | + ShowActionsQortalRequest | + SignTransactionQortalRequest + + + function qortalRequest(options: QortalRequestOptions): Promise + function qortalRequestWithTimeout( + options: QortalRequestOptions, + time: number + ): Promise + interface Window { - _qdnBase: any // Replace 'any' with the appropriate type if you know it + _qdnBase: any _qdnTheme: string } -} \ No newline at end of file +} diff --git a/src/hooks/useResources.tsx b/src/hooks/useResources.tsx index 6721a35..422640d 100644 --- a/src/hooks/useResources.tsx +++ b/src/hooks/useResources.tsx @@ -211,7 +211,7 @@ export const useResources = (retryAttempts: number = 2) => { let responseData: QortalMetadata[] = []; let filteredResults: QortalMetadata[] = []; - let lastCreated = params.before || null; + let lastCreated = params.before || undefined; const targetLimit = params.limit ?? 20; // Use `params.limit` if provided, else default to 20 while (filteredResults.length < targetLimit) { @@ -255,7 +255,7 @@ export const useResources = (retryAttempts: number = 2) => { let responseData: QortalMetadata[] = []; let filteredResults: QortalMetadata[] = []; - let lastCreated = params.before || null; + let lastCreated = params.before || undefined; const targetLimit = params.limit ?? 20; while (filteredResults.length < targetLimit) { diff --git a/src/types/qortalRequests/interfaces.ts b/src/types/qortalRequests/interfaces.ts new file mode 100644 index 0000000..8a71bed --- /dev/null +++ b/src/types/qortalRequests/interfaces.ts @@ -0,0 +1,617 @@ +import { + Coin, + ConfirmationStatus, + ConnectionType, + CrosschainAtInfo, + FeeType, + ForeignBlockchain, + ForeignCoin, + ResourcePointer, + ResourceToPublish, + Service, + TxType, +} from "./types"; + +interface BaseRequest { + action: string; +} + +export interface SendCoinQortalRequest extends BaseRequest { + action: "SEND_COIN"; + coin: Coin; + recipient: string; + amount: number; +} + +export interface GetCrosschainServerInfoQortalRequest extends BaseRequest { + action: "GET_CROSSCHAIN_SERVER_INFO"; + coin: ForeignCoin; +} + +export interface GetTxActivitySummaryQortalRequest extends BaseRequest { + action: "GET_TX_ACTIVITY_SUMMARY"; + coin: ForeignBlockchain; +} + +export interface GetForeignFeeQortalRequest extends BaseRequest { + action: "GET_FOREIGN_FEE"; + coin: ForeignCoin; + type: FeeType; +} + +export interface UpdateForeignFeeQortalRequest extends BaseRequest { + action: "UPDATE_FOREIGN_FEE"; + coin: ForeignCoin; + type: FeeType; + value: number; +} + +export interface GetServerConnectionHistoryQortalRequest extends BaseRequest { + action: "GET_SERVER_CONNECTION_HISTORY"; + coin: ForeignCoin; +} + +export interface SetCurrentForeignServerQortalRequest extends BaseRequest { + action: "SET_CURRENT_FOREIGN_SERVER"; + coin: ForeignCoin; + type: ConnectionType; + host: string; + port: number; +} + +export interface AddForeignServerQortalRequest extends BaseRequest { + action: "ADD_FOREIGN_SERVER"; + coin: ForeignCoin; + type: ConnectionType; + host: string; + port: number; +} + +export interface RemoveForeignServerQortalRequest extends BaseRequest { + action: "REMOVE_FOREIGN_SERVER"; + coin: ForeignCoin; + type: ConnectionType; + host: string; + port: number; +} + +export interface GetDaySummaryQortalRequest extends BaseRequest { + action: "GET_DAY_SUMMARY"; +} + +export interface CreateTradeBuyOrderQortalRequest extends BaseRequest { + action: "CREATE_TRADE_BUY_ORDER"; + foreignBlockchain: ForeignBlockchain; + crosschainAtInfo: CrosschainAtInfo[]; +} + +export interface CreateTradeSellOrderQortalRequest extends BaseRequest { + action: "CREATE_TRADE_SELL_ORDER"; + foreignBlockchain: ForeignBlockchain; + qortAmount: number; + foreignAmount: number; +} + +export interface CancelTradeSellOrderQortalRequest extends BaseRequest { + action: "CANCEL_TRADE_SELL_ORDER"; + atAddress: string; +} + +export interface GetPriceQortalRequest extends BaseRequest { + action: "GET_PRICE"; + blockchain: ForeignBlockchain; + inverse?: boolean; + maxtrades?: number; +} + +export interface GetUserAccountQortalRequest extends BaseRequest { + action: "GET_USER_ACCOUNT"; +} + +export interface GetUserWalletQortalRequest extends BaseRequest { + action: "GET_USER_WALLET"; + coin: Coin; +} + +export interface GetWalletBalanceQortalRequest extends BaseRequest { + action: "GET_WALLET_BALANCE"; + coin: Coin; +} + +export interface GetUserWalletInfoQortalRequest extends BaseRequest { + action: "GET_USER_WALLET_INFO"; + coin: Coin; +} + +export interface GetAccountDataQortalRequest extends BaseRequest { + action: "GET_ACCOUNT_DATA"; + address: string; +} + +export interface GetAccountNamesQortalRequest extends BaseRequest { + action: "GET_ACCOUNT_NAMES"; + address: string; + limit?: number; + offset?: number; + reverse?: boolean; +} + +export interface SearchNamesQortalRequest extends BaseRequest { + action: "SEARCH_NAMES"; + query: string; + limit?: number; + offset?: number; + reverse?: boolean; + prefix?: boolean; +} + +export interface GetNameDataQortalRequest extends BaseRequest { + action: "GET_NAME_DATA"; + name: string; +} + +export interface GetBalanceQortalRequest extends BaseRequest { + action: "GET_BALANCE"; + address: string; +} + +export interface RegisterNameQortalRequest extends BaseRequest { + action: "REGISTER_NAME"; + name: string; + description?: string; +} + +export interface SellNameQortalRequest extends BaseRequest { + action: "SELL_NAME"; + salePrice: number; + nameForSale: string; +} + +export interface CancelSellNameQortalRequest extends BaseRequest { + action: "CANCEL_SELL_NAME"; + nameForSale: string; +} + +export interface BuyNameQortalRequest extends BaseRequest { + action: "BUY_NAME"; + nameForSale: string; +} + +export interface UpdateNameQortalRequest extends BaseRequest { + action: "UPDATE_NAME"; + oldName: string; + newName: string; + description?: string; +} + +export interface VoteOnPollQortalRequest extends BaseRequest { + action: "VOTE_ON_POLL"; + pollName: string; + optionIndex: number; +} + +export interface CreatePollQortalRequest extends BaseRequest { + action: "CREATE_POLL"; + pollName: string; + pollDescription: string; + pollOptions: string[]; + pollOwnerAddress: string; +} + +export interface GetListItemsQortalRequest extends BaseRequest { + action: "GET_LIST_ITEMS"; + list_name: string; +} + +export interface AddListItemsQortalRequest extends BaseRequest { + action: "ADD_LIST_ITEMS"; + list_name: string; + items: string[]; +} + +export interface DeleteListItemQortalRequest extends BaseRequest { + action: "DELETE_LIST_ITEM"; + list_name: string; + items: string[]; +} + +export interface DecryptDataQortalRequest extends BaseRequest { + action: "DECRYPT_DATA"; + encryptedData: string; +} + +export type PublishMultipleQdnResourcesQortalRequest = + | (BaseRequest & { + action: "PUBLISH_MULTIPLE_QDN_RESOURCES"; + resources: ResourceToPublish[]; + encrypt?: false | undefined; + }) + | (BaseRequest & { + action: "PUBLISH_MULTIPLE_QDN_RESOURCES"; + resources: ResourceToPublish[]; + encrypt: true; + publicKeys?: string[]; + }); + +export interface PublishQdnResourceQortalRequestBase extends BaseRequest { + action: "PUBLISH_QDN_RESOURCE"; + service: Service; + identifier: string; + title?: string; + description?: string; + category?: string; + tags?: string[]; + filename?: string; +} + +export type PublishQdnResourceQortalRequest = + | (PublishQdnResourceQortalRequestBase & { + base64: string + encrypt?: false | undefined + }) + | (PublishQdnResourceQortalRequestBase & { + data64: string + encrypt?: false | undefined + }) + | (PublishQdnResourceQortalRequestBase & { + file: File + encrypt?: false | undefined + }) + | (PublishQdnResourceQortalRequestBase & { + file: File + encrypt: true + publicKeys?: string[] + }) + + +export type EncryptDataQortalRequest = + | { + action: "ENCRYPT_DATA"; + file: File; + publicKeys: string[]; + } + | { + action: "ENCRYPT_DATA"; + base64: string; + publicKeys: string[]; + }; + +export interface DecryptQortalGroupDataQortalRequest extends BaseRequest { + action: "DECRYPT_QORTAL_GROUP_DATA"; + base64: string; + isAdmins?: boolean; + groupId: number; +} + +export type EncryptQortalGroupDataQortalRequest = + | { + action: "ENCRYPT_QORTAL_GROUP_DATA"; + file: File; + isAdmins: boolean; + groupId: number; + } + | { + action: "ENCRYPT_QORTAL_GROUP_DATA"; + base64: string; + isAdmins: boolean; + groupId: number; + }; + +export interface DecryptDataWithSharingKeyQortalRequest extends BaseRequest { + action: "DECRYPT_DATA_WITH_SHARING_KEY"; + encryptedData: string; + key: string; +} + +export type EncryptDataWithSharingKeyQortalRequest = + | { + action: "ENCRYPT_DATA_WITH_SHARING_KEY"; + file: File; + publicKeys?: string[]; + } + | { + action: "ENCRYPT_DATA_WITH_SHARING_KEY"; + base64: string; + publicKeys?: string[]; + }; + +export interface GetHostedDataQortalRequest extends BaseRequest { + action: "GET_HOSTED_DATA"; + limit?: number; + offset?: number; + query?: string; +} + +export interface DeleteHostedDataQortalRequest extends BaseRequest { + action: "DELETE_HOSTED_DATA"; + hostedData: ResourcePointer[]; +} + +export interface GetQdnResourceUrlQortalRequest extends BaseRequest { + action: "GET_QDN_RESOURCE_URL"; + service: Service; + identifier?: string; + name: string; + path?: string; +} + +export interface LinkToQdnResourceQortalRequest extends BaseRequest { + action: "LINK_TO_QDN_RESOURCE"; + service: Service; + identifier?: string; + name: string; + path?: string; +} + +export interface ListQdnResourcesQortalRequest extends BaseRequest { + action: "LIST_QDN_RESOURCES"; + name?: string; + identifier?: string; + default?: boolean; + includeStatus?: boolean; + includeMetadata?: boolean; + followedOnly?: boolean; + excludeBlocked?: boolean; + limit?: number; + offset?: number; + reverse?: boolean; +} + +export interface SearchQdnResourcesQortalRequest extends BaseRequest { + action: 'SEARCH_QDN_RESOURCES' + default?: boolean + includeStatus?: boolean + includeMetadata?: boolean + followedOnly?: boolean + excludeBlocked?: boolean + limit?: number + offset?: number + before?: number + after?: number + reverse?: boolean + names?: string[] + keywords?: string[] + exactMatchNames?: boolean + mode?: 'ALL' | 'LATEST' + prefix?: boolean + } + + + export interface FetchQdnResourceQortalRequest extends BaseRequest { + action: 'FETCH_QDN_RESOURCE' + identifier: string + name: string + service: Service + encoding?: string + rebuild?: boolean + } + + export interface GetQdnResourceStatusQortalRequest extends BaseRequest { + action: 'GET_QDN_RESOURCE_STATUS' + identifier?: string + name: string + service: Service + build?: boolean + } + + export interface GetQdnResourcePropertiesQortalRequest extends BaseRequest { + action: 'GET_QDN_RESOURCE_PROPERTIES' + identifier?: string + name: string + service: Service + } + + export interface GetQdnResourceMetadataQortalRequest extends BaseRequest { + action: 'GET_QDN_RESOURCE_METADATA' + identifier?: string + name: string + service: Service + } + + export interface SendChatMessageQortalRequest extends BaseRequest { + action: 'SEND_CHAT_MESSAGE' + recipient: string + message?: string + groupId?: number + chatReference?: string + fullContent?: any + } + + export interface SearchChatMessagesQortalRequest extends BaseRequest { + action: 'SEARCH_CHAT_MESSAGES' + offset?: number + limit?: number + reverse?: boolean + encoding: 'BASE64' | 'BASE58' + haschatreference?: boolean + chatreference?: string + sender?: string + involving: string[] + txGroupId: number + before?: number + after?: number + } + + export interface JoinGroupQortalRequest extends BaseRequest { + action: 'JOIN_GROUP' + groupId: number + } + + export interface ListGroupsQortalRequest extends BaseRequest { + action: 'LIST_GROUPS' + limit?: number + offset?: number + reverse?: boolean + } + + type GroupType = 1 | 0 + + export interface CreateGroupQortalRequest extends BaseRequest { + action: 'CREATE_GROUP' + groupName: string + description?: string + type: GroupType + approvalThreshold: number + minBlock: number + maxBlock: number + } + + export interface UpdateGroupQortalRequest extends BaseRequest { + action: 'UPDATE_GROUP' + newOwner: string + groupId: number + description?: string + type: GroupType + approvalThreshold: number + minBlock: number + maxBlock: number + } + + export interface AddGroupAdminQortalRequest extends BaseRequest { + action: 'ADD_GROUP_ADMIN' + groupId: number + qortalAddress: string + } + + + export interface RemoveGroupAdminQortalRequest extends BaseRequest { + action: 'REMOVE_GROUP_ADMIN' + groupId: number + qortalAddress: string + } + + + export interface BanFromGroupQortalRequest extends BaseRequest { + action: 'BAN_FROM_GROUP' + groupId: number + banTime: number + qortalAddress: string + reason?: string + } + + export interface CancelGroupBanQortalRequest extends BaseRequest { + action: 'CANCEL_GROUP_BAN' + groupId: number + qortalAddress: string + } + + export interface KickFromGroupQortalRequest extends BaseRequest { + action: 'KICK_FROM_GROUP' + groupId: number + qortalAddress: string + reason?: string + } + + export interface InviteToGroupQortalRequest extends BaseRequest { + action: 'INVITE_TO_GROUP' + groupId: number + inviteeAddress: string + inviteTime: number + } + + export interface CancelGroupInviteQortalRequest extends BaseRequest { + action: 'CANCEL_GROUP_INVITE' + groupId: number + qortalAddress: string + } + + + export interface LeaveGroupQortalRequest extends BaseRequest { + action: 'LEAVE_GROUP' + groupId: number + } + + export interface DeployAtQortalRequest extends BaseRequest { + action: 'DEPLOY_AT' + name: string + description: string + tags: string + creationBytes: string + amount: number + assetId: number + type: string + } + + export interface GetAtQortalRequest extends BaseRequest { + action: 'GET_AT' + atAddress: string + } + + export interface GetAtDataQortalRequest extends BaseRequest { + action: 'GET_AT_DATA' + atAddress: string + } + + export interface ListAtsQortalRequest extends BaseRequest { + action: 'LIST_ATS' + limit?: number + offset?: number + reverse?: boolean + isExecutable?: boolean + codeHash58?: string + } + + export interface FetchBlockQortalRequest extends BaseRequest { + action: 'FETCH_BLOCK' + signature: string + includeOnlineSignatures?: boolean + } + + export interface FetchBlockRangeQortalRequest extends BaseRequest { + action: 'FETCH_BLOCK_RANGE' + height: number + count: number + includeOnlineSignatures?: boolean + reverse?: boolean + } + + + + export interface SearchTransactionsQortalRequest extends BaseRequest { + action: 'SEARCH_TRANSACTIONS' + startBlock?: number + blockLimit?: number + txGroupId?: number + txType?: TxType[] + address?: string + confirmationStatus?: ConfirmationStatus + limit?: number + offset?: number + reverse?: boolean + } + + export interface IsUsingPublicNodeQortalRequest extends BaseRequest { + action: 'IS_USING_PUBLIC_NODE' + } + + export type AdminActionType = + | 'stop' + | 'restart' + | 'bootstrap' + | 'addmintingaccount' + | 'removemintingaccount' + | 'forcesync' + | 'addpeer' + | 'removepeer' + +export interface AdminActionQortalRequest extends BaseRequest { + action: 'ADMIN_ACTION' + type: AdminActionType +} + +export interface OpenNewTabQortalRequest extends BaseRequest { + action: 'OPEN_NEW_TAB' + qortalLink: string +} + + +export interface ShowActionsQortalRequest extends BaseRequest { + action: 'SHOW_ACTIONS' +} + +export interface SignTransactionQortalRequest extends BaseRequest { + action: 'SIGN_TRANSACTION' + unsignedBytes: string + process?: boolean +} + diff --git a/src/types/qortalRequests/types.ts b/src/types/qortalRequests/types.ts new file mode 100644 index 0000000..dc47d13 --- /dev/null +++ b/src/types/qortalRequests/types.ts @@ -0,0 +1,176 @@ +export type ForeignCoin = + | 'BTC' + | 'LTC' + | 'DOGE' + | 'DGB' + | 'RVN' + | 'ARRR' + + export type Coin = + | 'QORT' + | 'BTC' + | 'LTC' + | 'DOGE' + | 'DGB' + | 'RVN' + | 'ARRR' + + + export type ForeignBlockchain = + | 'LITECOIN' + | 'DOGECOIN' + | 'BITCOIN' + | 'DIGIBYTE' + | 'RAVENCOIN' + | 'PIRATECHAIN' + + export type FeeType = 'feekb' | 'feeceiling' + export type ConnectionType = 'SSL' | 'TCP' + + export interface CrosschainAtInfo { + qortalAtAddress: string; + } + + export type Service = + | 'AUTO_UPDATE' + | 'ARBITRARY_DATA' + | 'QCHAT_ATTACHMENT' + | 'QCHAT_ATTACHMENT_PRIVATE' + | 'ATTACHMENT' + | 'ATTACHMENT_PRIVATE' + | 'FILE' + | 'FILE_PRIVATE' + | 'FILES' + | 'CHAIN_DATA' + | 'WEBSITE' + | 'GIT_REPOSITORY' + | 'IMAGE' + | 'IMAGE_PRIVATE' + | 'THUMBNAIL' + | 'QCHAT_IMAGE' + | 'VIDEO' + | 'VIDEO_PRIVATE' + | 'AUDIO' + | 'AUDIO_PRIVATE' + | 'QCHAT_AUDIO' + | 'QCHAT_VOICE' + | 'VOICE' + | 'VOICE_PRIVATE' + | 'PODCAST' + | 'BLOG' + | 'BLOG_POST' + | 'BLOG_COMMENT' + | 'DOCUMENT' + | 'DOCUMENT_PRIVATE' + | 'LIST' + | 'PLAYLIST' + | 'APP' + | 'METADATA' + | 'JSON' + | 'GIF_REPOSITORY' + | 'STORE' + | 'PRODUCT' + | 'OFFER' + | 'COUPON' + | 'CODE' + | 'PLUGIN' + | 'EXTENSION' + | 'GAME' + | 'ITEM' + | 'NFT' + | 'DATABASE' + | 'SNAPSHOT' + | 'COMMENT' + | 'CHAIN_COMMENT' + | 'MAIL' + | 'MAIL_PRIVATE' + | 'MESSAGE' + | 'MESSAGE_PRIVATE' + + + export type ResourceToPublish = + | { + service: Service + identifier: string + title?: string + description?: string + category?: string + tags?: string[] + base64: string + filename?: string + disableEncrypt?: boolean + } + | { + service: Service + identifier: string + title?: string + description?: string + category?: string + tags?: string[] + data64: string + filename?: string + disableEncrypt?: boolean + } + | { + service: Service + identifier: string + title?: string + description?: string + category?: string + tags?: string[] + file: File + filename?: string + disableEncrypt?: boolean + } + + + export interface ResourcePointer { + service: Service + identifier: string + name: string + } + + export type ConfirmationStatus = "CONFIRMED" | "UNCONFIRMED" | "BOTH" + + export type TxType = + | 'GENESIS' + | 'PAYMENT' + | 'REGISTER_NAME' + | 'UPDATE_NAME' + | 'SELL_NAME' + | 'CANCEL_SELL_NAME' + | 'BUY_NAME' + | 'CREATE_POLL' + | 'VOTE_ON_POLL' + | 'ARBITRARY' + | 'ISSUE_ASSET' + | 'TRANSFER_ASSET' + | 'CREATE_ASSET_ORDER' + | 'CANCEL_ASSET_ORDER' + | 'MULTI_PAYMENT' + | 'DEPLOY_AT' + | 'MESSAGE' + | 'CHAT' + | 'PUBLICIZE' + | 'AIRDROP' + | 'AT' + | 'CREATE_GROUP' + | 'UPDATE_GROUP' + | 'ADD_GROUP_ADMIN' + | 'REMOVE_GROUP_ADMIN' + | 'GROUP_BAN' + | 'CANCEL_GROUP_BAN' + | 'GROUP_KICK' + | 'GROUP_INVITE' + | 'CANCEL_GROUP_INVITE' + | 'JOIN_GROUP' + | 'LEAVE_GROUP' + | 'GROUP_APPROVAL' + | 'SET_GROUP' + | 'UPDATE_ASSET' + | 'ACCOUNT_FLAGS' + | 'ENABLE_FORGING' + | 'REWARD_SHARE' + | 'ACCOUNT_LEVEL' + | 'TRANSFER_PRIVS' + | 'PRESENCE' diff --git a/src/utils/text.ts b/src/utils/text.ts index 1b0a5ff..9a3708e 100644 --- a/src/utils/text.ts +++ b/src/utils/text.ts @@ -103,7 +103,7 @@ export function processText(input: string): string { e.stopPropagation() qortalRequest({ action: 'JOIN_GROUP', - groupId: id + groupId: +id }) return }