From 960200d4100f19d1db5d1f990720fff314cd2f6d Mon Sep 17 00:00:00 2001 From: "@s.roertgen" Date: Tue, 20 Aug 2024 21:19:55 +0200 Subject: [PATCH] add edu-feed --- package-lock.json | 2723 ++++++++++++++++++++ package.json | 1 + resources/public/assets/edu-feed-logo.webp | Bin 0 -> 166544 bytes resources/public/css/output.css | 350 ++- src/ied/db.cljs | 13 +- src/ied/events.cljs | 215 +- src/ied/nostr.cljs | 130 +- src/ied/routes.cljs | 10 +- src/ied/subs.cljs | 130 +- src/ied/views.cljs | 400 ++- tailwind.config.js | 13 +- 11 files changed, 3755 insertions(+), 230 deletions(-) create mode 100644 package-lock.json create mode 100644 resources/public/assets/edu-feed-logo.webp diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0777e9f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2723 @@ +{ + "name": "ied", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ied", + "dependencies": { + "@noble/secp256k1": "^2.1.0", + "bech32": "^2.0.0", + "js-confetti": "^0.12.0", + "nostr-tools": "^2.7.2", + "react": "17.0.2", + "react-dom": "17.0.2" + }, + "devDependencies": { + "daisyui": "^4.12.10", + "shadow-cljs": "2.26.2", + "tailwindcss": "^3.4.9" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "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" + } + }, + "node_modules/@jridgewell/set-array": { + "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" + } + }, + "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==", + "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" + } + }, + "node_modules/@noble/ciphers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", + "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/secp256k1": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-2.1.0.tgz", + "integrity": "sha512-XLEQQNdablO0XZOIniFQimiXsZDNwaYgL96dZwC54Q30imSbAOFf3NKtepc+cXyuZf5Q1HCgbqgZ2UFFuHVcEw==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "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", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@scure/bip32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", + "dependencies": { + "@noble/curves": "~1.1.0", + "@noble/hashes": "~1.3.1", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dependencies": { + "@noble/hashes": "1.3.1" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", + "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.4", + "util": "^0.10.4" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "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/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/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/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css-selector-tokenizer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz", + "integrity": "sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/culori": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/culori/-/culori-3.3.0.tgz", + "integrity": "sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/daisyui": { + "version": "4.12.10", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-4.12.10.tgz", + "integrity": "sha512-jp1RAuzbHhGdXmn957Z2XsTZStXGHzFfF0FgIOZj3Wv9sH7OZgLfXTRZNfKVYxltGUOBsG1kbWAdF5SrqjebvA==", + "dev": true, + "dependencies": { + "css-selector-tokenizer": "^0.8", + "culori": "^3", + "picocolors": "^1", + "postcss-js": "^4" + }, + "engines": { + "node": ">=16.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/daisyui" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", + "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/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/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "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/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "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", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "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/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-confetti": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/js-confetti/-/js-confetti-0.12.0.tgz", + "integrity": "sha512-1R0Akxn3Zn82pMqW65N1V2NwKkZJ75bvBN/VAb36Ya0YHwbaSiAJZVRr/19HBxH/O8x2x01UFAbYI18VqlDN6g==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "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.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nostr-tools": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.7.2.tgz", + "integrity": "sha512-Bq3Ug0SZFtgtL1+0wCnAe8AJtI7yx/00/a2nUug9SkhfOwlKS92Tef12iCK9FdwXw+oFZWMtRnSwcLayQso+xA==", + "dependencies": { + "@noble/ciphers": "^0.5.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.1", + "@scure/base": "1.1.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + }, + "optionalDependencies": { + "nostr-wasm": "v0.1.0" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/nostr-wasm": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/nostr-wasm/-/nostr-wasm-0.1.0.tgz", + "integrity": "sha512-78BTryCLcLYv96ONU8Ws3Q1JzjlAt+43pWQhIl86xZmWeegYCNLPml7yQ+gG3vR6V5h4XGj+TxO+SS5dsThQIA==", + "optional": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parse-asn1": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", + "dev": true, + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "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/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/qs": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "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/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readline-sync": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "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/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shadow-cljs": { + "version": "2.26.2", + "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.26.2.tgz", + "integrity": "sha512-xBJxBxSpfoVQLSDA+WN+ZgtnyA5qYf3EE4ARZpov0JOz0YBTdIQajnNYMs5+5OzCbbNfhWGLybyu/Pj4dIwsWw==", + "dev": true, + "dependencies": { + "node-libs-browser": "^2.2.1", + "readline-sync": "^1.4.7", + "shadow-cljs-jar": "1.3.4", + "source-map-support": "^0.4.15", + "which": "^1.3.1", + "ws": "^7.4.6" + }, + "bin": { + "shadow-cljs": "cli/runner.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/shadow-cljs-jar": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/shadow-cljs-jar/-/shadow-cljs-jar-1.3.4.tgz", + "integrity": "sha512-cZB2pzVXBnhpJ6PQdsjO+j/MksR28mv4QD/hP/2y1fsIa9Z9RutYgh3N34FZ8Ktl4puAXaIGlct+gMCJ5BmwmA==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.9.tgz", + "integrity": "sha512-1SEOvRr6sSdV5IDf9iC+NU4dhwdqzF4zKKq3sAbasUWHEM6lsMhX+eNN5gkPx1BvLFEnZQEUFbXnGj8Qlp83Pg==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true + }, + "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/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true + }, + "node_modules/url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + } + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yaml": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/package.json b/package.json index 9863437..2d11fc7 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "dependencies": { "@noble/secp256k1": "^2.1.0", "bech32": "^2.0.0", + "js-confetti": "^0.12.0", "nostr-tools": "^2.7.2", "react": "17.0.2", "react-dom": "17.0.2" diff --git a/resources/public/assets/edu-feed-logo.webp b/resources/public/assets/edu-feed-logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..7af9c00230488f905bb313e02d38a42466a5f10c GIT binary patch literal 166544 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 literal 0 HcmV?d00001 diff --git a/resources/public/css/output.css b/resources/public/css/output.css index e4a037c..125eca8 100644 --- a/resources/public/css/output.css +++ b/resources/public/css/output.css @@ -981,6 +981,70 @@ html { --tw-border-opacity: 0.2; } +.collapse:not(td):not(tr):not(colgroup) { + visibility: visible; +} + +.collapse { + position: relative; + display: grid; + overflow: hidden; + grid-template-rows: auto 0fr; + transition: grid-template-rows 0.2s; + width: 100%; + border-radius: var(--rounded-box, 1rem); +} + +.collapse-title, +.collapse > input[type="checkbox"], +.collapse > input[type="radio"], +.collapse-content { + grid-column-start: 1; + grid-row-start: 1; +} + +.collapse > input[type="checkbox"], +.collapse > input[type="radio"] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + opacity: 0; +} + +.collapse-content { + visibility: hidden; + grid-column-start: 1; + grid-row-start: 2; + min-height: 0px; + transition: visibility 0.2s; + transition: padding 0.2s ease-out, + background-color 0.2s ease-out; + padding-left: 1rem; + padding-right: 1rem; + cursor: unset; +} + +.collapse[open], +.collapse-open, +.collapse:focus:not(.collapse-close) { + grid-template-rows: auto 1fr; +} + +.collapse:not(.collapse-close):has(> input[type="checkbox"]:checked), +.collapse:not(.collapse-close):has(> input[type="radio"]:checked) { + grid-template-rows: auto 1fr; +} + +.collapse[open] > .collapse-content, +.collapse-open > .collapse-content, +.collapse:focus:not(.collapse-close) > .collapse-content, +.collapse:not(.collapse-close) > input[type="checkbox"]:checked ~ .collapse-content, +.collapse:not(.collapse-close) > input[type="radio"]:checked ~ .collapse-content { + visibility: visible; + min-height: -moz-fit-content; + min-height: fit-content; +} + .dropdown { position: relative; display: inline-block; @@ -1117,18 +1181,6 @@ html { } } - .btn-outline.btn-primary:hover { - --tw-text-opacity: 1; - color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity))); - } - - @supports (color: color-mix(in oklab, black, black)) { - .btn-outline.btn-primary:hover { - background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black); - border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black); - } - } - .btn-outline.btn-warning:hover { --tw-text-opacity: 1; color: var(--fallback-wac,oklch(var(--wac)/var(--tw-text-opacity))); @@ -1372,22 +1424,6 @@ html { opacity: 1; } -.modal-action { - display: flex; - margin-top: 1.5rem; - justify-content: flex-end; -} - -.modal-toggle { - position: fixed; - height: 0px; - width: 0px; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - opacity: 0; -} - :root:has(:is(.modal-open, .modal:target, .modal-toggle:checked + .modal, .modal[open])) { overflow: hidden; scrollbar-gutter: stable; @@ -1473,6 +1509,20 @@ html { border-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-border-opacity))); } +.badge-primary { + --tw-border-opacity: 1; + border-color: var(--fallback-p,oklch(var(--p)/var(--tw-border-opacity))); + --tw-bg-opacity: 1; + background-color: var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity))); + --tw-text-opacity: 1; + color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity))); +} + +.badge-outline.badge-primary { + --tw-text-opacity: 1; + color: var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity))); +} + .btm-nav > *.disabled, .btm-nav > *[disabled] { pointer-events: none; @@ -1506,10 +1556,6 @@ html { border-color: var(--btn-color, var(--fallback-b2)); } - .btn-primary { - --btn-color: var(--fallback-p); - } - .btn-warning { --btn-color: var(--fallback-wa); } @@ -1520,11 +1566,6 @@ html { } @supports (color: color-mix(in oklab, black, black)) { - .btn-outline.btn-primary.btn-active { - background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black); - border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black); - } - .btn-outline.btn-warning.btn-active { background-color: color-mix(in oklab, var(--fallback-wa,oklch(var(--wa)/1)) 90%, black); border-color: color-mix(in oklab, var(--fallback-wa,oklch(var(--wa)/1)) 90%, black); @@ -1542,17 +1583,7 @@ html { outline-offset: 2px; } -.btn-primary { - --tw-text-opacity: 1; - color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity))); - outline-color: var(--fallback-p,oklch(var(--p)/1)); -} - @supports (color: oklch(0% 0 0)) { - .btn-primary { - --btn-color: var(--p); - } - .btn-warning { --btn-color: var(--wa); } @@ -1602,16 +1633,6 @@ html { background-color: var(--fallback-bc,oklch(var(--bc)/0.2)); } -.btn-outline.btn-primary { - --tw-text-opacity: 1; - color: var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity))); -} - -.btn-outline.btn-primary.btn-active { - --tw-text-opacity: 1; - color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity))); -} - .btn-outline.btn-warning { --tw-text-opacity: 1; color: var(--fallback-wa,oklch(var(--wa)/var(--tw-text-opacity))); @@ -1800,6 +1821,130 @@ html { } } +details.collapse { + width: 100%; +} + +details.collapse summary { + position: relative; + display: block; + outline: 2px solid transparent; + outline-offset: 2px; +} + +details.collapse summary::-webkit-details-marker { + display: none; +} + +.collapse:focus-visible { + outline-style: solid; + outline-width: 2px; + outline-offset: 2px; + outline-color: var(--fallback-bc,oklch(var(--bc)/1)); +} + +.collapse:has(.collapse-title:focus-visible), +.collapse:has(> input[type="checkbox"]:focus-visible), +.collapse:has(> input[type="radio"]:focus-visible) { + outline-style: solid; + outline-width: 2px; + outline-offset: 2px; + outline-color: var(--fallback-bc,oklch(var(--bc)/1)); +} + +.collapse-arrow > .collapse-title:after { + position: absolute; + display: block; + height: 0.5rem; + width: 0.5rem; + --tw-translate-y: -100%; + --tw-rotate: 45deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); + transition-duration: 150ms; + transition-duration: 0.2s; + top: 1.9rem; + inset-inline-end: 1.4rem; + content: ""; + transform-origin: 75% 75%; + box-shadow: 2px 2px; + pointer-events: none; +} + +.collapse-plus > .collapse-title:after { + position: absolute; + display: block; + height: 0.5rem; + width: 0.5rem; + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); + transition-duration: 300ms; + top: 0.9rem; + inset-inline-end: 1.4rem; + content: "+"; + pointer-events: none; +} + +.collapse:not(.collapse-open):not(.collapse-close) > input[type="checkbox"], +.collapse:not(.collapse-open):not(.collapse-close) > input[type="radio"]:not(:checked), +.collapse:not(.collapse-open):not(.collapse-close) > .collapse-title { + cursor: pointer; +} + +.collapse:focus:not(.collapse-open):not(.collapse-close):not(.collapse[open]) > .collapse-title { + cursor: unset; +} + +.collapse-title { + position: relative; +} + +:where(.collapse > input[type="checkbox"]), +:where(.collapse > input[type="radio"]) { + z-index: 1; +} + +.collapse-title, +:where(.collapse > input[type="checkbox"]), +:where(.collapse > input[type="radio"]) { + width: 100%; + padding: 1rem; + padding-inline-end: 3rem; + min-height: 3.75rem; + transition: background-color 0.2s ease-out; +} + +.collapse[open] > :where(.collapse-content), +.collapse-open > :where(.collapse-content), +.collapse:focus:not(.collapse-close) > :where(.collapse-content), +.collapse:not(.collapse-close) > :where(input[type="checkbox"]:checked ~ .collapse-content), +.collapse:not(.collapse-close) > :where(input[type="radio"]:checked ~ .collapse-content) { + padding-bottom: 1rem; + transition: padding 0.2s ease-out, + background-color 0.2s ease-out; +} + +.collapse[open].collapse-arrow > .collapse-title:after, +.collapse-open.collapse-arrow > .collapse-title:after, +.collapse-arrow:focus:not(.collapse-close) > .collapse-title:after, +.collapse-arrow:not(.collapse-close) > input[type="checkbox"]:checked ~ .collapse-title:after, +.collapse-arrow:not(.collapse-close) > input[type="radio"]:checked ~ .collapse-title:after { + --tw-translate-y: -50%; + --tw-rotate: 225deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.collapse[open].collapse-plus > .collapse-title:after, +.collapse-open.collapse-plus > .collapse-title:after, +.collapse-plus:focus:not(.collapse-close) > .collapse-title:after, +.collapse-plus:not(.collapse-close) > input[type="checkbox"]:checked ~ .collapse-title:after, +.collapse-plus:not(.collapse-close) > input[type="radio"]:checked ~ .collapse-title:after { + content: "−"; +} + .dropdown.dropdown-open .dropdown-content, .dropdown:focus .dropdown-content, .dropdown:focus-within .dropdown-content { @@ -2051,12 +2196,6 @@ html { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } -.modal-action > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.5rem * var(--tw-space-x-reverse)); - margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); -} - @keyframes modal-pop { 0% { opacity: 0; @@ -2162,10 +2301,6 @@ html { padding-right: 0.438rem; } -.btn-block { - width: 100%; -} - .btn-circle:where(.btn-xs) { height: 1.5rem; width: 1.5rem; @@ -2384,6 +2519,14 @@ html { border-bottom-left-radius: 0px; } +.visible { + visibility: visible; +} + +.collapse { + visibility: collapse; +} + .relative { position: relative; } @@ -2392,6 +2535,10 @@ html { z-index: 1; } +.m-1 { + margin: 0.25rem; +} + .m-2 { margin: 0.5rem; } @@ -2416,14 +2563,22 @@ html { display: flex; } -.hidden { - display: none; +.h-48 { + height: 12rem; } .h-5 { height: 1.25rem; } +.h-64 { + height: 16rem; +} + +.min-h-\[620px\] { + min-height: 620px; +} + .w-10 { width: 2.5rem; } @@ -2436,6 +2591,10 @@ html { width: 13rem; } +.w-64 { + width: 16rem; +} + .w-96 { width: 24rem; } @@ -2456,6 +2615,22 @@ html { flex: none; } +@keyframes flyIn { + 0% { + transform: translateX(-100%); + opacity: 0; + } + + 100% { + transform: translateX(0); + opacity: 1; + } +} + +.animate-flyIn { + animation: flyIn 0.5s ease-out forwards; +} + .cursor-pointer { cursor: pointer; } @@ -2484,14 +2659,20 @@ html { justify-content: center; } -.justify-between { - justify-content: space-between; -} - .gap-2 { gap: 0.5rem; } +.truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.break-all { + word-break: break-all; +} + .rounded { border-radius: 0.25rem; } @@ -2526,11 +2707,26 @@ html { background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity))); } +.bg-base-200 { + --tw-bg-opacity: 1; + background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity))); +} + .bg-green-500 { --tw-bg-opacity: 1; background-color: rgb(34 197 94 / var(--tw-bg-opacity)); } +.object-contain { + -o-object-fit: contain; + object-fit: contain; +} + +.object-cover { + -o-object-fit: cover; + object-fit: cover; +} + .p-2 { padding: 0.5rem; } @@ -2554,6 +2750,10 @@ html { font-weight: 700; } +.font-medium { + font-weight: 500; +} + .text-black { --tw-text-opacity: 1; color: rgb(0 0 0 / var(--tw-text-opacity)); @@ -2584,3 +2784,7 @@ html { --tw-text-opacity: 1; color: rgb(0 0 0 / var(--tw-text-opacity)); } + +.hover\:underline:hover { + text-decoration-line: underline; +} diff --git a/src/ied/db.cljs b/src/ied/db.cljs index 4575554..cd4e6ee 100644 --- a/src/ied/db.cljs +++ b/src/ied/db.cljs @@ -6,6 +6,7 @@ :show-add-event false :events #{} :pk nil + :sk nil :list-kinds [30001 30004] :default-relays [{:name "strfry-1" :uri "http://localhost:7777" @@ -19,10 +20,16 @@ :uri "http://localhost:4445" :id (random-uuid) :status "disconnected"} - {:name "damus" - :uri "wss://relay.damus.io" + ; {:name "damus" + ; :uri "wss://relay.damus.io" + ; :status "disconnected"} + {:name "SC24" + :uri "wss://relay.sc24.steffen-roertgen.de" :status "disconnected"} ] :selected-events #{} - :selected-lists #{} + :selected-list-ids #{} + :show-lists-modal false + :show-create-list-modal false + :show-event-data-modal false :sockets []}) diff --git a/src/ied/events.cljs b/src/ied/events.cljs index 5fc1d7e..fd7edb5 100644 --- a/src/ied/events.cljs +++ b/src/ied/events.cljs @@ -8,7 +8,12 @@ [promesa.core :as p] [wscljs.client :as ws] - [wscljs.format :as fmt])) + [wscljs.format :as fmt] + [clojure.string :as str] + [clojure.set :as set] + + ["js-confetti" :as jsConfetti] + )) (def list-kinds [30001 30004]) @@ -38,11 +43,8 @@ ;; TODO if EOSE retrieved end connection identified by uri (fn-traced [{:keys [db]} [_ [uri raw-event]]] (let [event (nth raw-event 2 raw-event)] - (println uri raw-event event) (when (and - (= (first raw-event) "EVENT") - ;;(not (some #(= (:id event) (:id %)) (get db :events {}))) - ) + (= (first raw-event) "EVENT")) {:db (update db :events conj event)})))) (defn handlers @@ -50,7 +52,6 @@ {:on-message (fn [e] (re-frame/dispatch [::save-event [ws-uri (-> (.-data e) js/JSON.parse (js->clj :keywordize-keys true))]])) - ; :on-open #(prn "Opening a new connection") :on-open #(re-frame/dispatch [::load-events ws-uri]) :on-close #(prn "Closing a connection") :on-error (fn [e] (.log js/console "Error with uri: " ws-uri (clj->js e)) @@ -78,8 +79,8 @@ (let [sockets (re-frame/subscribe [::subs/sockets]) target-ws (first (filter #(= ws-uri (:uri %)) @sockets))] - (ws/send (:socket target-ws) ["REQ" "424242" {:kinds [30142] - :limit 10}] fmt/json) + (ws/send (:socket target-ws) ["REQ" "424242" {:kinds [30004 30142] + :limit 100}] fmt/json) ; (ws/close (:socket (first @sockets))) ;; should be handled otherwise (?) ))) @@ -119,9 +120,7 @@ (fn [ws-uri] (let [sockets (re-frame/subscribe [::subs/sockets]) target-ws (first (filter #(= ws-uri (:uri %)) @sockets))] - (re-frame/dispatch [::create-websocket target-ws]) - ; (ws/create (:uri target-ws) (handlers (:uri target-ws))) - ))) + (re-frame/dispatch [::create-websocket target-ws])))) ;; TODO use id to close socket ;; add connection status to socket @@ -163,7 +162,6 @@ (fn [[sockets signedEvent]] (let [connected-sockets (filter #(= "connected" (:status %)) sockets)] (doseq [socket connected-sockets] - (.log js/console "sending to relay" signedEvent) (ws/send (:socket socket) ["EVENT" signedEvent] fmt/json))))) (re-frame/reg-event-db @@ -195,19 +193,21 @@ (fn-traced [cofx [_ resource]] (let [event {:kind 30142 :created_at (:now cofx) - :content "hello world" + :content "" :tags [["d" (:id resource)] ["author" "" (:author resource)]]}] - {::publish-resource-fx event}))) + {::sign-and-publish-event event}))) ;; TODO maybe we need some validation before publishing -;; TODO rename function to sth like send-to-relays (re-frame/reg-fx - ::publish-resource-fx + ::sign-and-publish-event (fn [unsignedEvent] - (p/let [_ (js/console.log (clj->js unsignedEvent)) - signedEvent (.nostr.signEvent js/window (clj->js unsignedEvent))] - (re-frame/dispatch [::send-to-relays signedEvent])))) + (if (nostr/valid-unsigned-nostr-event? unsignedEvent) + (p/let [_ (js/console.log (clj->js unsignedEvent)) + signedEvent (.nostr.signEvent js/window (clj->js unsignedEvent)) + _ (js/console.log "Signed event: " (clj->js signedEvent))] + (re-frame/dispatch [::send-to-relays signedEvent])) + (.error js/console "Event is not a valid nostr event: " (clj->js unsignedEvent))))) (re-frame/reg-event-fx ::login-with-extension @@ -220,15 +220,16 @@ (p/let [pk (.nostr.getPublicKey js/window)] (re-frame/dispatch [::save-pk pk])))) -(re-frame/reg-event-db +(re-frame/reg-event-fx ::save-pk - (fn-traced [db [_ pk]] - (assoc db :pk pk))) + (fn-traced [{:keys [db]} [_ pk]] + {:db (assoc db :pk pk) + :dispatch [::get-lists-for-npub (nostr/get-npub-from-pk pk)]})) (re-frame/reg-event-db ::logout (fn-traced [db _] - (assoc db :pk nil))) + (assoc db :pk nil :sk nil))) (re-frame/reg-cofx :now @@ -239,9 +240,11 @@ [json-string created_at] (let [parsed-json (js->clj (js/JSON.parse json-string) :keywordize-keys true) tags (into [["d" (:id parsed-json)] + ["r" (:id parsed-json)] ["id" (:id parsed-json)] ["name" (:name parsed-json)] - ["image" (:image parsed-json)]] + ["description" (:description parsed-json "")] + ["image" (:image parsed-json "")]] cat [(map (fn [e] ["about" (:id e) (-> e :prefLabel :de)]) (:about parsed-json)) (map (fn [e] ["inLanguage" e]) (:inLanguage parsed-json))]) event {:kind 30142 @@ -255,43 +258,66 @@ [(re-frame/inject-cofx :now)] (fn-traced [cofx [_ json-string]] (let [event (convert-amb-to-nostr-event json-string (:now cofx))] - {::publish-resource-fx event}))) - -(re-frame/reg-event-db - ::toggle-selected-events - (fn [db [_ event]] - (js/console.log "toggling selected event with id" (:id event)) - (if (some #(= event (:id %)) (:selected-events db)) - (assoc db :selected-events (filter #(not= event (:id %)) (:selected-events db))) - (update db :selected-events conj event)))) + {::sign-and-publish-event event}))) (re-frame/reg-event-fx - ::add-resources-to-list + ::toggle-selected-events + (fn [{:keys [db]} [_ event]] + (let [selected-event-ids (set (map (fn [e] (:id e)) (:selected-events db)))] + (if (and (seq (:selected-events db)) + (contains? selected-event-ids (:id event))) + {:db (assoc db :selected-events (filter #(not= (:id event) (:id %)) (:selected-events db)))} + {:db (update db :selected-events conj event)})))) + +(re-frame/reg-event-db + ::toggle-selected-list-ids + (fn [db [_ id]] + (println "Toggle list ids: " id) + (let [in-selected-list-ids (contains? (:selected-list-ids db) id)] + (if in-selected-list-ids + (update db :selected-list-ids disj id) + (update db :selected-list-ids conj id))))) + +(re-frame/reg-event-fx + ::add-metadata-event-to-list [(re-frame/inject-cofx :now)] (fn [cofx [_ [list resources-to-add]]] - (let [tags (into [["d" (:d list) - "name" (:name list)]] - (map (fn [e] (cond - (= 1 (:kind e)) ["e" (:id e)] - (= 30142 (:kind e)) ["a" (str "30142:" (:id e) ":" (second (first (filter #(= "d" (first %)) (:tags e)))))])) - - resources-to-add)) - _ (.log js/console (clj->js tags)) + (let [existing-tags (:tags list) + existing-tags-set (set existing-tags) + tags-to-add (filter #(not (contains? existing-tags-set %)) + (map (fn [e] (cond + (= 1 (:kind e)) ["e" (:id e)] + (= 30142 (:kind e)) (nostr/build-kind-30142-tag e))) + resources-to-add)) + new-tags (vec (concat existing-tags tags-to-add)) event {:kind 30004 :created_at (:now cofx) :content "" - :tags tags}] - {::publish-resource-fx event}))) + :tags new-tags}] + {::sign-and-publish-event event}))) + +(re-frame/reg-event-fx + ::add-metadata-events-to-lists + (fn [cofx [_ [events lists]]] + (let [dispatch-events (mapv (fn [l] [::add-metadata-event-to-list [l events]]) lists) + _ (.log js/console (clj->js dispatch-events))] + {:fx [[:dispatch-n dispatch-events]]}))) + +(defn sanitize-subscription-id [s] + (str/join "" (take 64 s))) + +(defn make-sub-id [prefix id] + (-> (str prefix id) + (sanitize-subscription-id))) (re-frame/reg-event-fx ::get-lists-for-npub - (fn [cofx [_ [sockets npub]]] - (println "query for lists") + (fn [{:keys [db]} [_ npub]] (let [query-for-lists ["REQ" - "RAND24" ;; TODO maybe make this more explicit later + (make-sub-id "lists-" npub) ;; TODO maybe make this more explicit later {:authors [(nostr/get-pk-from-npub npub)] - :kinds list-kinds}]] - (.log js/console (clj->js query-for-lists)) + :kinds list-kinds}] + sockets (:sockets db)] {::request-from-relay [sockets query-for-lists] :dispatch [::get-deleted-lists-for-npub [sockets npub]]}))) @@ -299,16 +325,16 @@ ::get-deleted-lists-for-npub (fn [cofx [_ [sockets npub]]] (let [query-for-deleted-lists ["REQ" - "RAND24" ;; TODO maybe make this more explicit later + (make-sub-id "deleted-lists-" npub) ;; TODO maybe make this more explicit later {:authors [(nostr/get-pk-from-npub npub)] :kinds [5]}]] - (.log js/console "Query for deleted lists" (clj->js query-for-deleted-lists)) {::request-from-relay [sockets query-for-deleted-lists]}))) +(comment) + (re-frame/reg-fx ::request-from-relay (fn [[sockets query]] - (println "requesting from relay this query: " query) (doall (for [s (filter (fn [s] (= "connected" (:status s))) sockets)] (ws/send (:socket s) query fmt/json))))) @@ -322,6 +348,26 @@ {::request-from-relay [sockets query]}))) +(defn cleanup-list-name [s] + (-> s + (str/replace #"\s" "-") + (str/replace #"[^a-zA-Z0-9]" "-"))) + +(comment + (cleanup-list-name "this is gönna be an awesüm+ l]st")) + +(re-frame/reg-event-fx + ::create-new-list + [(re-frame/inject-cofx :now)] + (fn [cofx [_ name]] + (let [tags [["d" (cleanup-list-name name)] + ["name" name]] + create-list-event {:kind 30004 + :created_at (:now cofx) + :content "" + :tags tags}] + {::sign-and-publish-event create-list-event}))) + (re-frame/reg-event-fx ::delete-list [(re-frame/inject-cofx :now)] @@ -336,5 +382,66 @@ ["a" (str (:kind l) ":" (:pubkey l) ":" (second (first (filter #(= "d" (first %)) (:tags l)))))])]}] - (println deletion-event) - {::publish-resource-fx deletion-event}))) + {::sign-and-publish-event deletion-event}))) + +(re-frame/reg-event-db + ::toggle-show-lists-modal + (fn [db _] + (assoc db :show-lists-modal (not (:show-lists-modal db))))) + +(re-frame/reg-event-db + ::toggle-show-create-list-modal + (fn [db _] + (assoc db :show-create-list-modal (not (:show-create-list-modal db))))) + +(re-frame/reg-event-db + ::toggle-show-event-data-modal + (fn [db [_ event]] + (assoc db + :show-event-data-modal (not (:show-event-data-modal db)) + :selected-event event))) + +(re-frame/reg-event-fx + ::delete-event-from-list + [(re-frame/inject-cofx :now)] + (fn [cofx [_ [event list]]] + (let [filtered-tags (filterv (fn [t] (not= (:id event) (nostr/extract-id-from-tag (second t)))) (:tags list)) + _ (println (:tags list)) + _ (.log js/console "Filtered Tags: " (clj->js filtered-tags)) + event {:kind 30004 + :created_at (:now cofx) + :content "" + :tags filtered-tags}] + {::sign-and-publish-event event}))) + +(re-frame/reg-event-db + ::create-sk + (fn [db [_]] + (let [sk (nostr/generate-sk) + pk (nostr/get-pk-from-sk sk)] + (assoc db :sk sk :pk pk)))) + +(re-frame/reg-fx + ::get-amb-json-from-uri + (fn [uri] + (p/let [raw-html (js/fetch uri {:headers {"Access-Control-Allow-Origin" "*"}})] + (println raw-html)))) + +(comment + (p/->> (js/fetch "https://oersi.org/resources/aHR0cHM6Ly9lZ292LWNhbXB1cy5vcmcvY291cnNlcy9hcmJlaXRlbnVuZGZ1ZWhyZW5fdXBfMjAyMi0x") + (println))) + +(re-frame/reg-event-fx + ::publish-amb-uri-as-nostr-event + (fn [db [_ uri]] + {::get-amb-json-from-uri uri})) + +(re-frame/reg-event-fx + ::add-confetti + (fn [_ _] + ;; Initialize jsConfetti instance if needed + (let [confetti-instance (new jsConfetti)] + ;; Trigger the confetti + (.addConfetti confetti-instance )) + ;; No further effects needed + {})) diff --git a/src/ied/nostr.cljs b/src/ied/nostr.cljs index 2a37f11..4985da2 100644 --- a/src/ied/nostr.cljs +++ b/src/ied/nostr.cljs @@ -1,8 +1,11 @@ (ns ied.nostr (:require [promesa.core :as p] + [clojure.string :as str] ["@noble/secp256k1" :as secp] - ["nostr-tools/nip19" :as nip19])) + ["nostr-tools/nip19" :as nip19] + ["nostr-tools/pure" :as nostr] + [cljs.core :as c])) (defn event-to-serialized-json [m] (let [event [0 @@ -36,8 +39,32 @@ (defn signEvent [hashedEvent sk] (.sign secp hashedEvent sk)) +(defn generate-sk [] + ;; Generate a secure (private) key as byte array + (.utils.randomPrivateKey secp)) + +(defn sk-as-hex [sk] + (byte-array-to-hex sk)) + +(defn sk-as-nsec [sk] + ;; let nsec = nip19.nsecEncode(sk) + ;; sk should be byte-array + (.nsecEncode nip19 sk)) + +(defn nsec-as-sk [nsec] + ;; byte array is returned + (.-data (.decode nip19 nsec))) + +(defn get-pk-from-sk [sk] + (.getPublicKey nostr sk)) + (comment - (.getPublicKey secp (.utils.randomPrivateKey secp))) + (let [nsec "nsec16f87vq2xvvus3qxxtmdhgvq6pyfmn7nr9ck9yw8sc8ar7xradmss66z5fz"] + (sk-as-hex (nsec-as-sk nsec))) + + (.getPublicKey secp (.utils.randomPrivateKey secp)) + (byte-array-to-hex (.utils.randomPrivateKey secp)) + (get-pk-from-sk (generate-sk))) (comment (p/let [event {:content "hello world" @@ -61,6 +88,105 @@ (defn get-pk-from-npub [npub] (.-data (.decode nip19 npub))) +;; TODO make multimethod? +(defn get-list-name [list] + (or (second (first (filter #(= "title" (first %)) (:tags list)))) + (second (first (filter #(= "alt" (first %)) (:tags list)))) + (second (first (filter #(= "d" (first %)) (:tags list)))) + (str "No name found for List-ID: " (:id list)))) + +(defn get-d-id-from-event [event] + (second (first (filter #(= "d" (first %)) (:tags event))))) + +(defn get-name-from-metadata-event [event] + (or (second (first (filter #(= "name" (first %)) (:tags event)))) + (second (first (filter #(= "id" (first %)) (:tags event)))) + (str "No name found for Metadata-Event: " (:id event)))) + +(defn get-image-from-metadata-event [event] + (or (let [img-url (second (first (filter #(= "image" (first %)) (:tags event))))] + (if (= "" img-url ) false img-url)) + "/assets/edu-feed-logo.webp")) + +(defn get-description-from-metadata-event [event] + (or (second (first (filter #(= "description" (first %)) (:tags event)))) + (str "No description found for Metadata-Event: " (:id event)))) + +(defn get-about-tags-from-metadata-event [event] + (filter #(= "about" (first %)) (:tags event))) + +(defn get-about-names-from-metadata-event [event] + (->> (get-about-tags-from-metadata-event event) + (map #(nth % 2 nil)))) + (comment (get-npub-from-pk "3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d") (get-pk-from-npub "npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6")) + +(defn valid-timestamp? [t] + (and (integer? t) + (pos? t) + (< t (* 1e10)))) + +(defn valid-kind? [k] + (integer? k)) + +(defn valid-tags? [tags] + (and (vector? tags) + (every? (fn [tag] + (and + (vector? tag) + (every? some? tag))) + tags))) + +(defn valid-unsigned-nostr-event? [event] + (let [{:keys [created_at kind tags content]} event] + (and + (valid-timestamp? created_at) + (valid-kind? kind) + (valid-tags? tags) + (string? content)))) + +(comment + (valid-tags? [["hello" "there"] ["fa" ""]])) + +(defn get-tag-value [tags tag-prefix] + (some #(when (= tag-prefix (first %)) (second %)) tags)) + +(defn sort-lists [events] + (sort-by (fn [event] + (let [tags (:tags event) + name-value (get-tag-value tags "name") + d-value (get-tag-value tags "d")] + (or name-value d-value))) + events)) + +;; TODO rename to ..."from-d-tag" +(defn extract-id-from-tag + [s] + (let [parts (str/split s #":")] + (if (>= (count parts) 2) + (second parts) + s))) + +(comment + (extract-id-from-tag "30142:29b2dc8b83e3f8c79a9ee2535b4adb6105b90af893612e72f675a5d16f8544b5:https://wtcs.pressbooks.pub/digitalliteracy/")) + +(defn list-contains-metadata-event? [list event] + (let [tags (:tags list) + metadata-event-ids-in-list (set (map extract-id-from-tag (filter (fn [t] (= "a" (first t))) tags))) + event-id (:id event)] + (.log js/console "metadata event ids in list" metadata-event-ids-in-list) + (and + (seq metadata-event-ids-in-list) + (contains? metadata-event-ids-in-list event-id)))) + +(defn build-kind-30142-tag [event] + ["a" (str "30142:" (:id event) ":" (second (first (filter #(= "d" (first %)) (:tags event)))))]) + +(defn get-event-ids-from-list [list] + (->> (:tags list) + (filter #(= (or "a" "e") (first %))) ;; just a and e tags + (map second) ;; just the id + (map extract-id-from-tag) + (set))) diff --git a/src/ied/routes.cljs b/src/ied/routes.cljs index 3298f08..4dee571 100644 --- a/src/ied/routes.cljs +++ b/src/ied/routes.cljs @@ -13,13 +13,17 @@ ["/" {"" :home "add-resource" :add-resource + "keys" :keys + "feed" :event-feed "about" :about "settings" :settings ["" [#"npub1[ac-hj-np-z02-9]{58}" :npub]] {"" :npub-view - "/" :npub-view}}])) + "/" :npub-view}}])) (comment - (parse "/npub1r30l8j4vmppvq8w23umcyvd3vct4zmfpfkn4c7h2h057rmlfcrmq9xt9ma/")) + (parse "/npub1r30l8j4vmppvq8w23umcyvd3vct4zmfpfkn4c7h2h057rmlfcrmq9xt9ma/") + (apply url-for [:npub-view :npub "npub1r30l8j4vmppvq8w23umcyvd3vct4zmfpfkn4c7h2h057rmlfcrmq9xt9ma"]) + (apply url-for [:home])) (defn parse [url] @@ -39,7 +43,7 @@ (defn navigate! [handler] - (pushy/set-token! history (url-for handler))) + (pushy/set-token! history (apply url-for handler))) (defn start! [] diff --git a/src/ied/subs.cljs b/src/ied/subs.cljs index 5a5561a..b280f1d 100644 --- a/src/ied/subs.cljs +++ b/src/ied/subs.cljs @@ -2,7 +2,8 @@ (:require [re-frame.core :as re-frame] [clojure.string :as str] - [clojure.set :as set])) + [clojure.set :as set] + [ied.nostr :as nostr])) (re-frame/reg-sub ::name @@ -19,17 +20,17 @@ (fn [db _] (:sockets db))) -(re-frame/reg-sub - ::connected-sockets - :<- [::sockets] - (fn [[sockets]] - (filter #(= (:status %) "connected") sockets))) - (re-frame/reg-sub ::events (fn [db _] (:events db))) + +(re-frame/reg-sub + ::metadata-events + (fn [db _] + (sort-by :created_at #(> %1 %2) (filter (fn [e] (= 30142 (:kind e))) (:events db))))) + (re-frame/reg-sub ::show-add-event (fn [db _] @@ -40,6 +41,16 @@ (fn [db _] (:pk db))) +(re-frame/reg-sub + ::npub + (fn [db _] + (nostr/get-npub-from-pk (:pk db)))) + +(re-frame/reg-sub + ::nsec + (fn [db _] + (nostr/sk-as-nsec (:sk db)))) + (re-frame/reg-sub ::default-relays (fn [db _] @@ -50,6 +61,18 @@ (fn [db _] (:selected-events db))) +(re-frame/reg-sub + ::selected-list-ids + (fn [db] + (:selected-list-ids db))) + +(re-frame/reg-sub + ::selected-lists + :<- [::lists-of-user] + :<- [::selected-list-ids] + (fn [[lists-of-user selected-list-ids]] + (filter #(contains? selected-list-ids (:id %)) lists-of-user))) + (re-frame/reg-sub ::route-params (fn [db _] @@ -64,15 +87,24 @@ [tags] (second (first (filter (fn [t] (= "d" (first t))) tags)))) -(comment - (get-d-id-from-tags [["d" "https://wtcs.pressbopub/digitalliteracy/"]])) - (defn d-id-not-in-deleted-list-ids [d-id deleted-list-ids] (println d-id deleted-list-ids) (not (contains? deleted-list-ids d-id))) +(defn most-recent-by-d-tag + [events] + (->> events + (group-by (fn [event] + (some (fn [[tag-type tag-value]] + (when (= tag-type "d") + tag-value)) + (:tags event)))) + (map (fn [[d-tag events]] + (apply max-key :created_at events))) + (into []))) + (re-frame/reg-sub ::lists :<- [::list-kinds] @@ -80,9 +112,38 @@ :<- [::deleted-list-ids] (fn [[list-kinds events deleted-lists]] (let [all-lists (filter #(and (some #{(:kind %)} list-kinds) - (d-id-not-in-deleted-list-ids (get-d-id-from-tags (:tags %)) deleted-lists)) - events)] - all-lists))) + #_(d-id-not-in-deleted-list-ids (get-d-id-from-tags (:tags %)) deleted-lists)) + events) + most-recent-lists (most-recent-by-d-tag all-lists)] + (.log js/console "all lists: " (clj->js all-lists)) + (.log js/console "most recent lists: " (clj->js most-recent-lists)) + most-recent-lists))) + +(re-frame/reg-sub + ::feed-events + :<- [::metadata-events] + :<- [::lists] + (fn [[md-events lists]] + (sort-by :created_at #(> %1 %2) (concat md-events lists)))) + +(re-frame/reg-sub + ::lists-of-user + :<- [::pk] + :<- [::lists] + (fn [[pk lists]] + (set (filter #(= pk (:pubkey %)) lists)))) + +(re-frame/reg-sub + ::lists-for-npub + :<- [::route-params] + :<- [::lists] + (fn [[route-params lists]] + (let [npub (:npub route-params)] + (set (filter #(= (nostr/get-pk-from-npub npub) (:pubkey %)) lists))))) + +(comment + (seq [1]) + (seq #{1})) (defn extract-d-id-from-tags [s] @@ -102,19 +163,12 @@ ::deleted-list-ids (fn [db _] (let [kind-5-events (filter (fn [e] (= 5 (:kind e))) (:events db)) + ;; TODO find list events after the timestamp of the last kind5 event + ;; get d-tags of that events + ;; filter that d-tags out of the deleted-list-ids deleted-list-ids (get-d-ids-from-events kind-5-events)] - (.log js/console "kind-5-events: " (clj->js kind-5-events)) - (.log js/console "Deleted list-ids " (clj->js deleted-list-ids)) deleted-list-ids))) -(defn extract-id-from-tags - [s] - (println s) - (let [parts (str/split s #":")] - (if (>= (count parts) 2) - (second parts) - s))) - (re-frame/reg-sub ::missing-events-from-lists :<- [::events] @@ -123,14 +177,34 @@ (let [event-ids-from-list-tags (->> (into [] cat (map (fn [l] (:tags l)) lists)) (filter #(= (or "a" "e") (first %))) ;; just a and e tags (map second) ;; just the id - (map extract-id-from-tags) + (map nostr/extract-id-from-tag) (set)) event-ids (set (map #(:id %) events)) missing-events (set/difference event-ids-from-list-tags event-ids)] - (.log js/console "Missing IDs: " (clj->js missing-events)) + ; (.log js/console "Missing IDs: " (clj->js missing-events)) missing-events))) -(comment - (>= 2 (count (str/split "3013:fjkldj:https://jfdajdfklö" #":"))) +(re-frame/reg-sub + ::show-lists-modal + (fn [db _] + (:show-lists-modal db))) - (extract-id-from-tags "30142:e2d8b8e3381386976a57091199d23:https://wtcs.pressbooks.pub/digitalliteracy/")) +(re-frame/reg-sub + ::show-create-list-modal + (fn [db _] + (:show-create-list-modal db))) + +(re-frame/reg-sub + ::show-event-data-modal + (fn [db _] + (:show-event-data-modal db))) + +(re-frame/reg-sub + ::selected-event + (fn [db _] + (:selected-event db))) + +(re-frame/reg-sub + ::events-in-list + (fn [db [_ event-ids]] + (filter (fn [e] (contains? event-ids (:id e))) (:events db)))) diff --git a/src/ied/views.cljs b/src/ied/views.cljs index 8e94f23..aa615e8 100644 --- a/src/ied/views.cljs +++ b/src/ied/views.cljs @@ -1,9 +1,11 @@ (ns ied.views (:require [re-frame.core :as re-frame] + [cljs.pprint :refer [pprint]] [ied.events :as events] [ied.routes :as routes] [ied.subs :as subs] + [ied.nostr :as nostr] [reagent.core :as reagent])) ;; add resource form @@ -47,31 +49,121 @@ :on-click #(re-frame/dispatch [::events/convert-amb-and-publish-as-nostr-event (:json-string @s)])} "Publish as Nostr Event"]]))) +(defn add-resosurce-by-uri [] + (let [uri (reagent/atom {:uri ""})] + (fn [] + [:form {:on-submit (fn [e] (.preventDefault e))} + [:label {:for "uri"} "URI: "] + [:input {:id "uri" + :on-change (fn [e] + (swap! uri assoc :uri (-> e .-target .-value)))}] + [:button {:class "btn btn-warning" + :on-click #(re-frame/dispatch [::events/publish-amb-uri-as-nostr-event (:uri @uri)])} + "Publish as Nostr Event"]]))) + +;; event data modal +(defn event-data-modal [] + (let [visible? @(re-frame/subscribe [::subs/show-event-data-modal]) + selected-event @(re-frame/subscribe [::subs/selected-event])] + (when visible? + [:dialog {:open visible? :class "modal"} + [:div {:class "modal-box relative flex flex-col"} + [:h3 {:class "text-lg font-bold"} (nostr/get-name-from-metadata-event selected-event)] + [:pre (with-out-str (pprint selected-event))] + [:p {:class "py-4"} "Press ESC key or click outside to close"]] + + [:form {:on-click #(re-frame/dispatch [::events/toggle-show-event-data-modal]) + :method "dialog" :class "modal-backdrop"} + [:button "close"]]]))) + +;; metadata event component +(defn metadata-event-component [event] + (let [selected-events @(re-frame/subscribe [::subs/selected-events])] + [:div + {:class "card bg-base-100 w-96 shadow-xl min-h-[620px]"} + [:figure + [:img + {:class "h-48 object-cover" + :src + (nostr/get-image-from-metadata-event event) + :alt ""}]] + [:div + {:class "card-body"} + [:a {:href (nostr/get-d-id-from-event event) + :class "card-title hover:underline"} + (nostr/get-name-from-metadata-event event)] + (doall + (for [about (nostr/get-about-names-from-metadata-event event)] + [:div {:class "badge badge-primary m-1 truncate " + :key about} about])) + [:p {:class "break-all"} + (nostr/get-description-from-metadata-event event)] + [:button {:on-click #(re-frame/dispatch [::events/toggle-show-event-data-modal event])} "Show Event Data"] + [:div + {:class "card-actions justify-end"} + [:div + {:class "form-control"} + [:label + {:class "cursor-pointer label"} + [:span {:class "label-text"} ""] + [:input + {:type "checkbox" + :checked (contains? (set (map #(:id %) selected-events)) (:id event)) + :class "checkbox checkbox-success" + :on-change #(re-frame/dispatch [::events/toggle-selected-events event])}]]]]]])) + ;; events (defn events-panel [] - (let [events (re-frame/subscribe [::subs/events]) + (let [events @(re-frame/subscribe [::subs/metadata-events]) selected-events @(re-frame/subscribe [::subs/selected-events]) show-add-event (re-frame/subscribe [::subs/show-add-event])] [:div {:class "border-2 rounded"} - [:p {:on-click #(re-frame/dispatch [::events/toggle-show-add-event])} - (if @show-add-event "X" "Add Resource!")] - (when @show-add-event - [add-resource-form]) - [:p (str "Num of events: " (count @events))] - (if (> (count @events) 0) - (doall - (for [event @events] - [:li {:key (:id event)} (get event :content "") - [:input {:type "checkbox" - :on-click #(re-frame/dispatch [::events/toggle-selected-events event])}]])) + [:p (str "Num of events: " (count events))] + (if (> (count events) 0) + [:div {:class "flex flex-wrap justify-center gap-2"} + (doall + (for [event events] + [:div {:key (:id event)} + [metadata-event-component event]]))] [:p "no events there"]) [:button {:class "btn" :disabled (not (boolean (seq selected-events))) - :on-click #(re-frame/dispatch [::events/add-resources-to-list [{:d "unique-id-1" - :name "Test List SC"} - selected-events]])} + :on-click #(re-frame/dispatch [::events/add-metadata-event-to-list [{:d "unique-id-1" + :name "Test List SC"} + selected-events]])} "Add To Lists"]])) +;; event feed component +(defn event-feed-component [event] + (let [_ () #_(re-frame/dispatch [::events/add-confetti])] + [:div + {:class "animate-flyIn card bg-base-100 w-64 h-64 shadow-xl border border-white border-w "} + [:p (:kind event)] + [:figure + [:img + {:class "h-48 object-contain" + :src + (nostr/get-image-from-metadata-event event) + :alt ""}]] + [:div + {:class "card-body"} + [:button {:on-click #(re-frame/dispatch [::events/toggle-show-event-data-modal event])} "Show Event Data"]]])) + +(defn event-feed-panel [] + (let [events @(re-frame/subscribe [::subs/feed-events])] + [:div {:class ""} + [:h1 "Event Feed"] + [:p (str "Num of events: " (count events))] + (if (> (count events) 0) + [:div {:class "flex flex-row gap-2"} + (doall + (for [event events] + [:div {:key (:id event)} + [event-feed-component event]]))] + [:p "no events there"])])) + +(defmethod routes/panels :event-feed-panel [] [event-feed-panel]) + ;; relays (defn add-relay-form [name uri] @@ -95,7 +187,6 @@ [:button {:on-click #(re-frame/dispatch [::events/create-websocket {:name (:name @s) :id (random-uuid) :uri (:uri @s)}])} - "Add Relay"]]))) (defn relays-panel @@ -126,34 +217,198 @@ ;(re-frame/dispatch [::events/connect-to-default-relays]) )])) -;; Header +;; checkmark +(defn checkmark [] + [:svg + {:version "1.1", + :class "fa-icon ml-auto mr-2 svelte-1mc5hvj", + :width "16", + :height "16", + :aria-label "", + :role "presentation", + :viewBox "0 0 1792 1792", + ; :style "color: black;" + } + [:path + {:d + "M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z"}]]) -(defn header [] - (let [pk (re-frame/subscribe [::subs/pk])] +;; Add to lists modal +(defn create-list-modal [] + (let [name (reagent/atom "") + visible? @(re-frame/subscribe [::subs/show-create-list-modal])] + (when visible? + [:dialog {:open visible? :class "modal"} + [:div {:class "modal-box relative flex flex-col"} + [:h3 {:class "text-lg font-bold"} "Hello!"] + [:p {:class "py-4"} "Press ESC key or click outside to close"] + [:input + {:type "text" + :on-change (fn [e] (reset! name (-> e .-target .-value))) + :placeholder "List Name" + :class "input input-bordered w-full max-w-xs"}] + [:button {:class "btn" + :on-click #(re-frame/dispatch [::events/create-new-list @name])} "Create New List"]] + + [:form {:on-click #(re-frame/dispatch [::events/toggle-show-create-list-modal]) + :method "dialog" :class "modal-backdrop"} + [:button "close"]]]))) + +(defn add-to-lists-modal [] + (let [selected-list-ids @(re-frame/subscribe [::subs/selected-list-ids]) + selected-lists @(re-frame/subscribe [::subs/selected-lists]) + selected-metadata-events @(re-frame/subscribe [::subs/selected-events]) + visible? @(re-frame/subscribe [::subs/show-lists-modal]) + lists @(re-frame/subscribe [::subs/lists-of-user]) + sorted-lists (nostr/sort-lists lists)] + (when visible? + [:dialog {:open visible? :class "modal"} + [:div {:class "modal-box relative flex flex-col"} + [:h3 {:class "text-lg font-bold"} + "Hello!"] + [:p {:class "py-4"} + "Press ESC key or click outside to close"] + (doall + (for [l lists] + (let [in-selected-lists (or (and (seq selected-metadata-events) + (every? (fn [e] (nostr/list-contains-metadata-event? l e)) selected-metadata-events)) + (contains? selected-list-ids (:id l))) + div-class (str "m-2 flex flex-row items-center rounded border border-solid border-white p-2 " + (if in-selected-lists + "bg-green-500 text-black" + "hover:bg-orange-500 hover:text-black"))] + + [:div {:class div-class + :key (nostr/get-list-name l) + :on-click #(re-frame/dispatch [::events/toggle-selected-list-ids (:id l)])} + [:p {:class "text-xl font-bold"} + (nostr/get-list-name l)] + (when in-selected-lists + [checkmark])]))) + [:div {:class "flex flex-row"} + [:button {:on-click #(re-frame/dispatch [::events/add-metadata-events-to-lists [selected-metadata-events selected-lists]]) + :class "btn"} + "Add Resources To Lists"] + [:button {:class "btn ml-auto mr-0" + :on-click #(re-frame/dispatch [::events/toggle-show-create-list-modal])} + "Create New List"]]] + + [:form {:on-click #(re-frame/dispatch [::events/toggle-show-lists-modal]) + :method "dialog" + :class "modal-backdrop"} + [:button + "close"]]]))) + +;; shopping cart +(defn shopping-cart [] + (let [selected-events @(re-frame/subscribe [::subs/selected-events])] + [:div {:class "dropdown dropdown-end"} + [:div + {:tabIndex "0", :role "button", :class "btn btn-ghost btn-circle"} + [:div + {:class "indicator"} + [:svg + {:xmlns "http://www.w3.org/2000/svg", + :class "h-5 w-5", + :fill "none", + :viewBox "0 0 24 24", + :stroke "currentColor"} + [:path + {:stroke-linecap "round", + :stroke-linejoin "round", + :stroke-width "2", + :d + "M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"}]] + [:span {:class "badge badge-sm indicator-item"} (count selected-events)]]] + [:div + {:tabIndex "0", + :class + "card card-compact dropdown-content bg-base-100 z-[1] mt-3 w-52 shadow"} + [:div + {:class "card-body"} + [:span {:class "text-lg font-bold"} + (str (count selected-events) + " Items")] + [:div {:class "card-actions"} + [:button {:class "btn" + :on-click #(re-frame/dispatch [::events/toggle-show-lists-modal])} + "Add To Lists"]]]]])) + +(defn user-menu [] + (let [pk @(re-frame/subscribe [::subs/pk])] + (if pk + [:div + {:class "dropdown dropdown-end"} + [:div + {:tabIndex "0", + :role "button", + :class "btn btn-ghost btn-circle avatar"} + [:div + {:class "w-10 rounded-full"} + [:img + {:alt "Tailwind CSS Navbar component", + :src + "https://img.daisyui.com/images/stock/photo-1534528741775-53994a69daeb.webp"}]]] + [:ul + {:tabIndex "0", + :class + "menu menu-sm dropdown-content bg-base-100 rounded-box z-[1] mt-3 w-52 p-2 shadow"} + [:li + [:a + {:on-click #(re-frame/dispatch [::events/navigate [:npub-view :npub (nostr/get-npub-from-pk pk)]])} + "Profile"]] + [:li [:a {:on-click #(re-frame/dispatch [::events/navigate [:settings]])} "Settings"]] + [:li [:a {:on-click #(re-frame/dispatch [::events/navigate [:keys]])} "Keys"]] + [:li [:a {:on-click #(re-frame/dispatch [::events/logout])} "Logout"]]]] + [:div + {:class "dropdown dropdown-end"} + [:div {:tabIndex "0", :role "button", :class "btn m-1"} "Login"] + [:ul + {:tabIndex "0", + :class + "dropdown-content menu bg-base-100 rounded-box z-[1] w-52 p-2 shadow"} + [:li [:a {:on-click #(re-frame/dispatch [::events/create-sk])} + "... Anonymously"]] + [:li [:a {:on-click #(re-frame/dispatch [::events/login-with-extension])} + "... with Extension"]]]]))) + +;; Header +(defn new-header [] + (let [selected-events @(re-frame/subscribe [::subs/selected-events])] [:div - [:a {:on-click #(re-frame/dispatch [::events/navigate :home])} - "home"] - "|" - [:a {:on-click #(re-frame/dispatch [::events/navigate :add-resource])} - "add resource"] - "|" - [:a {:on-click #(re-frame/dispatch [::events/navigate :about])} - "about"] - "|" - [:a {:on-click #(re-frame/dispatch [::events/navigate :settings])} - "settings"] - "|" - (if @pk - [:a {:on-click #(re-frame/dispatch [::events/logout])} "logout"] - [:a {:on-click #(re-frame/dispatch [::events/login-with-extension])} "login"])])) + {:class "navbar bg-base-100"} + [:div + {:class "flex-1"} + [:a {:class "btn btn-ghost text-xl" + :on-click #(re-frame/dispatch [::events/navigate [:home]])} + "edufeed"] + [:a {:class "btn btn-circle" + :on-click #(re-frame/dispatch [::events/navigate [:event-feed]])} "Event-Feed"]] + [:div + {:class "flex-none"} + + [:a {:class "btn btn-circle" + :on-click #(re-frame/dispatch [::events/navigate [:add-resource]])} "+"] + [shopping-cart] + [user-menu]]])) + +;; Keys Panel +(defn keys-panel [] + (let [npub @(re-frame/subscribe [::subs/npub]) + nsec @(re-frame/subscribe [::subs/nsec])] [:div + [:h1 "Keys"] + [:p (str "Your Npub: " npub)] + [:p (str "Your Nsec: " nsec)]])) + +(defmethod routes/panels :keys-panel [] [keys-panel]) ;; Add Resource Panel - (defn add-resource-panel [] [:div [:h1 "Add Resource"] [add-resource-form] - [add-resource-by-json]]) + [add-resource-by-json] + [add-resosurce-by-uri]]) (defmethod routes/panels :add-resource-panel [] [add-resource-panel]) @@ -167,12 +422,8 @@ ;; Home (defn home-panel [] - (let [name (re-frame/subscribe [::subs/name]) - events (re-frame/subscribe [::subs/events])] + (let [events (re-frame/subscribe [::subs/events])] [:div - [:h1 - (str "Hello from " @name ". This is the Home Page.")] - [events-panel] [:p (count @events)]])) @@ -183,39 +434,56 @@ [:div [:h1 "This is the About Page."] [:div - [:a {:on-click #(re-frame/dispatch [::events/navigate :home])} + [:a {:on-click #(re-frame/dispatch [::events/navigate [:home]])} "go to Home Page"]]]) (defmethod routes/panels :about-panel [] [about-panel]) -;; npub +;; Lists +(defn list-component [list] + (let [pk @(re-frame/subscribe [::subs/pk]) + ids-in-list (nostr/get-event-ids-from-list list) + events-in-list @(re-frame/subscribe [::subs/events-in-list ids-in-list]) ;; TODO should be sorted after appeareande in tags + ] + [:div {:key (:id list) + :class "p-2"} + [:details + {:class "collapse bg-base-200"} + [:summary + {:class "collapse-title text-xl font-medium"} + (nostr/get-list-name list)] + [:div {:class "collapse-content"} + + (doall + (for [event events-in-list] + [:div {:key (:id event)} + [metadata-event-component event] + (when pk + [:button {:class "btn btn-warning" + :on-click #(re-frame/dispatch [::events/delete-event-from-list [event list]])} + "Delete Resource from List"])])) + + (when pk [:button {:class "btn btn-error" + :on-click #(re-frame/dispatch [::events/delete-list list])} "Delete List"])]]])) + +;; npub / Profile (defn npub-view-panel [] (let [sockets @(re-frame/subscribe [::subs/sockets]) route-params @(re-frame/subscribe [::subs/route-params]) - lists @(re-frame/subscribe [::subs/lists]) + lists @(re-frame/subscribe [::subs/lists-for-npub]) + _ (when (not (seq lists)) (re-frame/dispatch [::events/get-lists-for-npub (:npub route-params)])) missing-events-from-lists @(re-frame/subscribe [::subs/missing-events-from-lists]) _ (when (seq missing-events-from-lists) (re-frame/dispatch [::events/query-for-event-ids [sockets missing-events-from-lists]]))] [:div [:h1 (str "Hello Npub: " (:npub route-params))] (if-not (seq lists) [:p "No lists there...yet"] - [:div {:class "p-2"} "Got some lists" - (doall - (for [l lists] - [:div {:class "p-2" - :key (:id l)} - [:li - - [:p (str "ID: " (:id l))] - [:p (str "Name: " (first (filter #(= "d" (first %)) (:tags l))))] - ;; TODO filter tags for already being in events - ;; for all that are not send a query - [:p (str "Tags: " (:tags l))] - [:button {:class "btn btn-error" - :on-click #(re-frame/dispatch [::events/delete-list l])} "Delete List"]]]))]) - [:button {:class "btn" - :on-click - #(re-frame/dispatch [::events/get-lists-for-npub [sockets (:npub route-params)]])} "Load lists"]])) + (doall + (for [l lists] + ^{:key (:id l)} [list-component l]))) + [:button {:class "btn ml-auto mr-0" + :on-click #(re-frame/dispatch [::events/toggle-show-create-list-modal])} + "Create New List"]])) (defmethod routes/panels :npub-view-panel [] [npub-view-panel]) @@ -223,10 +491,10 @@ (defn main-panel [] (let [active-panel (re-frame/subscribe [::subs/active-panel])] [:div - [header] + [new-header] [:div - (routes/panels @active-panel)]])) + (routes/panels @active-panel) + [add-to-lists-modal] + [create-list-modal] + [event-data-modal]]])) -(comment - - (.log js/console "Hello World")) diff --git a/tailwind.config.js b/tailwind.config.js index 09ae7e3..0fdf0d2 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -2,7 +2,18 @@ module.exports = { content: ["./src/**/*.{html,js,cljs}"], theme: { - extend: {}, + extend: { + keyframes: { + flyIn: { + '0%': { transform: 'translateX(-100%)', opacity: '0' }, + '100%': { transform: 'translateX(0)', opacity: '1' }, + }, + }, + animation: { + flyIn: 'flyIn 0.5s ease-out forwards', + }, + + }, }, plugins: [require("daisyui")], }