diff --git a/deps.edn b/deps.edn index 1882ff1e..63c5c2eb 100644 --- a/deps.edn +++ b/deps.edn @@ -8,6 +8,10 @@ metosin/reitit-frontend {:mvn/version "0.5.18"} lambdaisland/fetch {:mvn/version "1.1.60"} + + org.clojure/tools.deps {:mvn/version "0.21.1449"} + com.moclojer/mockingbird {:mvn/version "0.0.1"} + ;; back com.moclojer/components {:mvn/version "0.1.0"} com.cognitect.aws/api {:mvn/version "0.8.561"} @@ -30,7 +34,7 @@ metosin/muuntaja {:mvn/version "0.6.8"} org.bouncycastle/bcprov-jdk15on {:mvn/version "1.70"} selmer/selmer {:mvn/version "1.12.55"} - io.forward/yaml {:mvn/version "1.0.11"} + io.forward/yaml {:mvn/version "1.0.11"} io.github.cljazz/supabase {:git/sha "a850ed47eb0daa8303f206ea60bd4b3bf59e1e0a" :git/url "https://github.com/cljazz/supabase-clj"} babashka/process {:mvn/version "0.5.22"}} diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 82d441e3..647b6cfb 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,5 +1,3 @@ -version: "3.7" - services: db: image: postgres:14 diff --git a/package-lock.json b/package-lock.json index cd721b80..fda8de3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,8 +25,9 @@ "flowbite-react": "^0.4.7", "js-cookie": "^3.0.5", "js-yaml": "^4.1.0", + "mockingbird-lib": "^0.0.11", "postcss-focus-visible": "^8.0.2", - "puppeteer": "^20.7.2", + "puppeteer": "^23.4.0", "react": "^18.2.0", "react-dom": "18.2.0", "react-refresh": "^0.14.0", @@ -981,6 +982,15 @@ "postcss-selector-parser": "^6.0.10" } }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/@floating-ui/core": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.3.0.tgz", @@ -1020,14 +1030,111 @@ "react-dom": ">=16.8.0" } }, + "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==", + "license": "ISC", + "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/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/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==", + "license": "MIT", + "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/@isaacs/cliui/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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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==", + "license": "MIT", + "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/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -1042,22 +1149,22 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", - "dev": true, - "peer": true, + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -1066,12 +1173,13 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@lezer/common": { @@ -1159,6 +1267,16 @@ "dev": true, "license": "MIT" }, + "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==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -1169,37 +1287,32 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.1.tgz", - "integrity": "sha512-H43VosMzywHCcYcgv0GXXopvwnV21Ud9g2aXbPlQUJj1Xcz9V0wBwHeFz6saFhx/3VKisZfI1GEKEOhQCau7Vw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.0.tgz", + "integrity": "sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==", + "license": "Apache-2.0", "dependencies": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.2.1", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.1" + "debug": "^4.3.6", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.4.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=16.3.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=18" } }, "node_modules/@puppeteer/browsers/node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -1210,9 +1323,10 @@ } }, "node_modules/@puppeteer/browsers/node_modules/yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -1230,6 +1344,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -1629,6 +1744,12 @@ "react-dom": "^18.0.0" } }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "license": "MIT" + }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -1650,10 +1771,11 @@ "license": "MIT" }, "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1666,34 +1788,11 @@ "@types/ms": "*" } }, - "node_modules/@types/eslint": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", - "integrity": "sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==", - "dev": true, - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "peer": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" }, "node_modules/@types/js-levenshtein": { "version": "1.1.1", @@ -1701,11 +1800,10 @@ "license": "MIT" }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true, - "peer": true + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" }, "node_modules/@types/ms": { "version": "0.7.31", @@ -1766,9 +1864,10 @@ } }, "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" @@ -1855,11 +1954,10 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -1869,29 +1967,25 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true, - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true, - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true, - "peer": true + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -1902,28 +1996,25 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true, - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -1932,8 +2023,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "peer": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -1942,34 +2032,31 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true, - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -1977,26 +2064,24 @@ } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -2005,16 +2090,59 @@ } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, "node_modules/@xmldom/xmldom": { "version": "0.8.6", "dev": true, @@ -2027,15 +2155,13 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "peer": true + "license": "Apache-2.0" }, "node_modules/@zxing/text-encoding": { "version": "0.9.0", @@ -2048,6 +2174,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -2067,28 +2194,20 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "dev": true, - "peer": true, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", "peerDependencies": { "acorn": "^8" } }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -2115,8 +2234,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peer": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -2212,18 +2330,21 @@ } }, "node_modules/asn1.js": { - "version": "5.4.1", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "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, "license": "MIT" }, @@ -2253,6 +2374,7 @@ "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -2304,10 +2426,63 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "license": "Apache-2.0" + }, "node_modules/balanced-match": { "version": "1.0.2", "license": "MIT" }, + "node_modules/bare-events": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", + "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", + "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^2.0.0" + } + }, + "node_modules/bare-os": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", + "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, + "node_modules/bare-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.0.tgz", + "integrity": "sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "b4a": "^1.6.6", + "streamx": "^2.20.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "funding": [ @@ -2331,14 +2506,16 @@ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, + "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } }, "node_modules/basic-ftp": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", - "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -2352,6 +2529,7 @@ }, "node_modules/bl": { "version": "4.1.0", + "dev": true, "license": "MIT", "dependencies": { "buffer": "^5.5.0", @@ -2361,6 +2539,7 @@ }, "node_modules/bl/node_modules/buffer": { "version": "5.7.1", + "dev": true, "funding": [ { "type": "github", @@ -2383,6 +2562,7 @@ }, "node_modules/bl/node_modules/readable-stream": { "version": "3.6.0", + "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -2399,20 +2579,22 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.1", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", + "qs": "6.13.0", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -2449,10 +2631,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -2507,32 +2691,39 @@ } }, "node_modules/browserify-sign": { - "version": "4.2.1", + "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, "license": "ISC", "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.5", + "hash-base": "~3.0", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" } }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/browserify-sign/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, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" }, "engines": { - "node": ">= 6" + "node": ">=4" } }, "node_modules/browserify-zlib": { @@ -2544,10 +2735,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "funding": [ { "type": "opencollective", @@ -2556,13 +2746,18 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -2585,6 +2780,7 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", "engines": { "node": "*" } @@ -2593,8 +2789,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "peer": true + "license": "MIT" }, "node_modules/buffer-xor": { "version": "1.0.3", @@ -2620,6 +2815,8 @@ }, "node_modules/bytes": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "license": "MIT", "engines": { @@ -2627,12 +2824,20 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "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" @@ -2667,10 +2872,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001478", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001478.tgz", - "integrity": "sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw==", - "dev": true, + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", "funding": [ { "type": "opencollective", @@ -2684,7 +2888,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "4.1.2", @@ -2741,27 +2946,23 @@ "node": ">= 6" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "peer": true, "engines": { "node": ">=6.0" } }, "node_modules/chromium-bidi": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.12.tgz", - "integrity": "sha512-yl0ngMHtYUGJa2G0lkcbPvbnUZ9WMQyMNSfYmlrGD1nHRNyI9KOGw3dOaofFugXHHToneUaSmF9iUdgCBamCjA==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.5.tgz", + "integrity": "sha512-RuLrmzYrxSb0s9SgpB+QN5jJucPduZQ/9SIe76MDxYJuecPW5mxMdacJ1f4EtgiV+R0p3sCkznTMvH0MPGFqjA==", + "license": "Apache-2.0", "dependencies": { - "mitt": "3.0.0" + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.23.8" }, "peerDependencies": { "devtools-protocol": "*" @@ -2829,6 +3030,20 @@ "node": ">=0.8" } }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/codemirror": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", @@ -2863,12 +3078,17 @@ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "peer": true + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", @@ -2911,7 +3131,9 @@ "license": "MIT" }, "node_modules/content-type": { - "version": "1.0.4", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "license": "MIT", "engines": { @@ -2936,6 +3158,7 @@ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, + "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -2948,6 +3171,7 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "dev": true, "dependencies": { "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -2965,6 +3189,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -3344,9 +3569,10 @@ } }, "node_modules/data-uri-to-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz", - "integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "license": "MIT", "engines": { "node": ">= 14" } @@ -3365,10 +3591,12 @@ "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" }, "node_modules/debug": { - "version": "4.3.4", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -3413,11 +3641,6 @@ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, "node_modules/defaults": { "version": "1.0.4", "dev": true, @@ -3429,6 +3652,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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, + "license": "MIT", + "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.1.4", "dev": true, @@ -3445,14 +3686,14 @@ } }, "node_modules/degenerator": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-4.0.2.tgz", - "integrity": "sha512-HKwIFvZROUMfH3qI3gBpD61BYh7q3c3GXD5UGZzoVNJwVSYgZKvYl1fRMXc9ozoTxl/VZxKJ5v/bA+19tywFiw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "license": "MIT", "dependencies": { - "ast-types": "^0.13.2", - "escodegen": "^1.8.1", - "esprima": "^4.0.0", - "vm2": "^3.9.17" + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" }, "engines": { "node": ">= 14" @@ -3460,6 +3701,8 @@ }, "node_modules/depd": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "license": "MIT", "engines": { @@ -3494,9 +3737,10 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1135028", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz", - "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==" + "version": "0.0.1342118", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1342118.tgz", + "integrity": "sha512-75fMas7PkYNDTmDyb6PRJCH7ILmHLp+BhrZGeMsa4bCh40DTxgCz2NRy5UDzII4C5KuD0oBMZ9vXKhEl6UD/3w==", + "license": "BSD-3-Clause" }, "node_modules/di": { "version": "0.0.1", @@ -3619,6 +3863,12 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, "node_modules/easy-bem": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/easy-bem/-/easy-bem-1.1.1.tgz", @@ -3630,13 +3880,15 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true + "version": "1.5.25", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.25.tgz", + "integrity": "sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g==", + "license": "ISC" }, "node_modules/elliptic": { - "version": "6.5.4", + "version": "6.5.7", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", + "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3654,6 +3906,12 @@ "dev": true, "license": "MIT" }, + "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==", + "license": "MIT" + }, "node_modules/encodeurl": { "version": "1.0.2", "dev": true, @@ -3666,15 +3924,17 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/engine.io": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", - "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", + "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", "dev": true, + "license": "MIT", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -3684,33 +3944,35 @@ "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0" + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/engine.io-parser": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.7.tgz", - "integrity": "sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/engine.io/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -3722,11 +3984,10 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", - "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", - "dev": true, - "peer": true, + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -3752,6 +4013,27 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/error-ex": { "version": "1.3.2", "license": "MIT", @@ -3796,6 +4078,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -3825,9 +4130,7 @@ "node_modules/es-module-lexer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", - "dev": true, - "peer": true + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==" }, "node_modules/es-to-primitive": { "version": "1.2.1", @@ -3846,13 +4149,15 @@ } }, "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "hasInstallScript": true, + "license": "ISC", "dependencies": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", "next-tick": "^1.1.0" }, "engines": { @@ -3879,7 +4184,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", "engines": { "node": ">=6" @@ -3891,30 +4198,40 @@ "license": "MIT" }, "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "estraverse": "^5.2.0", + "esutils": "^2.0.2" }, "bin": { "escodegen": "bin/escodegen.js", "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=4.0" + "node": ">=6.0" }, "optionalDependencies": { "source-map": "~0.6.1" } }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/escodegen/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -3924,8 +4241,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -3934,10 +4249,32 @@ "node": ">=8.0.0" } }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esniff/node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "license": "ISC" + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -3950,8 +4287,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "peer": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -3963,8 +4298,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "peer": true, "engines": { "node": ">=4.0" } @@ -3981,10 +4314,21 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "node_modules/eventemitter3": { "version": "4.0.7", "dev": true, @@ -3992,7 +4336,6 @@ }, "node_modules/events": { "version": "3.3.0", - "dev": true, "license": "MIT", "engines": { "node": ">=0.8.x" @@ -4053,6 +4396,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -4073,6 +4417,12 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, "node_modules/fast-glob": { "version": "3.2.12", "license": "MIT", @@ -4102,10 +4452,14 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } }, "node_modules/fastq": { "version": "1.13.0", @@ -4118,6 +4472,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", "dependencies": { "pend": "~1.2.0" } @@ -4145,7 +4500,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -4195,6 +4552,28 @@ "node": ">= 0.8" } }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, "node_modules/flatted": { "version": "3.2.7", "dev": true, @@ -4227,7 +4606,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -4253,6 +4634,34 @@ "is-callable": "^1.1.3" } }, + "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==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/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==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fraction.js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", @@ -4266,13 +4675,9 @@ "url": "https://www.patreon.com/infusion" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, "node_modules/fs-extra": { "version": "8.1.0", + "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -4287,9 +4692,28 @@ "version": "1.0.0", "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -4324,14 +4748,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "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" @@ -4353,6 +4783,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -4379,19 +4810,55 @@ } }, "node_modules/get-uri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz", - "integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "license": "MIT", "dependencies": { "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^5.0.1", + "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4", - "fs-extra": "^8.1.0" + "fs-extra": "^11.2.0" }, "engines": { "node": ">= 14" } }, + "node_modules/get-uri/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/get-uri/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/get-uri/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -4426,8 +4893,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "peer": true + "license": "BSD-2-Clause" }, "node_modules/gopd": { "version": "1.0.1", @@ -4441,11 +4907,15 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, "node_modules/graphql": { - "version": "16.6.0", + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", "dev": true, "license": "MIT", "engines": { @@ -4472,18 +4942,32 @@ }, "node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", + "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, + "license": "MIT", + "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, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.1" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4549,6 +5033,19 @@ "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, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/headers-polyfill": { "version": "3.1.2", "dev": true, @@ -4584,6 +5081,8 @@ }, "node_modules/http-errors": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4599,6 +5098,8 @@ }, "node_modules/http-errors/node_modules/statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "license": "MIT", "engines": { @@ -4619,9 +5120,10 @@ } }, "node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -4636,9 +5138,10 @@ "license": "MIT" }, "node_modules/https-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz", - "integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -4700,6 +5203,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/inflight": { "version": "1.0.6", "license": "ISC", @@ -4751,10 +5273,27 @@ "node": ">= 0.4" } }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } }, "node_modules/is-arguments": { "version": "1.1.1", @@ -4934,6 +5473,8 @@ }, "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==", "license": "MIT", "engines": { "node": ">=0.12.0" @@ -4953,6 +5494,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-regex": { "version": "1.1.4", "dev": true, @@ -5103,12 +5656,38 @@ "version": "2.0.0", "license": "ISC" }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jackspeak": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", + "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -5122,8 +5701,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -5173,6 +5751,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "dev": true, @@ -5190,6 +5774,7 @@ }, "node_modules/jsonfile": { "version": "4.0.0", + "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -5266,16 +5851,13 @@ "node": ">=0.10.0" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">=0.10.0" } }, "node_modules/lilconfig": { @@ -5317,12 +5899,22 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "peer": true, "engines": { "node": ">=6.11.5" } }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lodash": { "version": "4.17.21", "dev": true, @@ -5381,15 +5973,12 @@ } }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/lz-string": { @@ -5436,8 +6025,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "peer": true + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", @@ -5447,10 +6035,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -5487,7 +6077,6 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -5495,7 +6084,6 @@ }, "node_modules/mime-types": { "version": "2.1.35", - "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -5547,10 +6135,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mitt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", - "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" }, "node_modules/mkdirp": { "version": "0.5.6", @@ -5563,13 +6161,115 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + "node_modules/mockingbird-lib": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/mockingbird-lib/-/mockingbird-lib-0.0.11.tgz", + "integrity": "sha512-50AwnZ8JWOTu3YhhFmubfZ6tY0dym0RWnzDMfeMqYEpC77RZVGdmiCT1QovUvhGbFe30HlNTSBYYzQYgoOm7nQ==", + "dependencies": { + "@codemirror/language": "^6.6.0", + "@codemirror/legacy-modes": "^6.3.1", + "@codemirror/lint": "^6.4.2", + "@codemirror/state": "^6.3.3", + "@codemirror/view": "^6.22.3", + "@isaacs/cliui": "^8.0.2", + "@sentry/cli": "^2.31.0", + "@sentry/react": "^7.109.0", + "@supabase/supabase-js": "^2.25.0", + "@tailwindcss/forms": "^0.5.3", + "@uiw/codemirror-theme-github": "^4.21.7", + "@uiw/react-codemirror": "^4.21.7", + "ajv": "^6.12.6", + "cross-env": "^7.0.3", + "flowbite": "^1.6.6", + "flowbite-react": "^0.4.7", + "glob": "^11.0.0", + "js-cookie": "^3.0.5", + "js-yaml": "^4.1.0", + "postcss-focus-visible": "^8.0.2", + "puppeteer": "^23.3.0", + "react": "^18.2.0", + "react-dom": "18.2.0", + "react-refresh": "^0.14.0", + "react-router-dom": "^6.13.0", + "rimraf": "^6.0.1", + "slugify": "^1.6.6", + "svgmap": "^2.10.1", + "tls-test": "https://tls-test.npmjs.com/tls-test-1.0.0.tgz", + "use-sync-external-store": "1.2.0", + "webpack": "^5.94.0", + "webpack-cli": "^5.1.4" + } + }, + "node_modules/mockingbird-lib/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==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mockingbird-lib/node_modules/glob": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mockingbird-lib/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mockingbird-lib/node_modules/rimraf": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", + "license": "ISC", + "dependencies": { + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/ms": { - "version": "2.1.2", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/msw": { @@ -5708,15 +6408,16 @@ } }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -5729,6 +6430,7 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5736,14 +6438,13 @@ "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "peer": true + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/netmask": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -5759,9 +6460,10 @@ "license": "MIT" }, "node_modules/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -5818,10 +6520,10 @@ } }, "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "license": "MIT" }, "node_modules/normalize-package-data": { "version": "2.5.0", @@ -5835,7 +6537,9 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "license": "ISC", "bin": { @@ -5959,7 +6663,9 @@ } }, "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.1", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "license": "ISC", "bin": { @@ -6034,9 +6740,14 @@ } }, "node_modules/object-inspect": { - "version": "1.12.2", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6114,22 +6825,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/ora": { "version": "5.4.1", "dev": true, @@ -6171,36 +6866,80 @@ "integrity": "sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==", "dev": true }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/pac-proxy-agent": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-6.0.3.tgz", - "integrity": "sha512-5Hr1KgPDoc21Vn3rsXBirwwDnF/iac1jN/zkpsOYruyT+ZgsUhUOgVwq3v9+ukjZd/yGm/0nzO1fDfl7rkGoHQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", + "license": "MIT", "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.0.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "pac-resolver": "^6.0.1", - "socks-proxy-agent": "^8.0.1" + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" }, "engines": { "node": ">= 14" } }, "node_modules/pac-resolver": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-6.0.1.tgz", - "integrity": "sha512-dg497MhVT7jZegPRuOScQ/z0aV/5WR0gTdRu1md+Irs9J9o+ls5jIuxjo1WfaTG+eQQkxyn5HMGvWK+w7EIBkQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "license": "MIT", "dependencies": { - "degenerator": "^4.0.1", - "ip": "^1.1.5", + "degenerator": "^5.0.0", "netmask": "^2.0.2" }, "engines": { "node": ">= 14" } }, + "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==", + "license": "BlueOak-1.0.0" + }, "node_modules/pako": { "version": "1.0.11", "dev": true, @@ -6218,15 +6957,35 @@ } }, "node_modules/parse-asn1": { - "version": "5.1.6", + "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, "license": "ISC", "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "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/parse-asn1/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, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" } }, "node_modules/parse-json": { @@ -6254,6 +7013,15 @@ "dev": true, "license": "MIT" }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "license": "MIT", @@ -6273,8 +7041,35 @@ "version": "1.0.7", "license": "MIT" }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.1.tgz", + "integrity": "sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/path-to-regexp": { - "version": "6.2.1", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "dev": true, "license": "MIT" }, @@ -6282,6 +7077,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, "engines": { "node": ">=8" } @@ -6304,10 +7100,13 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" }, "node_modules/picocolors": { - "version": "1.0.0", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "license": "ISC" }, "node_modules/picomatch": { @@ -6346,10 +7145,22 @@ "node": ">= 6" } }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "funding": [ { "type": "opencollective", @@ -6364,10 +7175,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -7660,14 +8472,6 @@ "version": "4.2.0", "license": "MIT" }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/pretty-format": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", @@ -7725,31 +8529,24 @@ } }, "node_modules/proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.2.1.tgz", - "integrity": "sha512-OIbBKlRAT+ycCm6wAYIzMwPejzRtjy8F3QiDX0eKOA3e4pe3U9F/IvzcHP42bmgQxVv97juG+J8/gx+JIeCX/Q==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", "lru-cache": "^7.14.1", - "pac-proxy-agent": "^6.0.3", + "pac-proxy-agent": "^7.0.1", "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.1" + "socks-proxy-agent": "^8.0.2" }, "engines": { "node": ">= 14" } }, - "node_modules/proxy-agent/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -7774,9 +8571,10 @@ "license": "MIT" }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -7788,47 +8586,48 @@ "license": "MIT" }, "node_modules/puppeteer": { - "version": "20.7.2", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.7.2.tgz", - "integrity": "sha512-SKg9TgUY3TJvnOy0VrkhduSvDQIjBsi+s/Ne6S+qD53MM6emau+oh+kNqySNrT7c4qkg27UrJ9aEnltKDAQTzQ==", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.4.0.tgz", + "integrity": "sha512-FxgFFJI7NAsX8uebiEDSjS86vufz9TaqERQHShQT0lCbSRI3jUPEcz/0HdwLiYvfYNsc1zGjqY3NsGZya4PvUA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "1.4.1", - "cosmiconfig": "8.2.0", - "puppeteer-core": "20.7.2" + "@puppeteer/browsers": "2.4.0", + "chromium-bidi": "0.6.5", + "cosmiconfig": "^9.0.0", + "devtools-protocol": "0.0.1342118", + "puppeteer-core": "23.4.0", + "typed-query-selector": "^2.12.0" + }, + "bin": { + "puppeteer": "lib/cjs/puppeteer/node/cli.js" }, "engines": { - "node": ">=16.3.0" + "node": ">=18" } }, "node_modules/puppeteer-core": { - "version": "20.7.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.7.2.tgz", - "integrity": "sha512-4Sd+v2YLlYMYFP/9SI/spT1joGTePwhmKP89pchUqz7VcWwv/Yh0Atmsybz+7wWT0VPDnw0UhBM6iNEfXEoUvg==", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.4.0.tgz", + "integrity": "sha512-fqkIP5FOcb38jfBj/OcBz1wFaI9nk40uQKSORvnXws6wCbep2dg8yxZ3ddJxBIfQsxoiEOvnrykFinUScrB/ew==", + "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "1.4.1", - "chromium-bidi": "0.4.12", - "cross-fetch": "3.1.6", - "debug": "4.3.4", - "devtools-protocol": "0.0.1135028", - "ws": "8.13.0" + "@puppeteer/browsers": "2.4.0", + "chromium-bidi": "0.6.5", + "debug": "^4.3.7", + "devtools-protocol": "0.0.1342118", + "typed-query-selector": "^2.12.0", + "ws": "^8.18.0" }, "engines": { - "node": ">=16.3.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=18" } }, "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -7845,6 +8644,65 @@ } } }, + "node_modules/puppeteer/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/puppeteer/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/puppeteer/node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/qjobs": { "version": "1.2.0", "dev": true, @@ -7854,11 +8712,13 @@ } }, "node_modules/qs": { - "version": "6.11.0", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -7899,9 +8759,14 @@ ], "license": "MIT" }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "license": "MIT" + }, "node_modules/randombytes": { "version": "2.1.0", - "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" @@ -7925,7 +8790,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "license": "MIT", "dependencies": { @@ -8068,7 +8935,9 @@ } }, "node_modules/readable-stream": { - "version": "2.3.7", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", "dependencies": { @@ -8112,6 +8981,18 @@ "node": ">= 0.8.0" } }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", @@ -8161,6 +9042,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -8298,11 +9200,10 @@ } }, "node_modules/schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", - "dev": true, - "peer": true, + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -8317,13 +9218,10 @@ } }, "node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -8332,11 +9230,10 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dev": true, - "peer": true, + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -8346,6 +9243,24 @@ "dev": true, "license": "MIT" }, + "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, + "license": "MIT", + "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", "dev": true, @@ -8353,6 +9268,8 @@ }, "node_modules/setprototypeof": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true, "license": "ISC" }, @@ -8405,6 +9322,18 @@ "which": "bin/which" } }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -8433,13 +9362,19 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", + "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, "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "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" @@ -8462,48 +9397,54 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" } }, "node_modules/socket.io": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.2.tgz", - "integrity": "sha512-Vp+lSks5k0dewYTfwgPT9UeGGd+ht7sCpB7p0e83VgO4X/AHYWhXITMrNk/pg8syY2bpx23ptClCQuHhqi2BgQ==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.4.2", + "engine.io": "~6.5.2", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, + "license": "MIT", "dependencies": { - "ws": "~8.11.0" + "debug": "~4.3.4", + "ws": "~8.17.1" } }, "node_modules/socket.io-adapter/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -8528,36 +9469,33 @@ } }, "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "license": "MIT", "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, "node_modules/socks-proxy-agent": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz", - "integrity": "sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "license": "MIT", "dependencies": { - "agent-base": "^7.0.1", + "agent-base": "^7.1.1", "debug": "^4.3.4", - "socks": "^2.7.1" + "socks": "^2.8.3" }, "engines": { "node": ">= 14" } }, - "node_modules/socks/node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, "node_modules/source-map": { "version": "0.5.7", "dev": true, @@ -8567,7 +9505,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -8609,6 +9549,12 @@ "dev": true, "license": "CC0-1.0" }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" + }, "node_modules/statuses": { "version": "1.5.0", "dev": true, @@ -8663,6 +9609,20 @@ "node": ">=8.0" } }, + "node_modules/streamx": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, "node_modules/strict-event-emitter": { "version": "0.2.8", "dev": true, @@ -8673,6 +9633,7 @@ }, "node_modules/string_decoder": { "version": "1.3.0", + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -8690,9 +9651,20 @@ "node": ">=8" } }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "license": "MIT" + "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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, "node_modules/string.prototype.padend": { "version": "3.1.3", @@ -8746,6 +9718,19 @@ "node": ">=8" } }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "dev": true, @@ -8936,57 +9921,41 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "peer": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "license": "MIT", "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "tar-stream": "^3.1.5" }, - "engines": { - "node": ">=6" + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" } }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/terser": { - "version": "5.17.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", - "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", - "dev": true, - "peer": true, + "version": "5.33.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.33.0.tgz", + "integrity": "sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==", + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -9001,17 +9970,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "dev": true, - "peer": true, + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -9039,8 +10007,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -9049,13 +10016,21 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, + "node_modules/text-decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz", + "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, "node_modules/thenby": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", @@ -9096,6 +10071,13 @@ "node": ">=0.6.0" } }, + "node_modules/tls-test": { + "version": "1.0.0", + "resolved": "https://tls-test.npmjs.com/tls-test-1.0.0.tgz", + "integrity": "sha512-Mi+xVXBzew7ky/UvA+MAAK2gRwZQE2j4PRoc2QEpJj8hK43X8+eV0Gsy9TiceIkYRYFZ1964oSAgxYf2Ygs5bQ==", + "hasInstallScript": true, + "license": "MIT" + }, "node_modules/tmp": { "version": "0.2.1", "dev": true, @@ -9114,6 +10096,8 @@ }, "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==", "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -9124,6 +10108,8 @@ }, "node_modules/toidentifier": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "license": "MIT", "engines": { @@ -9153,17 +10139,6 @@ "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/type-is": { "version": "1.6.18", "dev": true, @@ -9176,6 +10151,12 @@ "node": ">= 0.6" } }, + "node_modules/typed-query-selector": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "license": "MIT" + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -9186,6 +10167,7 @@ }, "node_modules/typescript": { "version": "4.8.4", + "dev": true, "license": "Apache-2.0", "optional": true, "peer": true, @@ -9234,6 +10216,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "license": "MIT", "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -9257,6 +10240,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -9264,6 +10248,7 @@ }, "node_modules/universalify": { "version": "0.1.2", + "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -9278,10 +10263,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "funding": [ { "type": "opencollective", @@ -9290,14 +10274,19 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -9333,6 +10322,12 @@ "dev": true, "license": "MIT" }, + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", + "license": "MIT" + }, "node_modules/use-sync-external-store": { "version": "1.2.0", "license": "MIT", @@ -9391,6 +10386,7 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9400,21 +10396,6 @@ "dev": true, "license": "MIT" }, - "node_modules/vm2": { - "version": "3.9.19", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz", - "integrity": "sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==", - "dependencies": { - "acorn": "^8.7.0", - "acorn-walk": "^8.2.0" - }, - "bin": { - "vm2": "bin/vm2" - }, - "engines": { - "node": ">=6.0" - } - }, "node_modules/void-elements": { "version": "2.0.1", "dev": true, @@ -9429,11 +10410,10 @@ "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==" }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "peer": true, + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -9478,35 +10458,33 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.85.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.85.1.tgz", - "integrity": "sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==", - "dev": true, - "peer": true, + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.1", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -9525,12 +10503,78 @@ } } }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "peer": true, "engines": { "node": ">=10.13.0" } @@ -9635,16 +10679,32 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi": { + "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==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -9663,7 +10723,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "7.5.9", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "license": "MIT", "engines": { @@ -9705,12 +10767,6 @@ "node": ">=0.10.32" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/yargs": { "version": "16.2.0", "dev": true, @@ -9740,10 +10796,20 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } }, "dependencies": { @@ -10199,6 +11265,11 @@ "dev": true, "requires": {} }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" + }, "@floating-ui/core": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.3.0.tgz", @@ -10230,14 +11301,72 @@ "@floating-ui/dom": "^1.3.0" } }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "requires": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" } }, "@jridgewell/resolve-uri": { @@ -10246,19 +11375,17 @@ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" }, "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" }, "@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", - "dev": true, - "peer": true, + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "@jridgewell/sourcemap-codec": { @@ -10267,12 +11394,12 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@lezer/common": { @@ -10339,23 +11466,30 @@ "version": "1.0.3", "dev": true }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true + }, "@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" }, "@puppeteer/browsers": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.1.tgz", - "integrity": "sha512-H43VosMzywHCcYcgv0GXXopvwnV21Ud9g2aXbPlQUJj1Xcz9V0wBwHeFz6saFhx/3VKisZfI1GEKEOhQCau7Vw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.0.tgz", + "integrity": "sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==", "requires": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.2.1", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.1" + "debug": "^4.3.6", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.4.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" }, "dependencies": { "cliui": { @@ -10369,9 +11503,9 @@ } }, "yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "requires": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -10658,6 +11792,11 @@ "@types/react-dom": "^18.0.0" } }, + "@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + }, "@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -10675,9 +11814,9 @@ "dev": true }, "@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, "requires": { "@types/node": "*" @@ -10690,45 +11829,19 @@ "@types/ms": "*" } }, - "@types/eslint": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", - "integrity": "sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==", - "dev": true, - "peer": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "peer": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "peer": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" }, "@types/js-levenshtein": { "version": "1.1.1", "dev": true }, "@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true, - "peer": true + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "@types/ms": { "version": "0.7.31", @@ -10782,9 +11895,9 @@ } }, "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "optional": true, "requires": { "@types/node": "*" @@ -10836,11 +11949,9 @@ } }, "@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "requires": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -10849,30 +11960,22 @@ "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true, - "peer": true + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" }, "@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true, - "peer": true + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, "@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true, - "peer": true + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" }, "@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "peer": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -10882,29 +11985,23 @@ "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true, - "peer": true + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "@webassemblyjs/ieee754": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "peer": true, "requires": { "@xtuc/ieee754": "^1.2.0" } @@ -10913,8 +12010,6 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "peer": true, "requires": { "@xtuc/long": "4.2.2" } @@ -10922,35 +12017,29 @@ "@webassemblyjs/utf8": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true, - "peer": true + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, "@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "requires": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -10958,26 +12047,22 @@ } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "requires": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -10986,16 +12071,32 @@ } }, "@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "dev": true, - "peer": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "requires": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, + "@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "requires": {} + }, + "@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "requires": {} + }, + "@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "requires": {} + }, "@xmldom/xmldom": { "version": "0.8.6", "dev": true @@ -11003,16 +12104,12 @@ "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "peer": true + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "peer": true + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "@zxing/text-encoding": { "version": "0.9.0", @@ -11034,23 +12131,16 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" }, - "acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "dev": true, - "peer": true, + "acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "requires": {} }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - }, "agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "requires": { "debug": "^4.3.4" } @@ -11070,8 +12160,6 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peer": true, "requires": {} }, "ansi-escapes": { @@ -11134,17 +12222,20 @@ } }, "asn1.js": { - "version": "5.4.1", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "minimalistic-assert": "^1.0.0" }, "dependencies": { "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 } } @@ -11196,8 +12287,55 @@ "version": "1.0.5", "dev": true }, - "balanced-match": { - "version": "1.0.2" + "b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" + }, + "balanced-match": { + "version": "1.0.2" + }, + "bare-events": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", + "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", + "optional": true + }, + "bare-fs": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", + "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", + "optional": true, + "requires": { + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^2.0.0" + } + }, + "bare-os": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", + "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", + "optional": true + }, + "bare-path": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "optional": true, + "requires": { + "bare-os": "^2.1.0" + } + }, + "bare-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.0.tgz", + "integrity": "sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==", + "optional": true, + "requires": { + "b4a": "^1.6.6", + "streamx": "^2.20.0" + } }, "base64-js": { "version": "1.5.1" @@ -11209,15 +12347,16 @@ "dev": true }, "basic-ftp": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", - "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==" + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==" }, "binary-extensions": { "version": "2.2.0" }, "bl": { "version": "4.1.0", + "dev": true, "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -11226,6 +12365,7 @@ "dependencies": { "buffer": { "version": "5.7.1", + "dev": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -11233,6 +12373,7 @@ }, "readable-stream": { "version": "3.6.0", + "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -11246,19 +12387,21 @@ "dev": true }, "body-parser": { - "version": "1.20.1", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "requires": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", + "qs": "6.13.0", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -11290,9 +12433,11 @@ } }, "braces": { - "version": "3.0.2", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "brorand": { @@ -11339,27 +12484,31 @@ } }, "browserify-sign": { - "version": "4.2.1", + "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, "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.5", + "hash-base": "~3.0", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" }, "dependencies": { - "readable-stream": { - "version": "3.6.0", + "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, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } } } @@ -11372,15 +12521,14 @@ } }, "browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" } }, "buffer": { @@ -11400,9 +12548,7 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "peer": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "buffer-xor": { "version": "1.0.3", @@ -11422,14 +12568,21 @@ }, "bytes": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, "call-bind": { - "version": "1.0.2", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "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" } }, "callsites": { @@ -11455,10 +12608,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001478", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001478.tgz", - "integrity": "sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw==", - "dev": true + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==" }, "chalk": { "version": "4.1.2", @@ -11493,24 +12645,19 @@ } } }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "peer": true + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" }, "chromium-bidi": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.12.tgz", - "integrity": "sha512-yl0ngMHtYUGJa2G0lkcbPvbnUZ9WMQyMNSfYmlrGD1nHRNyI9KOGw3dOaofFugXHHToneUaSmF9iUdgCBamCjA==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.5.tgz", + "integrity": "sha512-RuLrmzYrxSb0s9SgpB+QN5jJucPduZQ/9SIe76MDxYJuecPW5mxMdacJ1f4EtgiV+R0p3sCkznTMvH0MPGFqjA==", "requires": { - "mitt": "3.0.0" + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.23.8" } }, "cipher-base": { @@ -11554,6 +12701,16 @@ "version": "1.0.4", "dev": true }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, "codemirror": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", @@ -11583,12 +12740,15 @@ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "peer": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "concat-map": { "version": "0.0.1" @@ -11625,7 +12785,9 @@ "dev": true }, "content-type": { - "version": "1.0.4", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true }, "cookie": { @@ -11650,6 +12812,7 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "dev": true, "requires": { "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -11661,6 +12824,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -11926,9 +13090,9 @@ } }, "data-uri-to-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz", - "integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==" + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==" }, "date-format": { "version": "4.0.14", @@ -11940,9 +13104,11 @@ "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" }, "debug": { - "version": "4.3.4", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, "deep-equal": { @@ -11978,11 +13144,6 @@ } } }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, "defaults": { "version": "1.0.4", "dev": true, @@ -11990,6 +13151,17 @@ "clone": "^1.0.2" } }, + "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, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, "define-properties": { "version": "1.1.4", "dev": true, @@ -11999,18 +13171,19 @@ } }, "degenerator": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-4.0.2.tgz", - "integrity": "sha512-HKwIFvZROUMfH3qI3gBpD61BYh7q3c3GXD5UGZzoVNJwVSYgZKvYl1fRMXc9ozoTxl/VZxKJ5v/bA+19tywFiw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "requires": { - "ast-types": "^0.13.2", - "escodegen": "^1.8.1", - "esprima": "^4.0.0", - "vm2": "^3.9.17" + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" } }, "depd": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, "dependency-graph": { @@ -12032,9 +13205,9 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.1135028", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz", - "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==" + "version": "0.0.1342118", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1342118.tgz", + "integrity": "sha512-75fMas7PkYNDTmDyb6PRJCH7ILmHLp+BhrZGeMsa4bCh40DTxgCz2NRy5UDzII4C5KuD0oBMZ9vXKhEl6UD/3w==" }, "di": { "version": "0.0.1", @@ -12127,6 +13300,11 @@ "domhandler": "^5.0.3" } }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "easy-bem": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/easy-bem/-/easy-bem-1.1.1.tgz", @@ -12137,13 +13315,14 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true + "version": "1.5.25", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.25.tgz", + "integrity": "sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g==" }, "elliptic": { - "version": "6.5.4", + "version": "6.5.7", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", + "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", "dev": true, "requires": { "bn.js": "^4.11.9", @@ -12161,6 +13340,11 @@ } } }, + "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==" + }, "encodeurl": { "version": "1.0.2", "dev": true @@ -12174,9 +13358,9 @@ } }, "engine.io": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", - "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", + "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -12187,31 +13371,29 @@ "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0" + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" }, "dependencies": { "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "requires": {} } } }, "engine.io-parser": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.7.tgz", - "integrity": "sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true }, "enhanced-resolve": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", - "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", - "dev": true, - "peer": true, + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -12227,6 +13409,16 @@ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + }, + "envinfo": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==" + }, "error-ex": { "version": "1.3.2", "requires": { @@ -12263,6 +13455,21 @@ "unbox-primitive": "^1.0.2" } }, + "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, + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "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 + }, "es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -12291,9 +13498,7 @@ "es-module-lexer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", - "dev": true, - "peer": true + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==" }, "es-to-primitive": { "version": "1.2.1", @@ -12305,12 +13510,13 @@ } }, "es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "requires": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", "next-tick": "^1.1.0" } }, @@ -12334,24 +13540,30 @@ } }, "escalade": { - "version": "3.1.1" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" }, "escape-html": { "version": "1.0.3", "dev": true }, "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "requires": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", + "estraverse": "^5.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -12364,13 +13576,29 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "peer": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, + "esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" + } + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -12380,8 +13608,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "peer": true, "requires": { "estraverse": "^5.2.0" }, @@ -12389,9 +13615,7 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "peer": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" } } }, @@ -12405,13 +13629,21 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "eventemitter3": { "version": "4.0.7", "dev": true }, "events": { - "version": "3.3.0", - "dev": true + "version": "3.3.0" }, "evp_bytestokey": { "version": "1.0.3", @@ -12474,6 +13706,11 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, "fast-glob": { "version": "3.2.12", "requires": { @@ -12497,10 +13734,10 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" }, "fastq": { "version": "1.13.0", @@ -12530,7 +13767,9 @@ } }, "fill-range": { - "version": "7.0.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "requires": { "to-regex-range": "^5.0.1" } @@ -12568,6 +13807,20 @@ } } }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" + }, "flatted": { "version": "3.2.7", "dev": true @@ -12594,7 +13847,9 @@ } }, "follow-redirects": { - "version": "1.15.2", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true }, "for-each": { @@ -12604,19 +13859,31 @@ "is-callable": "^1.1.3" } }, + "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==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + } + } + }, "fraction.js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "dev": true }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, "fs-extra": { "version": "8.1.0", + "dev": true, "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -12626,8 +13893,16 @@ "fs.realpath": { "version": "1.0.0" }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "optional": true + }, "function-bind": { - "version": "1.1.1" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { "version": "1.1.5", @@ -12647,14 +13922,16 @@ "version": "2.0.5" }, "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-stdin": { @@ -12680,14 +13957,40 @@ } }, "get-uri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz", - "integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", "requires": { "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^5.0.1", + "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4", - "fs-extra": "^8.1.0" + "fs-extra": "^11.2.0" + }, + "dependencies": { + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" + } } }, "glob": { @@ -12713,9 +14016,7 @@ "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "peer": true + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "gopd": { "version": "1.0.1", @@ -12725,10 +14026,14 @@ } }, "graceful-fs": { - "version": "4.2.10" + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "graphql": { - "version": "16.6.0", + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", "dev": true }, "has": { @@ -12742,16 +14047,23 @@ "dev": true }, "has-flag": { - "version": "4.0.0", - "dev": true + "version": "4.0.0" }, "has-property-descriptors": { - "version": "1.0.0", + "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, "requires": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" } }, + "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 + }, "has-symbols": { "version": "1.0.3", "dev": true @@ -12791,6 +14103,15 @@ "minimalistic-assert": "^1.0.1" } }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, "headers-polyfill": { "version": "3.1.2", "dev": true @@ -12825,6 +14146,8 @@ }, "http-errors": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "requires": { "depd": "2.0.0", @@ -12836,6 +14159,8 @@ "dependencies": { "statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } @@ -12850,9 +14175,9 @@ } }, "http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "requires": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -12863,9 +14188,9 @@ "dev": true }, "https-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz", - "integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "requires": { "agent-base": "^7.0.2", "debug": "4" @@ -12896,6 +14221,15 @@ "resolve-from": "^4.0.0" } }, + "import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, "inflight": { "version": "1.0.6", "requires": { @@ -12938,10 +14272,19 @@ "side-channel": "^1.0.4" } }, - "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + "interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==" + }, + "ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "requires": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + } }, "is-arguments": { "version": "1.1.1", @@ -13043,7 +14386,9 @@ "dev": true }, "is-number": { - "version": "7.0.0" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-number-object": { "version": "1.0.7", @@ -13052,6 +14397,14 @@ "has-tostringtag": "^1.0.0" } }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, "is-regex": { "version": "1.1.4", "dev": true, @@ -13141,12 +14494,24 @@ "isexe": { "version": "2.0.0" }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "jackspeak": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", + "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "peer": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -13157,8 +14522,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -13190,6 +14553,11 @@ "argparse": "^2.0.1" } }, + "jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, "json-parse-better-errors": { "version": "1.0.2", "dev": true @@ -13206,6 +14574,7 @@ }, "jsonfile": { "version": "4.0.0", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -13270,14 +14639,10 @@ "version": "0.1.0", "dev": true }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "lilconfig": { "version": "2.1.0", @@ -13308,9 +14673,15 @@ "loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "peer": true + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } }, "lodash": { "version": "4.17.21", @@ -13354,13 +14725,9 @@ } }, "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" }, "lz-string": { "version": "1.5.0", @@ -13394,17 +14761,17 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "peer": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "merge2": { "version": "1.4.1" }, "micromatch": { - "version": "4.0.5", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, @@ -13427,12 +14794,10 @@ "dev": true }, "mime-db": { - "version": "1.52.0", - "dev": true + "version": "1.52.0" }, "mime-types": { "version": "2.1.35", - "dev": true, "requires": { "mime-db": "1.52.0" } @@ -13462,10 +14827,15 @@ "version": "1.2.7", "dev": true }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" + }, "mitt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", - "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" }, "mkdirp": { "version": "0.5.6", @@ -13474,13 +14844,89 @@ "minimist": "^1.2.6" } }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, + "mockingbird-lib": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/mockingbird-lib/-/mockingbird-lib-0.0.11.tgz", + "integrity": "sha512-50AwnZ8JWOTu3YhhFmubfZ6tY0dym0RWnzDMfeMqYEpC77RZVGdmiCT1QovUvhGbFe30HlNTSBYYzQYgoOm7nQ==", + "requires": { + "@codemirror/language": "^6.6.0", + "@codemirror/legacy-modes": "^6.3.1", + "@codemirror/lint": "^6.4.2", + "@codemirror/state": "^6.3.3", + "@codemirror/view": "^6.22.3", + "@isaacs/cliui": "^8.0.2", + "@sentry/cli": "^2.31.0", + "@sentry/react": "^7.109.0", + "@supabase/supabase-js": "^2.25.0", + "@tailwindcss/forms": "^0.5.3", + "@uiw/codemirror-theme-github": "^4.21.7", + "@uiw/react-codemirror": "^4.21.7", + "ajv": "^6.12.6", + "cross-env": "^7.0.3", + "flowbite": "^1.6.6", + "flowbite-react": "^0.4.7", + "glob": "^11.0.0", + "js-cookie": "^3.0.5", + "js-yaml": "^4.1.0", + "postcss-focus-visible": "^8.0.2", + "puppeteer": "^23.3.0", + "react": "^18.2.0", + "react-dom": "18.2.0", + "react-refresh": "^0.14.0", + "react-router-dom": "^6.13.0", + "rimraf": "^6.0.1", + "slugify": "^1.6.6", + "svgmap": "^2.10.1", + "tls-test": "https://tls-test.npmjs.com/tls-test-1.0.0.tgz", + "use-sync-external-store": "1.2.0", + "webpack": "^5.94.0", + "webpack-cli": "^5.1.4" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + } + }, + "minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "rimraf": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", + "requires": { + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" + } + } + } + }, "ms": { - "version": "2.1.2" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "msw": { "version": "0.47.4", @@ -13571,9 +15017,9 @@ } }, "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" }, "negotiator": { "version": "0.6.3", @@ -13584,9 +15030,7 @@ "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "peer": true + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "netmask": { "version": "2.0.2", @@ -13603,9 +15047,9 @@ "dev": true }, "node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "requires": { "whatwg-url": "^5.0.0" } @@ -13645,10 +15089,9 @@ } }, "node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" }, "normalize-package-data": { "version": "2.5.0", @@ -13661,7 +15104,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -13741,7 +15186,9 @@ "dev": true }, "semver": { - "version": "5.7.1", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "shebang-command": { @@ -13787,7 +15234,9 @@ "version": "3.0.0" }, "object-inspect": { - "version": "1.12.2", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true }, "object-is": { @@ -13834,19 +15283,6 @@ "mimic-fn": "^2.1.0" } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, "ora": { "version": "5.4.1", "dev": true, @@ -13876,30 +15312,56 @@ "integrity": "sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==", "dev": true }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, "pac-proxy-agent": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-6.0.3.tgz", - "integrity": "sha512-5Hr1KgPDoc21Vn3rsXBirwwDnF/iac1jN/zkpsOYruyT+ZgsUhUOgVwq3v9+ukjZd/yGm/0nzO1fDfl7rkGoHQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", "requires": { + "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.0.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "pac-resolver": "^6.0.1", - "socks-proxy-agent": "^8.0.1" + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" } }, "pac-resolver": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-6.0.1.tgz", - "integrity": "sha512-dg497MhVT7jZegPRuOScQ/z0aV/5WR0gTdRu1md+Irs9J9o+ls5jIuxjo1WfaTG+eQQkxyn5HMGvWK+w7EIBkQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "requires": { - "degenerator": "^4.0.1", - "ip": "^1.1.5", + "degenerator": "^5.0.0", "netmask": "^2.0.2" } }, + "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==" + }, "pako": { "version": "1.0.11", "dev": true @@ -13913,14 +15375,29 @@ } }, "parse-asn1": { - "version": "5.1.6", + "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, "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "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" + }, + "dependencies": { + "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, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + } } }, "parse-json": { @@ -13939,6 +15416,11 @@ "version": "0.0.1", "dev": true }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, "path-is-absolute": { "version": "1.0.1" }, @@ -13950,14 +15432,33 @@ "path-parse": { "version": "1.0.7" }, + "path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "requires": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "dependencies": { + "lru-cache": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.1.tgz", + "integrity": "sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==" + } + } + }, "path-to-regexp": { - "version": "6.2.1", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "dev": true }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "pbkdf2": { "version": "3.1.2", @@ -13976,7 +15477,9 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "picocolors": { - "version": "1.0.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" }, "picomatch": { "version": "2.3.1" @@ -13993,14 +15496,22 @@ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, "postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" } }, "postcss-attribute-case-insensitive": { @@ -14736,11 +16247,6 @@ "postcss-value-parser": { "version": "4.2.0" }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" - }, "pretty-format": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", @@ -14780,25 +16286,18 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.2.1.tgz", - "integrity": "sha512-OIbBKlRAT+ycCm6wAYIzMwPejzRtjy8F3QiDX0eKOA3e4pe3U9F/IvzcHP42bmgQxVv97juG+J8/gx+JIeCX/Q==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", "requires": { "agent-base": "^7.0.2", "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", "lru-cache": "^7.14.1", - "pac-proxy-agent": "^6.0.3", + "pac-proxy-agent": "^7.0.1", "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" - } + "socks-proxy-agent": "^8.0.2" } }, "proxy-from-env": { @@ -14825,9 +16324,9 @@ } }, "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -14838,32 +16337,66 @@ "dev": true }, "puppeteer": { - "version": "20.7.2", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.7.2.tgz", - "integrity": "sha512-SKg9TgUY3TJvnOy0VrkhduSvDQIjBsi+s/Ne6S+qD53MM6emau+oh+kNqySNrT7c4qkg27UrJ9aEnltKDAQTzQ==", - "requires": { - "@puppeteer/browsers": "1.4.1", - "cosmiconfig": "8.2.0", - "puppeteer-core": "20.7.2" + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.4.0.tgz", + "integrity": "sha512-FxgFFJI7NAsX8uebiEDSjS86vufz9TaqERQHShQT0lCbSRI3jUPEcz/0HdwLiYvfYNsc1zGjqY3NsGZya4PvUA==", + "requires": { + "@puppeteer/browsers": "2.4.0", + "chromium-bidi": "0.6.5", + "cosmiconfig": "^9.0.0", + "devtools-protocol": "0.0.1342118", + "puppeteer-core": "23.4.0", + "typed-query-selector": "^2.12.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "requires": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "optional": true, + "peer": true + } } }, "puppeteer-core": { - "version": "20.7.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.7.2.tgz", - "integrity": "sha512-4Sd+v2YLlYMYFP/9SI/spT1joGTePwhmKP89pchUqz7VcWwv/Yh0Atmsybz+7wWT0VPDnw0UhBM6iNEfXEoUvg==", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.4.0.tgz", + "integrity": "sha512-fqkIP5FOcb38jfBj/OcBz1wFaI9nk40uQKSORvnXws6wCbep2dg8yxZ3ddJxBIfQsxoiEOvnrykFinUScrB/ew==", "requires": { - "@puppeteer/browsers": "1.4.1", - "chromium-bidi": "0.4.12", - "cross-fetch": "3.1.6", - "debug": "4.3.4", - "devtools-protocol": "0.0.1135028", - "ws": "8.13.0" + "@puppeteer/browsers": "2.4.0", + "chromium-bidi": "0.6.5", + "debug": "^4.3.7", + "devtools-protocol": "0.0.1342118", + "typed-query-selector": "^2.12.0", + "ws": "^8.18.0" }, "dependencies": { "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "requires": {} } } @@ -14873,10 +16406,12 @@ "dev": true }, "qs": { - "version": "6.11.0", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "requires": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" } }, "querystring": { @@ -14890,9 +16425,13 @@ "queue-microtask": { "version": "1.2.3" }, + "queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, "randombytes": { "version": "2.1.0", - "dev": true, "requires": { "safe-buffer": "^5.1.0" } @@ -14910,7 +16449,9 @@ "dev": true }, "raw-body": { - "version": "2.5.1", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "requires": { "bytes": "3.1.2", @@ -15003,7 +16544,9 @@ } }, "readable-stream": { - "version": "2.3.7", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -15038,6 +16581,14 @@ "version": "1.4.10", "dev": true }, + "rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "requires": { + "resolve": "^1.20.0" + } + }, "regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", @@ -15069,6 +16620,21 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -15144,11 +16710,9 @@ } }, "schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", - "dev": true, - "peer": true, + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -15156,20 +16720,14 @@ } }, "semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" }, "serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dev": true, - "peer": true, + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "requires": { "randombytes": "^2.1.0" } @@ -15178,12 +16736,28 @@ "version": "2.5.1", "dev": true }, + "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, + "requires": { + "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" + } + }, "setimmediate": { "version": "1.0.5", "dev": true }, "setprototypeof": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "sha.js": { @@ -15223,6 +16797,14 @@ "integrity": "sha512-cZB2pzVXBnhpJ6PQdsjO+j/MksR28mv4QD/hP/2y1fsIa9Z9RutYgh3N34FZ8Ktl4puAXaIGlct+gMCJ5BmwmA==", "dev": true }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -15241,12 +16823,15 @@ "dev": true }, "side-channel": { - "version": "1.0.4", + "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, "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "signal-exit": { @@ -15264,32 +16849,34 @@ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, "socket.io": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.2.tgz", - "integrity": "sha512-Vp+lSks5k0dewYTfwgPT9UeGGd+ht7sCpB7p0e83VgO4X/AHYWhXITMrNk/pg8syY2bpx23ptClCQuHhqi2BgQ==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.4.2", + "engine.io": "~6.5.2", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" } }, "socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, "requires": { - "ws": "~8.11.0" + "debug": "~4.3.4", + "ws": "~8.17.1" }, "dependencies": { "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "requires": {} } @@ -15306,29 +16893,22 @@ } }, "socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "requires": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" - }, - "dependencies": { - "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - } } }, "socks-proxy-agent": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz", - "integrity": "sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", "requires": { - "agent-base": "^7.0.1", + "agent-base": "^7.1.1", "debug": "^4.3.4", - "socks": "^2.7.1" + "socks": "^2.8.3" } }, "source-map": { @@ -15336,7 +16916,9 @@ "dev": true }, "source-map-js": { - "version": "1.0.2" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" }, "source-map-support": { "version": "0.4.18", @@ -15369,6 +16951,11 @@ "version": "3.0.12", "dev": true }, + "sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, "statuses": { "version": "1.5.0", "dev": true @@ -15410,6 +16997,17 @@ "fs-extra": "^8.1.0" } }, + "streamx": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", + "requires": { + "bare-events": "^2.2.0", + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + } + }, "strict-event-emitter": { "version": "0.2.8", "dev": true, @@ -15419,6 +17017,7 @@ }, "string_decoder": { "version": "1.3.0", + "dev": true, "requires": { "safe-buffer": "~5.2.0" } @@ -15429,11 +17028,16 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0" - } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "string.prototype.padend": { @@ -15469,6 +17073,14 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-bom": { "version": "3.0.0", "dev": true @@ -15605,51 +17217,33 @@ "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "peer": true + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" }, "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0", "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "tar-stream": "^3.1.5" } }, "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "terser": { - "version": "5.17.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", - "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", - "dev": true, - "peer": true, + "version": "5.33.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.33.0.tgz", + "integrity": "sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==", "requires": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -15660,16 +17254,12 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "peer": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -15678,17 +17268,23 @@ } }, "terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "dev": true, - "peer": true, + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "requires": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" + } + }, + "text-decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz", + "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==", + "requires": { + "b4a": "^1.6.4" } }, "thenby": { @@ -15723,6 +17319,10 @@ "setimmediate": "^1.0.4" } }, + "tls-test": { + "version": "https://tls-test.npmjs.com/tls-test-1.0.0.tgz", + "integrity": "sha512-Mi+xVXBzew7ky/UvA+MAAK2gRwZQE2j4PRoc2QEpJj8hK43X8+eV0Gsy9TiceIkYRYFZ1964oSAgxYf2Ygs5bQ==" + }, "tmp": { "version": "0.2.1", "dev": true, @@ -15736,12 +17336,16 @@ }, "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==", "requires": { "is-number": "^7.0.0" } }, "toidentifier": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, "tr46": { @@ -15764,14 +17368,6 @@ "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "requires": { - "prelude-ls": "~1.1.2" - } - }, "type-is": { "version": "1.6.18", "dev": true, @@ -15780,6 +17376,11 @@ "mime-types": "~2.1.24" } }, + "typed-query-selector": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==" + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -15790,6 +17391,7 @@ }, "typescript": { "version": "4.8.4", + "dev": true, "optional": true, "peer": true }, @@ -15830,20 +17432,20 @@ } }, "universalify": { - "version": "0.1.2" + "version": "0.1.2", + "dev": true }, "unpipe": { "version": "1.0.0", "dev": true }, "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" } }, "uri-js": { @@ -15875,6 +17477,11 @@ } } }, + "urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==" + }, "use-sync-external-store": { "version": "1.2.0", "requires": {} @@ -15925,15 +17532,6 @@ "version": "1.1.2", "dev": true }, - "vm2": { - "version": "3.9.19", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz", - "integrity": "sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==", - "requires": { - "acorn": "^8.7.0", - "acorn-walk": "^8.2.0" - } - }, "void-elements": { "version": "2.0.1", "dev": true @@ -15944,11 +17542,9 @@ "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==" }, "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "peer": true, + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -15986,44 +17582,76 @@ "version": "3.0.1" }, "webpack": { - "version": "5.85.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.85.1.tgz", - "integrity": "sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==", - "dev": true, - "peer": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "requires": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.1", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" } }, + "webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==" + } + } + }, + "webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "requires": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + } + }, "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "peer": true + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" }, "websocket": { "version": "1.0.34", @@ -16103,10 +17731,10 @@ "is-typed-array": "^1.1.10" } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" }, "wrap-ansi": { "version": "7.0.0", @@ -16116,11 +17744,23 @@ "strip-ansi": "^6.0.0" } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2" }, "ws": { - "version": "7.5.9", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "requires": {} }, @@ -16136,12 +17776,6 @@ "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "yargs": { "version": "16.2.0", "dev": true, @@ -16167,6 +17801,11 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } + }, + "zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==" } } } diff --git a/package.json b/package.json index 4cfcb59d..dbfa6c82 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "js-cookie": "^3.0.5", "js-yaml": "^4.1.0", "postcss-focus-visible": "^8.0.2", - "puppeteer": "^20.7.2", + "puppeteer": "^23.4.0", "react": "^18.2.0", "react-dom": "18.2.0", "react-refresh": "^0.14.0", diff --git a/resources/back/config.edn b/resources/back/config.edn index b37afb32..e069c79c 100644 --- a/resources/back/config.edn +++ b/resources/back/config.edn @@ -3,9 +3,10 @@ :default :dev :prod :prod} :release "1.0.0" - :supabase-api-key #or [#env SUPABASE_API_KEY "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InRndmRmeHVyZ3NkZHhvdXhtdWdzIiwicm9sZSI6ImFub24iLCJpYXQiOjE2ODE1MDM0NDMsImV4cCI6MTk5NzA3OTQ0M30.7pq4MM_ZldiWvOk_cnQuxlvUF8eFcxlPDB7jMTNMYb0"] + :supabase-api-key #or [#env SUPABASE_API_KEY "foo"] + :supabase-token #or [#env SUPABASE_TOKEN "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InRndmRmeHVyZ3NkZHhvdXhtdWdzIiwicm9sZSI6ImFub24iLCJpYXQiOjE2ODE1MDM0NDMsImV4cCI6MTk5NzA3OTQ0M30.7pq4MM_ZldiWvOk_cnQuxlvUF8eFcxlPDB7jMTNMYb0"] :supabase-url #or [#env SUPABASE_URL "https://tgvdfxurgsddxouxmugs.supabase.co"] - :supabase-jwt-secret #or [#env SUPABASE_JWT_SECRET "OP6cAnR4J7im0KH2sWeeTlwf4xQOZTuYtoO1mJ3vpON/szjCMpixe4r+9X3HvhZphxV79wl+2amIxo/AkfR28g=="] + :supabase-jwt-secret #or [#env SUPABASE_JWT_SECRET "bar"] :moclojer {:config-path #profile {:default "resources/moclojer.yml" :prod "moclojer.yml"} :join? #profile {:default false diff --git a/resources/front/index.src.html b/resources/front/index.src.html index cf78ba84..01d1c1ed 100644 --- a/resources/front/index.src.html +++ b/resources/front/index.src.html @@ -5,8 +5,8 @@ api mock server - moclojer - - + + diff --git a/resources/front/public/images/favicon-moclojer.png b/resources/front/public/images/favicon-moclojer.png new file mode 100644 index 00000000..b555d30f Binary files /dev/null and b/resources/front/public/images/favicon-moclojer.png differ diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 54675c94..a2263a15 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -1,9 +1,11 @@ ;;shadow clj config {:deps {:aliases [:front-dev]} :nrepl {:port 8777} - :build-defaults {:closure-defines {front.app.auth.supabase/SUPABASE_URL "https://tgvdfxurgsddxouxmugs.supabase.co" - front.app.auth.supabase/SUPABASE_TOKEN "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InRndmRmeHVyZ3NkZHhvdXhtdWdzIiwicm9sZSI6ImFub24iLCJpYXQiOjE2ODE1MDM0NDMsImV4cCI6MTk5NzA3OTQ0M30.7pq4MM_ZldiWvOk_cnQuxlvUF8eFcxlPDB7jMTNMYb0" - front.app.core/SENTRY_DNS "https://27ee051c754588f05b85c61327b675e9@o4506376447131648.ingest.us.sentry.io/4507012897374208"}} + :build-defaults {:closure-defines + {front.app.auth.supabase/SUPABASE_URL "https://tgvdfxurgsddxouxmugs.supabase.co" + front.app.auth.supabase/SUPABASE_TOKEN "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InRndmRmeHVyZ3NkZHhvdXhtdWdzIiwicm9sZSI6ImFub24iLCJpYXQiOjE2ODE1MDM0NDMsImV4cCI6MTk5NzA3OTQ0M30.7pq4MM_ZldiWvOk_cnQuxlvUF8eFcxlPDB7jMTNMYb0" + front.app.core/SENTRY_DNS "https://27ee051c754588f05b85c61327b675e9@o4506376447131648.ingest.us.sentry.io/4507012897374208" + front.app.auth.supabase/SUPABASE_OAUTH_REDIRECT "https://auth.moclojer.com/auth/v1/callback"}} :builds {:app {:target :browser :output-dir "resources/front/public/assets/js" :asset-path "/assets/js" @@ -16,7 +18,9 @@ "./resources/front/public/assets/js/core.js"]) (dev.shadow.hooks/replace-hashed-files "./resources/front/index.src.html" - "./resources/front/public/index.html")] + "./resources/front/public/index.html") + (mockingbird.dev.shadow.hooks/get-target-css + {:path "resources/front/public/assets/css/target.css"})] :dev {:modules {:core {:init-fn dev.core/init}} :compiler-options {:warning-as-errors true} :build-hooks [(dev.shadow.hooks/build-css @@ -41,7 +45,6 @@ :ns-regexp "-test$" :devtools {:http-port 8100 :http-root "resources/front/test"}} - :ci-tests {:target :karma :output-to "resources/front/test/ci.js" :ns-regexp "-test$" diff --git a/src/back/api/logic/mocks.clj b/src/back/api/logic/mocks.clj index 7f7625c3..9718768d 100644 --- a/src/back/api/logic/mocks.clj +++ b/src/back/api/logic/mocks.clj @@ -1,4 +1,5 @@ (ns back.api.logic.mocks + (:refer-clojure :exclude [update]) (:require [camel-snake-kebab.core :as csk] [clojure.java.io :as io] [clojure.string :as str])) diff --git a/src/back/api/ports/http_out.clj b/src/back/api/ports/http_out.clj index d1d87ad8..4e41e1ee 100644 --- a/src/back/api/ports/http_out.clj +++ b/src/back/api/ports/http_out.clj @@ -5,7 +5,7 @@ (defn supabase-get-user! [token config] (-> (s.core/get-user - {:base-url (-> config :config :supabase-url) + {:base-url (-> config :config :supabase-url) :token token :api-key (-> config :config :supabase-api-key)}) (select-keys [:email :id]))) diff --git a/src/back/api/utils.clj b/src/back/api/utils.clj index 6fe5e264..c4e82d0e 100644 --- a/src/back/api/utils.clj +++ b/src/back/api/utils.clj @@ -1,6 +1,6 @@ (ns back.api.utils) -(defn assoc-if +(defn assoc-if "This function returns a map with a respective associated key and value if it is given as argument." [m k v] diff --git a/src/dev/api/dev.clj b/src/dev/api/dev.clj index 7b2eeb57..ac5de27d 100644 --- a/src/dev/api/dev.clj +++ b/src/dev/api/dev.clj @@ -1,10 +1,11 @@ (ns dev.api.dev - (:require [back.api.ports.workers :as p.workers] - [back.api.routes :as routes] - [com.moclojer.components.core :as components] - [com.moclojer.components.mq :as mq] - [com.stuartsierra.component :as component] - [dev.utils :as utils]) + (:require + [back.api.ports.workers :as p.workers] + [back.api.routes :as routes] + [com.moclojer.components.core :as components] + [com.moclojer.components.mq :as mq] + [com.stuartsierra.component :as component] + [dev.utils :as utils]) (:gen-class)) ;; This namespace is used for development purposes only; diff --git a/src/dev/core.cljs b/src/dev/core.cljs index 605c8faa..ca9886e0 100644 --- a/src/dev/core.cljs +++ b/src/dev/core.cljs @@ -12,7 +12,7 @@ (defn ^:export init [] (p/do #_(mock/init!) - (dev-setup) + (dev-setup) (app/init))) (comment diff --git a/src/front/app/auth/effects.cljs b/src/front/app/auth/effects.cljs index 20619eda..b8e8a509 100644 --- a/src/front/app/auth/effects.cljs +++ b/src/front/app/auth/effects.cljs @@ -5,28 +5,39 @@ [promesa.core :as p] [refx.alpha :refer [dispatch reg-fx]])) -(defn send-email [{:keys [body on-success on-failure]}] +(defn send-email [{:keys [body provider on-success on-failure]}] (.log js/console :sending-email) - (-> (supabase/signin-with-email supabase/client (:email body)) (p/then (fn [resp] (let [obj (utils/js->cljs-key resp)] (if (:error obj) (do - (js/console.error :resp-faiure obj) + (js/console.error :resp-failure obj) (dispatch (conj on-failure {:body obj}))) - (do - (js/console.log :resp-success obj) - (dispatch (conj on-success {:body (assoc - (utils/js->cljs-key resp) - :ok true)}))))))) + (when (:email body) + (do + (js/console.log :resp-success obj) + (dispatch (conj on-success {:body (assoc + (utils/js->cljs-key resp) + :ok true)})))))))) (p/catch (fn [resp] (js/console.log :resp resp) (dispatch (conj on-failure {:body (utils/js->cljs-key resp)})))))) +(defn send-oauth [{:keys [provider on-failure]}] + (.log js/console :sending-oauth) + (-> (supabase/signin-with-oauth supabase/client provider) + (p/then (fn [resp] + (let [obj (utils/js->cljs-key resp)] + (if (:error obj) + (do + (js/console.error :resp-failure obj) + (dispatch (conj on-failure {:body obj}))))))))) + (defn auth-effect [fn-req] (fn [req] (fn-req req))) (reg-fx :auth (auth-effect send-email)) +(reg-fx :oauth (auth-effect send-oauth)) diff --git a/src/front/app/auth/events.cljs b/src/front/app/auth/events.cljs index a7b87608..4ad064c5 100644 --- a/src/front/app/auth/events.cljs +++ b/src/front/app/auth/events.cljs @@ -185,6 +185,16 @@ :login-error nil :login-loading? true)})) +(refx/reg-event-fx + :app.auth/send-oauth + (fn + [{db :db} [_ provider]] + {:oauth {:provider (:provider provider) + :on-failure [:app.auth/send-email-error]} + :db (assoc db + :login-error nil + :login-loading? true)})) + (refx/reg-event-db :app.auth/send-email-again (fn diff --git a/src/front/app/auth/supabase.cljs b/src/front/app/auth/supabase.cljs index e5adb013..2e322df3 100644 --- a/src/front/app/auth/supabase.cljs +++ b/src/front/app/auth/supabase.cljs @@ -6,9 +6,11 @@ (goog-define SUPABASE_URL "") (goog-define SUPABASE_TOKEN "") + (when-not (every? not-empty [SUPABASE_URL SUPABASE_TOKEN]) (throw (js/Error. "SUPABASE_URL or SUPABASE_TOKEN weren't defined"))) (goog-define SUPABASE_REDIRECT "http://localhost:8200/#/") +(goog-define SUPABASE_OAUTH_REDIRECT "") (defn create-client "creates a supabase client" @@ -30,6 +32,13 @@ :options {:emailRedirectTo SUPABASE_REDIRECT}})] (.signInWithOtp auth options))) +(defn signin-with-oauth [^js client provider] + (let [auth (.-auth client) + options (clj->js + {:provider (clj->js provider) + :options {:redirect-to SUPABASE_OAUTH_REDIRECT}})] + (.signInWithOAuth auth options))) + (defn sign-out [dispatch-fn-logout] (let [auth (.-auth client)] (-> (.signOut auth) @@ -50,4 +59,5 @@ "token")) (prn :client client-test) - (signin-with-email client "chicao@cljazz.co")) + (signin-with-email client "chicao@cljazz.co") + (signin-with-oauth client "github")) diff --git a/src/front/app/auth/views.cljs b/src/front/app/auth/views.cljs index 5b70f5c1..e664b51e 100644 --- a/src/front/app/auth/views.cljs +++ b/src/front/app/auth/views.cljs @@ -1,12 +1,14 @@ (ns front.app.auth.views (:require + [mockingbird.components.button :refer [button]] + [mockingbird.components.image :refer [image]] + [mockingbird.components.input :refer [input]] [front.app.components.alerts :as alerts] - [front.app.components.button :refer [login-button]] [front.app.components.container :refer [container]] [front.app.components.section :refer [section]] [front.app.components.loading :refer [loading-spinner]] - [front.app.components.labelinput :refer [labeled-input]] [front.app.components.navlink :refer [nav-link]] + [front.app.components.svg :as svg] [front.app.lib :refer [defnc]] [helix.core :refer [$]] [helix.dom :as d] @@ -20,156 +22,173 @@ (defnc login [{:keys [sent? loading? state set-state error error-res]}] - ($ container {} - (d/div {:class-name (str "flex justify-center items-center w-full bg-white rounded-lg shadow lg:flex " - "md:mt-0 lg:max-w-screen-lg 2xl:max:max-w-screen-lg xl:p-0 dark:bg-gray-800")} - (d/div {:class-name "hidden w-2/3 lg:flex"} - (d/img {:src "/images/authentication/login.svg" :class-name "rounded-l-lg"})) - (if sent? - (d/div {:id "login-email-sent" - :class-name "p-6 space-y-8 w-full sm:p-8 lg:p-16 lg:py-0"} - (d/h2 - {:class-name "font-semibold text-gray-900"} - "Sign in to moclojer") + ($ container {} + (d/div {:class (str "flex justify-center items-center w-full bg-white rounded-lg shadow lg:flex " + "md:mt-0 lg:max-w-screen-lg 2xl:max:max-w-screen-lg xl:p-0 dark:bg-gray-800")} + (d/div {:class "hidden w-2/3 lg:flex"} + (d/div {:class " "} + ($ image {:src "/images/authentication/login.svg" + :class "rounded-l-lg "}))) + (if sent? + (d/div {:id "login-email-sent" + :class "p-6 space-y-8 w-full sm:p-8 lg:p-16 lg:py-0"} + (d/h2 + {:class "font-semibold text-gray-900"} + "Sign in to moclojer") + (d/div + {:class "font-semibold text-gray-900"} + "Check your email") + (d/div + (d/div + {:class "ml-3 "} + "If you have an account with us, we’ve sent an email to " + (:email state) + " with a link that you can use to sign in.") + (d/div + {:class "ml-3 "} + "You can also " + ($ nav-link + {:children "try again." + :on-click (fn [e] + (.preventDefault e) + (refx/dispatch [:app.auth/send-email-again])) + :href "#"})))) + ($ section {:class "p-6 space-y-8 w-full sm:p-8 lg:p-16 lg:py-0"} + (d/h2 {:class "text-2xl font-bold text-gray-900 lg:text-3xl dark:text-white"} + "sign in to moclojer") + (d/form {:disabled loading? + :class "mt-8 space-y-8 " + :on-submit (fn [e] + (.preventDefault e) + (if (and + (not (= (:email state) "")) + (= (:provider state) "")) + (refx/dispatch [:app.auth/send-email state]) + (refx/dispatch [:app.auth/send-oauth state])))} (d/div - {:class-name "font-semibold text-gray-900"} - "Check your email") + ($ input + {:for "email" + :label "your email" + :placeholder "name@company.com" + :on-change #(set-state assoc :email (.. % -target -value) :provider "")}) + (d/div {:class "w-8 lg:w-full h-8 lg:h-6 flex flex-row justify-center items-center mt-4 lg:mt-2 lg:justify-start lg:items-start "} + (d/span {:class "hidden text-gray-300 lg:flex justify-start items-start m-0 lg:mr-2 lg:ml-1"} "or") + ($ button {:roundness :full + :class "flex justify-center flex-col items-center w-8 h-8 lg:w-6 lg:h-6" + :on-click #((.preventDefault %) + (set-state assoc :provider "github" :email ""))} + (d/div {:class "flex text-gray-400 "} + ($ svg/github))))) + + (d/div {:class "flex items-start "} + (d/div {:class "flex items-center h-6 lg:h-12"})) + (d/div - (d/div - {:class-name "ml-3 "} - "If you have an account with us, we’ve sent an email to " - (:email state) - " with a link that you can use to sign in.") - (d/div - {:class-name "ml-3 "} - "You can also " - ($ nav-link - {:children "try again." - :on-click (fn [e] - (.preventDefault e) - (refx/dispatch [:app.auth/send-email-again])) - :href "#"})))) - ($ section {:class-name "p-6 space-y-8 w-full sm:p-8 lg:p-16 lg:py-0"} - (d/h2 {:class-name "text-2xl font-bold text-gray-900 lg:text-3xl dark:text-white"} - "sign in to moclojer") - (d/form {:disabled loading? - :on-submit (fn [e] - (.preventDefault e) - (when (:email state) - (refx/dispatch [:app.auth/send-email state]))) - :class-name "mt-8 space-y-6"} - ($ labeled-input - {:for "email" - :name "email" - :label "your email" - :placeholder "name@company.com" - :input-template "login" - :label-template "default" - :on-change #(set-state assoc :email (.. % -target -value))}) - (d/div {:class-name "flex items-start"} - (d/div {:class-name "flex items-center h-5"})) - ($ login-button - {:type "submit" - :disabled loading? - :base "solid-blue" - :variant "pink"} - (if loading? - (d/span {:class-name "inline-flex"} - ($ loading-spinner {}) - "loading...") - (d/span "login to your account"))) - (d/div {:class-name "text-sm font-medium text-gray-500 dark:text-gray-400"} - (if error - ($ alerts/error - {:id "login-error" - :error "Error... try it again." - :description (:message error-res)}) - "if you don't have an account, it is created automatically")))))))) + ($ button {:class (str (if loading? + "bg-gray-700 " + "bg-mockingbird-main ") + "hover:bg-mockingbird-400 ") + :type :submit + :theme :mockingbird + :size :full + :label "login to your account"} + (if loading? + (d/span {:class "inline-flex"} + ($ loading-spinner {}) + "loading...") + (d/span "login to your account")))) + + (d/div {:class "text-sm font-medium text-gray-500 dark:text-gray-400"} + (when error-res + ($ alerts/error + {:id "login-error" + :error "Error... try it again." + :description (:message error-res)} + "if you don't have an account, it is created automatically"))))))))) (defnc first-login [{:keys [sent? loading?]}] (let [username (refx/use-sub [:app.auth/username-to-save]) available? (refx/use-sub [:app.auth/is-username-available?])] - (d/div {:class-name "flex flex-col justify-center items-center px-6 pt-8 mx-auto md:h-screen pt:mt-0 dark:bg-gray-900"} - (d/div {:class-name (str "flex justify-center items-center w-full bg-white rounded-lg shadow lg:flex " - "md:mt-0 lg:max-w-screen-lg 2xl:max:max-w-screen-lg xl:p-0 dark:bg-gray-800")} - (d/div {:class-name "hidden w-2/3 lg:flex"} - (d/img {:src "/images/authentication/login.svg" :class-name "rounded-l-lg"})) + (d/div {:class "flex flex-col justify-center items-center px-6 pt-8 mx-auto md:h-screen pt:mt-0 dark:bg-gray-900"} + (d/div {:class (str "flex justify-center items-center w-full bg-white rounded-lg shadow lg:flex " + "md:mt-0 lg:max-w-screen-lg 2xl:max:max-w-screen-lg xl:p-0 dark:bg-gray-800")} + (d/div {:class "hidden w-2/3 lg:flex"} + ($ image {:src "/images/authentication/login.svg" + :class "rounded-l-lg "})) (if sent? (d/div ($ loading-spinner) "loading ...") - (d/div {:class-name "p-6 space-y-8 w-full sm:p-8 lg:p-16 lg:py-0"} + (d/div {:class "p-6 space-y-8 w-full sm:p-8 lg:p-16 lg:py-0"} (if (and loading? (nil? username)) (d/div ($ loading-spinner) "loading ...") (d/div - (d/h2 {:class-name "text-2xl font-bold text-gray-900 lg:text-3xl dark:text-white"} - "welcome, enter your username.") - (d/form {:disabled loading? - :on-submit (fn [e] - (.preventDefault e) - (when (and (not-empty username) available?) - (refx/dispatch [:app.auth/save-username username]))) - :class-name "mt-8 space-y-6"} - (d/div - ($ labeled-input - {:for "username" - :name "username" - :label "your username" - :placeholder "username" - :input-template "login" - :label-template "default" - :on-change (fn [e] - (.preventDefault e) - (refx/dispatch-sync [:app.auth/username-available? - (.. e -target -value)])) - })) - - (d/div {:class-name "text-sm font-medium text-gray-500 dark:text-gray-400"} - (d/b {:class-name "text-gray-900"} "*..") - (d/span {:class-name "text-gray-500"} "moclojer.com")) - - ($ login-button - {:class-name (when available? " cursor-not-allowed") - :type "submit" - :disabled (or loading? (not available?)) - :base "solid-blue" - :variant (if available? - "pink" - "grey")} - (if loading? - (d/span {:class-name "inline-flex"} - ($ loading-spinner {}) - "loading...") - (d/span "Save")))))))))))) + (d/h2 {:class "text-2xl font-bold text-gray-900 lg:text-3xl dark:text-white"} + "welcome, enter your username.") + (d/form {:disabled loading? + :on-submit (fn [e] + (.preventDefault e) + (when (and (not-empty username) available?) + (refx/dispatch [:app.auth/save-username username]))) + :class "mt-8 space-y-6 "} + (d/div + ($ input + {:for "username" + :name "username" + :label "your username" + :placeholder "username" + :input-template "login" + :label-template "default" + :on-change (fn [e] + (.preventDefault e) + (refx/dispatch-sync [:app.auth/username-available? + (.. e -target -value)]))})) + (d/div {:class "text-sm font-medium text-gray-500 dark:text-gray-400"} + (d/b {:class "text-gray-900"} "*..") + (d/span {:class "text-gray-500"} "moclojer.com")) + ($ button {:class (str (if loading? + "bg-gray-700 " + "bg-mockingbird-main ") + "hover:bg-mockingbird-400 " + (when (not available?) " cursor-not-allowed ")) + :type :submit + :theme :mockingbird + :size :full + :disabled (if (or loading? (not available?)) + true + false)} + (if loading? (d/span {:class "inline-flex"} + ($ loading-spinner {}) "loading...") + (d/span "Save")))))))))))) - (defnc first-login-view [] - (let [loading? (refx/use-sub [:app.auth/login-loading]) - sent? (refx/use-sub [:app.auth/username-sent]) - [error error-res] (refx/use-sub [:app.auth/login-error])] - (hooks/use-effect - [sent?] - (when sent? - (rfe/push-state :app.core/dashboard))) +(defnc first-login-view [] + (let [loading? (refx/use-sub [:app.auth/login-loading]) + sent? (refx/use-sub [:app.auth/username-sent]) + [error error-res] (refx/use-sub [:app.auth/login-error])] + (hooks/use-effect + [sent?] + (when sent? + (rfe/push-state :app.core/dashboard))) - (d/div - ($ section - ($ first-login {:sent? sent? - :loading? loading? - :error error - :error-res error-res}))))) + (d/div + ($ section + ($ first-login {:sent? sent? + :loading? loading? + :error error + :error-res error-res}))))) - (defnc login-view [] - (let [loading? (refx/use-sub [:app.auth/login-loading]) - [error error-res] (refx/use-sub [:app.auth/login-error]) - email-sent? (refx/use-sub [:app.auth/email-sent]) - [state set-state] (hooks/use-state {:email ""})] - ($ section - ($ login {:sent? email-sent? - :loading? loading? - :error error - :error-res error-res - :state state - :set-state set-state})))) +(defnc login-view [] + (let [loading? (refx/use-sub [:app.auth/login-loading]) + [error error-res] (refx/use-sub [:app.auth/login-error]) + email-sent? (refx/use-sub [:app.auth/email-sent]) + [state set-state] (hooks/use-state {:email "" :provider ""})] + ($ section + ($ login {:sent? email-sent? + :loading? loading? + :error error + :error-res error-res + :state state + :set-state set-state})))) diff --git a/src/front/app/components/alerts.cljs b/src/front/app/components/alerts.cljs index e7c741cc..6b64c7e4 100644 --- a/src/front/app/components/alerts.cljs +++ b/src/front/app/components/alerts.cljs @@ -13,11 +13,11 @@ (let [{:keys [card tittle desc]} error-styles] (d/div {:id id - :class-name card} + :class card} (d/strong - {:class-name tittle} + {:class tittle} error) (when description (d/p - {:class-name desc} + {:class desc} (str description)))))) diff --git a/src/front/app/components/aside.cljs b/src/front/app/components/aside.cljs index f44173a8..6d962d9a 100644 --- a/src/front/app/components/aside.cljs +++ b/src/front/app/components/aside.cljs @@ -1,5 +1,5 @@ (ns front.app.components.aside - (:require + (:require [front.app.auth.supabase :as supabase] [front.app.components.button :refer [new-mock-btn toggle-aside-btn home-btn]] [front.app.components.svg :as svg] @@ -18,105 +18,105 @@ mocks-raw (refx/use-sub [:app.dashboard/mocks-raw])] (hooks/use-effect - [mocks-raw] - (when (nil? mocks-raw) - (refx/dispatch-sync [:app.dashboard/get-mocks current-user]))) + [mocks-raw] + (when (nil? mocks-raw) + (refx/dispatch-sync [:app.dashboard/get-mocks current-user]))) (d/li - (d/div - {:class "flex flex-row"} - (d/button - {:on-click #(rfe/push-state :app.core/mocks) - :class-name (str "flex items-center p-2 w-full text-base font-normal text-gray-900 rounded-lg " - "transition duration-75 group hover:bg-gray-100 dark:text-gray-200 dark:hover:bg-gray-700 ") - :aria-controls "dropdown-mocks" - :aria-expanded aside-open? - :data-collapse-toggle "dropdown-mocks"} - ($ svg/mock-list-box) - (d/span {:class-name (str "flex ml-3 text-left whitespace-nowrap " - (when-not aside-open? - "lg:absolute lg:hidden"))} "Mocks")) - (d/button - {:class (str "px-2 rounded-lg fill-gray-200 bg-transparent hover:bg-gray-200 hover:fill-gray-400 " - (if aside-open? "block " "hidden ")) - :on-click #(refx/dispatch-sync [:app.dashboard/toggle-menu])} - ($ svg/arrow {:direction (if menu-open? :up :down)}))) - (d/ul - {:id "dropdown-mocks" - :class-name (str "py-2 space-y-2" - (when (or (not menu-open?) (not aside-open?)) " hidden"))} - (if (empty? mocks-raw) - (d/div {:class "w-full pl-11 space-y-2"} - (d/p {:class "text-gray-700 text-sm"} "You currently don't have any mocks. Create one!") - ($ new-mock-btn)) - (for [{:keys [mock-type wildcard id] - :or {mock-type :personal}} mocks-raw] - (d/li - {:key wildcard} - (d/button {:on-click #(rfe/push-state :app.core/mocks-view {:mock-id id}) - :class-name (str "pl-11 w-full flex items-center overflow-hidden ellipsis p-2 " - "text-base font-normal text-gray-900 rounded-lg transition " - "duration-75 group hover:bg-gray-100 dark:text-gray-200 " - "dark:hover:bg-gray-700")} - (if (= mock-type :personal) - ($ svg/personal-mock) - ($ svg/org-mock)) - (d/span {:class-name "flex-1 ml-3 text-left truncate"} wildcard))))))))) + (d/div + {:class "flex flex-row"} + (d/button + {:on-click #(rfe/push-state :app.core/mocks) + :class (str "flex items-center p-2 w-full text-base font-normal text-gray-900 rounded-lg " + "transition duration-75 group hover:bg-gray-100 dark:text-gray-200 dark:hover:bg-gray-700 ") + :aria-controls "dropdown-mocks" + :aria-expanded aside-open? + :data-collapse-toggle "dropdown-mocks"} + ($ svg/mock-list-box) + (d/span {:class (str "flex ml-3 text-left whitespace-nowrap " + (when-not aside-open? + "lg:absolute lg:hidden"))} "Mocks")) + (d/button + {:class (str "px-2 rounded-lg fill-gray-200 bg-transparent hover:bg-gray-200 hover:fill-gray-400 " + (if aside-open? "block " "hidden ")) + :on-click #(refx/dispatch-sync [:app.dashboard/toggle-menu])} + ($ svg/arrow {:direction (if menu-open? :up :down)}))) + (d/ul + {:id "dropdown-mocks" + :class (str "py-2 space-y-2" + (when (or (not menu-open?) (not aside-open?)) " hidden"))} + (if (empty? mocks-raw) + (d/div {:class "w-full pl-11 space-y-2"} + (d/p {:class "text-gray-700 text-sm"} "You currently don't have any mocks. Create one!") + ($ new-mock-btn)) + (for [{:keys [mock-type wildcard id] + :or {mock-type :personal}} mocks-raw] + (d/li + {:key wildcard} + (d/button {:on-click #(rfe/push-state :app.core/mocks-view {:mock-id id}) + :class (str "pl-11 w-full flex items-center overflow-hidden ellipsis p-2 " + "text-base font-normal text-gray-900 rounded-lg transition " + "duration-75 group hover:bg-gray-100 dark:text-gray-200 " + "dark:hover:bg-gray-700")} + (if (= mock-type :personal) + ($ svg/personal-mock) + ($ svg/org-mock)) + (d/span {:class "flex-1 ml-3 text-left truncate"} wildcard))))))))) (defnc aside [] (let [aside (refx/use-sub [:app.dashboard/aside]) aside-open? (:open? aside)] - (d/div - {:class-name "overflow-hidden bg-gray-50 dark:bg-gray-900 pt-16"} - (d/aside - {:id "sidebar" - :class (str "fixed flex-col top-0 left-0 z-20 flex-shrink-0 w-full h-full duration-75 transition-width " - (if aside-open? "flex lg:w-64" "hidden lg:flex lg:w-16")) - :aria-label "Sidebar"} + (d/div + {:class "overflow-hidden bg-gray-50 dark:bg-gray-900 pt-16"} + (d/aside + {:id "sidebar" + :class (str "fixed flex-col top-0 left-0 z-20 flex-shrink-0 w-full h-full duration-75 transition-width " + (if aside-open? "flex lg:w-64" "hidden lg:flex lg:w-16")) + :aria-label "Sidebar"} - (d/div - {:class-name (str "flex relative flex-col flex-1 pt-8 min-h-0 bg-white border-r " - "border-gray-200 dark:bg-gray-800 dark:border-gray-700")} - (d/div {:class-name "flex overflow-y-auto flex-col flex-1 pt-5 pb-4"} - (d/div {:class-name "flex-1 px-3 space-y-1 bg-white divide-y divide-gray-200 dark:bg-gray-800 dark:divide-gray-700"} - (d/ul {:class-name "pb-2 space-y-2 pt-4"} - (d/li - ($ toggle-aside-btn {:aside-open? aside-open?})) - (d/li - ($ home-btn {:aside-open? aside-open?})) - ($ mock aside)) - (d/div {:class-name "pt-2 space-y-2"} - (d/a {:href "https://docs.moclojer.com/" - :target "_blank" - :class-name (str "flex items-center p-2 text-base font-normal text-gray-900 rounded-lg transition" - " duration-75 hover:bg-gray-100 group dark:text-gray-200 dark:hover:bg-gray-700")} - ($ svg/docs) - (d/span {:class-name - (str "ml-3 " - (when-not aside-open? - "lg:hidden lg:absolute"))} - "Docs")) - (d/a {:href "https://discord.gg/pbhBzKjhTb" - :target "_blank" - :class-name "flex items-center p-2 text-base font-normal text-gray-900 rounded-lg transition duration-75 hover:bg-gray-100 group dark:text-gray-200 dark:hover:bg-gray-700"} - ($ svg/help) - (d/span {:class-name - (str "ml-3 " - (when-not aside-open? - "lg:hidden lg:absolute"))} - "Help"))))) - (d/div {:class-name (str "absolute bottom-0 left-0 justify-center p-4 space-x-4 w-full lg:flex" - (when aside-open? - " flex-col space-y-4 p-4"))} - (d/button - {:on-click (fn [e] - (.preventDefault e) - (supabase/sign-out - #(refx/dispatch-sync [:app.auth/logout %]))) - :class-name (str "flex items-center p-2 text-base font-normal text-gray-900 rounded-lg transition" - " duration-75 hover:bg-gray-100 group dark:text-gray-200 dark:hover:bg-gray-700")} - ($ svg/help) - (when aside-open? - (d/span {:class-name "ml-3"} - "Logout"))))))))) + (d/div + {:class (str "flex relative flex-col flex-1 pt-8 min-h-0 bg-white border-r " + "border-gray-200 dark:bg-gray-800 dark:border-gray-700")} + (d/div {:class "flex overflow-y-auto flex-col flex-1 pt-5 pb-4"} + (d/div {:class "flex-1 px-3 space-y-1 bg-white divide-y divide-gray-200 dark:bg-gray-800 dark:divide-gray-700"} + (d/ul {:class "pb-2 space-y-2 pt-4"} + (d/li + ($ toggle-aside-btn {:aside-open? aside-open?})) + (d/li + ($ home-btn {:aside-open? aside-open?})) + ($ mock aside)) + (d/div {:class "pt-2 space-y-2"} + (d/a {:href "https://docs.moclojer.com/" + :target "_blank" + :class (str "flex items-center p-2 text-base font-normal text-gray-900 rounded-lg transition" + " duration-75 hover:bg-gray-100 group dark:text-gray-200 dark:hover:bg-gray-700")} + ($ svg/docs) + (d/span {:class + (str "ml-3 " + (when-not aside-open? + "lg:hidden lg:absolute"))} + "Docs")) + (d/a {:href "https://discord.gg/pbhBzKjhTb" + :target "_blank" + :class "flex items-center p-2 text-base font-normal text-gray-900 rounded-lg transition duration-75 hover:bg-gray-100 group dark:text-gray-200 dark:hover:bg-gray-700"} + ($ svg/help) + (d/span {:class + (str "ml-3 " + (when-not aside-open? + "lg:hidden lg:absolute"))} + "Help"))))) + (d/div {:class (str "absolute bottom-0 left-0 justify-center p-4 space-x-4 w-full lg:flex" + (when aside-open? + " flex-col space-y-4 p-4"))} + (d/button + {:on-click (fn [e] + (.preventDefault e) + (supabase/sign-out + #(refx/dispatch-sync [:app.auth/logout %]))) + :class (str "flex items-center p-2 text-base font-normal text-gray-900 rounded-lg transition" + " duration-75 hover:bg-gray-100 group dark:text-gray-200 dark:hover:bg-gray-700")} + ($ svg/logout) + (when aside-open? + (d/span {:class "ml-3"} + "Logout"))))))))) diff --git a/src/front/app/components/button.cljs b/src/front/app/components/button.cljs index e6a2dd4e..bc6c8c77 100644 --- a/src/front/app/components/button.cljs +++ b/src/front/app/components/button.cljs @@ -1,5 +1,6 @@ (ns front.app.components.button - (:require + (:require + [mockingbird.components.button :refer [button]] [front.app.lib :refer [defnc]] [helix.dom :as d] [helix.core :refer [$]] @@ -7,101 +8,42 @@ [front.app.components.svg :as svg] [reitit.frontend.easy :as rfe])) -; #TODO remove solid, outline keeping here because it is used in other pages - -; deprecated solid -old layout -; deprecated outline -old layout - -(def base-styles - {:solid "group inline-flex items-center justify-center rounded-full py-2 px-4 text-sm font-semibold focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 " - :solid-blue "py-3 px-5 w-full text-base font-medium text-center text-white rounded-lg bg-primary-700 focus:ring-4 focus:ring-primary-300 dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800 " - :outline "group inline-flex ring-1 items-center justify-center rounded-full py-2 px-4 text-sm focus:outline-none "}) - -(def variant-styles - {:solid {:slate "bg-slate-900 text-white hover:bg-slate-700 hover:text-slate-100 active:bg-slate-800 active:text-slate-300 focus-visible:outline-slate-900 ", - :blue "bg-blue-600 text-white hover:text-slate-100 hover:bg-blue-500 active:bg-blue-800 active:text-blue-100 focus-visible:outline-blue-600 ", - :white "bg-white text-slate-900 hover:bg-blue-50 active:bg-blue-200 active:text-slate-600 focus-visible:outline-white "}, - :solid-blue {:pink " login-button" - :grey " login-button-block"} - :outline {:slate "ring-slate-200 text-slate-700 hover:text-slate-900 hover:ring-slate-300 active:bg-slate-100 active:text-slate-600 focus-visible:outline-blue-600 focus-visible:ring-slate-300 ", - :pink " login-button" - :grey " login-button-block" - :white "ring-slate-700 text-white hover:ring-slate-500 active:ring-slate-700 active:text-slate-400 focus-visible:outline-white "}}) - -;; TODO -(def aside-styles {}) - - -(defnc button - [{:keys [children class-name on-click type disabled template] - :or {class-name "" on-click "" base "solid" variant "blue" template "default" type "button"}}] - (d/button - {:class-name class-name - :on-click on-click - :type type - :disabled disabled} - children)) - -(defn get-login-style - [class-name base variant] - (let [base-style (keyword base) - variant-style (keyword variant)] - (str - (get base-styles base-style) - (get-in variant-styles [base-style variant-style]) - class-name))) - -(defnc login-button - [{:keys [children base variant class-name type disabled] - :or {children "" base "solid" variant "blue" type "submit" disabled false}}] - (let [class-name (get-login-style class-name base variant)] - ($ button - {:class-name class-name - :type type - :disabled disabled} - children))) - - (defnc new-mock-btn [] - ($ button {:class-name "px-3 py-2 bg-pink-600 rounded-lg flex flex-row space-x-2 items-center btn-add" + ($ button {:class "px-3 py-2 bg-pink-600 rounded-lg flex flex-row space-x-2 items-center btn-add" :on-click #(refx/dispatch [:app.dashboard/toggle-mock-modal])} - ($ svg/plus-sign) - (d/p {:class-name "text-white text-xs font-bold"} - "new mock") - ($ svg/box))) + ($ svg/plus-sign) + (d/p {:class "text-white text-xs font-bold"} + "new mock") + ($ svg/box))) - -(defnc toggle-aside-btn +(defnc toggle-aside-btn [{:keys [aside-open?] - :or {aside-open? false}}] + :or {aside-open? false}}] (d/button - {:id "aside-toggle" - :class (str (if aside-open? - "lg:absolute -right-4 " - "block w-full ") - "p-1 mt-2 flex flex-row justify-center z-50 bg-gray-300 rounded-lg " - "opacity-30 hover:opacity-100 transition-all lg:flex hidden") - :on-click #(refx/dispatch [:app.dashboard/toggle-aside! (not aside-open?)])} - ($ svg/arrow - {:direction (if aside-open? - :left - :right) - :class "w-3 h-3"}))) - -(defnc home-btn + {:id "aside-toggle" + :class (str (if aside-open? + "lg:absolute -right-4 " + "block w-full ") + "p-1 mt-2 flex flex-row justify-center z-50 bg-gray-300 rounded-lg " + "opacity-30 hover:opacity-100 transition-all lg:flex hidden") + :on-click #(refx/dispatch [:app.dashboard/toggle-aside! (not aside-open?)])} + ($ svg/arrow + {:direction (if aside-open? + :left + :right) + :class "w-3 h-3"}))) + +(defnc home-btn [{:keys [aside-open?] - :or {aside-open? false}}] - (d/button - {:class-name (str "flex items-center p-2 text-base font-normal text-gray-900 rounded-lg " - "transtion duration-75 hover:bg-gray-100 group dark:text-gray-200 dark:hover:bg-gray-700 " - (if aside-open? - "w-[calc(100%-8px)]" - "w-full" )) - :on-click #(rfe/push-state :app.core/dashboard)} - ($ svg/house) - (d/span {:class-name (str "ml-3 " - (when-not aside-open? - "lg:hidden lg:absolute"))} "Home"))) - - - + :or {aside-open? false}}] + (d/button + {:class (str "flex items-center p-2 text-base font-normal text-gray-900 rounded-lg " + "transtion duration-75 hover:bg-gray-100 group dark:text-gray-200 dark:hover:bg-gray-700 " + (if aside-open? + "w-[calc(100%-8px)]" + "w-full")) + :on-click #(rfe/push-state :app.core/dashboard)} + ($ svg/house) + (d/span {:class (str "ml-3 " + (when-not aside-open? + "lg:hidden lg:absolute"))} "Home"))) diff --git a/src/front/app/components/container.cljs b/src/front/app/components/container.cljs index 8dc52fea..c7c427af 100644 --- a/src/front/app/components/container.cljs +++ b/src/front/app/components/container.cljs @@ -5,32 +5,29 @@ [helix.dom :as d] [refx.alpha :as refx])) -(def login-styles - {:default "flex flex-col justify-center items-center px-6 pt-8 mx-auto md:h-screen pt:mt-0 dark:bg-gray-900" - :none ""}) - - +(def login-styles + {:default "flex flex-col justify-center items-center px-6 pt-8 mx-auto md:h-screen pt:mt-0 dark:bg-gray-900" + :none ""}) (defnc aside-container [{:keys [children] - :or {is-sidebar-toogle? false}}] + :or {is-sidebar-toogle? false}}] (let [aside (refx/use-sub [:app.dashboard/aside]) aside-open? (:open? aside)] (d/div - {:class-name (str "overflow-y-auto relative h-full bg-gray-50 " - (if aside-open? - "lg:ml-64" - "lg:ml-16") - " dark:bg-gray-900") + {:class (str "overflow-y-auto relative h-full bg-gray-50 " + (if aside-open? + "lg:ml-64" + "lg:ml-16") + " dark:bg-gray-900") :id "main-content"} children))) - (defn get-login-style [{:keys [template children] - :or {template :default}}] + :or {template :default}}] (let [template (keyword template)] (str (-> template login-styles) children))) -(defnc container [{:keys [children class-name]}] - (d/div {:class-name (or class-name (get login-styles :default))} - children)) +(defnc container [{:keys [children class]}] + (d/div {:class (or class (get login-styles :default))} + children)) diff --git a/src/front/app/components/footer.cljs b/src/front/app/components/footer.cljs deleted file mode 100644 index f8520ac7..00000000 --- a/src/front/app/components/footer.cljs +++ /dev/null @@ -1,14 +0,0 @@ -(ns front.app.components.footer - (:require [cljs.pprint :as pprint] - [front.app.components.container :refer [aside-container]] - [front.app.lib :refer [defnc]] - [helix.core :refer [$]] - [helix.dom :as d] - [refx.alpha :as refx])) - -(defnc footer [] - (let [db (refx/use-sub [:app.database/db])] - (d/footer {:class-name "bg-slate-50"} - ($ aside-container - (d/pre (with-out-str - (pprint/pprint db))))))) diff --git a/src/front/app/components/labelinput.cljs b/src/front/app/components/labelinput.cljs deleted file mode 100644 index 854ff993..00000000 --- a/src/front/app/components/labelinput.cljs +++ /dev/null @@ -1,31 +0,0 @@ -(ns front.app.components.labelinput - (:require - [helix.dom :as d] - [helix.core :refer [defnc]])) - -(def input-styles - {:login (str "bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-primary-500 focus:border-primary-500 " - "block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white " - "dark:focus:ring-primary-500 dark:focus:border-primary-500")}) - -(def label-styles - {:login - {:default "block mb-2 text-sm font-medium text-gray-900 dark:text-white"}}) - -(defnc labeled-input [{:keys [input-template label-template label for placeholder name state on-change children]}] - (let [input-classes (get input-styles (keyword (or input-template :login)) "") - label-classes (get-in label-styles [(keyword (or input-template :login)) (keyword (or label-template :default))])] - (d/div - (d/label - {:class label-classes - :for for} - label) - (d/input - {:class input-classes - :for for - :placeholder placeholder - :name name - :value (:email state) - :required true - :on-change on-change}) - children))) diff --git a/src/front/app/components/loading.cljs b/src/front/app/components/loading.cljs index a4a5b989..f4079fb5 100644 --- a/src/front/app/components/loading.cljs +++ b/src/front/app/components/loading.cljs @@ -1,15 +1,15 @@ -(ns front.app.components.loading +(ns front.app.components.loading (:require [front.app.lib :refer [defnc]] [helix.dom :as d])) (defnc loading-spinner [] (d/svg - {:className "animate-spin -ml-1 mr-3 h-5 w-5 text-white" + {:class "animate-spin -ml-1 mr-3 h-5 w-5 text-white" :xmlns "http://www.w3.org/2000/svg" :fill "none" :viewBox "0 0 24 24"} (d/circle - {:className "opacity-25" + {:class "opacity-25" :cx "12" :cy "12" :r "10" :stroke "currentColor" :stroke-width "4"}) (d/path - {:className "opacity-75" + {:class "opacity-75" :fill "currentColor" :d "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"}))) diff --git a/src/front/app/components/messages.cljs b/src/front/app/components/messages.cljs index 9a1fd9a6..e2d58bae 100644 --- a/src/front/app/components/messages.cljs +++ b/src/front/app/components/messages.cljs @@ -1,11 +1,11 @@ (ns front.app.components.messages (:require - [cljs.pprint :as pprint] - [clojure.string :as str] - [front.app.lib :refer [defnc]] - [front.app.components.profile :refer [pfp-img]] - [helix.dom :as d] - [helix.core :refer [$]])) + [cljs.pprint :as pprint] + [clojure.string :as str] + [front.app.lib :refer [defnc]] + [mockingbird.components.pfp :refer [pfp]] + [helix.dom :as d] + [helix.core :refer [$]])) (defn gen-today-date [] (let [date (js/Date.) @@ -19,57 +19,60 @@ [{:keys [message index]}] (let [msg-seq (seq message)] (d/div - (d/p {:class-name "text-base font-normal text-gray-500 dark:text-gray-400"} - (nth msg-seq index)) - (when (< index (dec (count message))) - (do - (d/br) - ($ text {:message message :index (inc index)})))))) + (d/p {:class "text-base font-normal text-gray-500 dark:text-gray-400"} + (nth msg-seq index)) + (when (< index (dec (count message))) + (do + (d/br) + ($ text {:message message :index (inc index)})))))) -(defnc default-message +(defnc default-message [{:keys [children] :as props}] (d/section - (d/div {:class-name (str "p-4 bg-white block sm:flex items-center justify-between border-b" - "border-gray-200 lg:mt-1.5 dark:bg-gray-800 dark:border-gray-700")} - (d/div {:class-name "flex items-center divide-x divide-gray-100 dark:divide-gray-700"} - (d/div {:class-name "pl-3 text-sm font-medium text-gray-500"} - (gen-today-date)))) + (d/div {:class (str "p-4 bg-white block sm:flex items-center justify-between border-b" + "border-gray-200 lg:mt-1.5 dark:bg-gray-800 dark:border-gray-700")} + (d/div {:class "flex items-center divide-x divide-gray-100 dark:divide-gray-700"} + (d/div {:class "pl-3 text-sm font-medium text-gray-500"} + (gen-today-date)))) - (d/div {:class-name "p-5"} - (d/div {:class-name "flex items-center mb-4"} - (d/div {:class-name "flex-shrink-0"} - ($ pfp-img - {:image-style (props :image-style) - :pfp-url (props :image) - :pfp-loading? false})) - (d/div {:class-name "ml-4"} - (d/p (props :author)) - (d/div {:class-name "mltext-sm text-gray-500 text-normal dark:text-gray-400"} - (d/i (props :email))))) - (d/h1 {:class-name "mb-4 text-2xl font-bold text-gray-900 dark:text-white"} - (props :title)) - (d/div {:class-name "space-y-1"} - ($ text {:message (seq (props :message)) :index 0}) - (d/p {:class-name "p-2 text-base font-normal text-gray-500 dark:text-gray-400"} - "Best Regards," - (d/br) - (d/i "Avelino Founder Team")))))) + (d/div {:class "p-5"} + (d/div {:class "flex items-center mb-4"} + (d/div {:class "flex-shrink-0"} + ($ pfp + {:style (props :image-style) + :pfp-url (if (= true (props :pfp-loading?)) + "/images/default-pfp.png" + (props :image)) -(defnc blogpost-message + :pfp-loading? false})) + (d/div {:class "ml-4"} + (d/p (props :author)) + (d/div {:class "mltext-sm text-gray-500 text-normal dark:text-gray-400"} + (d/i (props :email))))) + (d/h1 {:class "mb-4 text-2xl font-bold text-gray-900 dark:text-white"} + (props :title)) + (d/div {:class "space-y-1"} + ($ text {:message (seq (props :message)) :index 0}) + (d/p {:class "p-2 text-base font-normal text-gray-500 dark:text-gray-400"} + "Best Regards," + (d/br) + (d/i "Avelino Founder Team")))))) + +(defnc blogpost-message [{:keys [children] :as props}] - (d/div {:class-name (str "p-4 bg-gray-200 block sm:flex items-center justify-left border-b mr-8 py-8" - "border-gray-200 lg:mt-1.5 dark:bg-gray-800 dark:border-gray-700")} - (d/div {:class-name "flex items-center mb-4"} - (d/div {:class-name "flex-shrink-0"} - ($ pfp-img - {:image-style (props :image-style) - :pfp-loading? false + (d/div {:class (str "p-4 bg-gray-200 block sm:flex items-center justify-left border-b mr-8 py-8" + "border-gray-200 lg:mt-1.5 dark:bg-gray-800 dark:border-gray-700")} + (d/div {:class "flex items-center mb-4"} + (d/div {:class "flex-shrink-0"} + ($ pfp-img + {:style (props :image-style) + :pfp-loading? false :pfp-url (props :image)})) - (d/div {:class-name "ml-4"} - (d/div {:class-name "mltext-sm text-gray-500 text-normal dark:text-gray-400"} + (d/div {:class "ml-4"} + (d/div {:class "mltext-sm text-gray-500 text-normal dark:text-gray-400"} (d/p (props :author)) (d/i (props :email))))) - (d/div {:class-name "ml-4"} - (d/a {:class-name "text-blue-500 " :href (props :link) :target "_blank"} (props :link))))) + (d/div {:class "ml-4"} + (d/a {:class "text-blue-500 " :href (props :link) :target "_blank"} (props :link))))) diff --git a/src/front/app/components/navbar.cljs b/src/front/app/components/navbar.cljs index 91a9206c..4b8afebb 100644 --- a/src/front/app/components/navbar.cljs +++ b/src/front/app/components/navbar.cljs @@ -1,13 +1,14 @@ (ns front.app.components.navbar - (:require [front.app.components.button :refer [new-mock-btn]] - [front.app.components.profile :refer [user-profile]] - [front.app.components.svg :as svg] - [front.app.lib :refer [defnc]] - [reitit.frontend.easy :as rfe] - [helix.core :refer [$]] - [helix.dom :as d] - [refx.alpha :as refx])) - + (:require + [mockingbird.components.image :refer [image]] + [front.app.components.button :refer [new-mock-btn]] + [front.app.components.profile :refer [user-profile]] + [front.app.components.svg :as svg] + [front.app.lib :refer [defnc]] + [reitit.frontend.easy :as rfe] + [helix.core :refer [$]] + [helix.dom :as d] + [refx.alpha :as refx])) (defnc nav-bar [{:keys [user-data]}] (let [aside (refx/use-sub [:app.dashboard/aside]) @@ -24,15 +25,15 @@ :aria-controls "sidebar" :on-click #(refx/dispatch [:app.dashboard/toggle-aside! (not aside-open?)]) :class-name (str "p-2 mr-3 text-gray-600 rounded cursor-pointer " - "hover:text-gray-900 hover:bg-gray-100 dark:text-gray-400 " - "dark:hover:text-white dark:hover:bg-gray-700 lg:hidden")} + "hover:text-gray-900 hover:bg-gray-100 dark:text-gray-400 " + "dark:hover:text-white dark:hover:bg-gray-700 lg:hidden")} (if aside-open? ($ svg/hamburger-menu-close) ($ svg/hamburger-menu))) (d/button {:class-name "flex" :on-click #(rfe/push-state :app.core/dashboard)} - (d/img {:src "/images/logo.svg" - :class-name "mr-3 h-9"}))) + ($ image {:src "/images/logo.svg" + :class "w-[calc(64%)] mr-3 h-9"}))) (d/div {:class-name "flex items-center lg:gap-3"} ($ new-mock-btn) ($ user-profile {:user-data user-data}))))))) diff --git a/src/front/app/components/navlink.cljs b/src/front/app/components/navlink.cljs index ce94d912..30f53b5f 100644 --- a/src/front/app/components/navlink.cljs +++ b/src/front/app/components/navlink.cljs @@ -1,4 +1,4 @@ -(ns front.app.components.navlink +(ns front.app.components.navlink (:require [front.app.lib :refer [defnc]] [helix.dom :as d])) @@ -7,5 +7,5 @@ (d/a {:href href :on-click on-click - :className " inline-block rounded-lg py-1 px-2 text-sm text-slate-700 hover:bg-slate-100 hover:text-slate-900"} + :class " inline-block rounded-lg py-1 px-2 text-sm text-slate-700 hover:bg-slate-100 hover:text-slate-900"} children)) diff --git a/src/front/app/components/profile.cljs b/src/front/app/components/profile.cljs index e6e97178..1fd5d3f3 100644 --- a/src/front/app/components/profile.cljs +++ b/src/front/app/components/profile.cljs @@ -1,21 +1,18 @@ (ns front.app.components.profile - (:require [clojure.string :as str] - [front.app.auth.supabase :as supabase] - [front.app.lib :refer [defnc]] - [helix.core :refer [$]] - [helix.dom :as d] - [helix.hooks :as hooks] - [promesa.core :as p] - [refx.alpha :as refx])) + (:require + [clojure.string :as str] + [front.app.auth.supabase :as supabase] + [front.app.lib :refer [defnc]] + [mockingbird.components.pfp :refer [pfp]] + [helix.core :refer [$]] + [helix.dom :as d] + [helix.hooks :as hooks] + [promesa.core :as p] + [refx.alpha :as refx])) (def gravatar-base-url "https://gravatar.com/avatar/") (def auth0-cdn-base-url "https://cdn.auth0.com/avatars/") -(def pfp-styles - {:default "w-8 h-8 rounded-none opacity-100" - :rounded "w-8 h-8 rounded-full opacity-100" - :loading "w-8 h-8 rounded-full opacity-30 animate-pulse"}) - (defn get-simple-avatar-url [username] (let [uq-names (-> username (str/split #" ")) @@ -26,21 +23,6 @@ (str/join "") str/lower-case)] (str auth0-cdn-base-url initials ".png"))) - -(defn get-image-style - [{:keys [children image-style]}] - (let [image-style (keyword image-style)] - (str (get pfp-styles image-style ) - children))) - -(defnc pfp-img - [{:keys [image-style - pfp-loading? pfp-url] :as props}] - (let [classes (get-image-style props)] - (d/img {:class-name classes & (dissoc props :image-style) - :src (if (= true pfp-loading?) - "/images/default-pfp.png" - pfp-url)}))) (defnc user-profile [{:keys [user-data]}] (let [[pfp-url set-pfp-url!] (hooks/use-state nil) @@ -62,53 +44,53 @@ (.encode (js/TextEncoder. "utf-8")))] (-> (.digest (.-subtle js/crypto) "SHA-256" email) (p/then - (fn [hash-buf] - (-> (.from js/Array (js/Uint8Array. hash-buf)) - (.map #(-> (.toString % 16) - (.padStart 2 "0"))) - (.join "")))) + (fn [hash-buf] + (-> (.from js/Array (js/Uint8Array. hash-buf)) + (.map #(-> (.toString % 16) + (.padStart 2 "0"))) + (.join "")))) (p/then - (fn [hex] - (set-pfp-url! (str gravatar-base-url hex - "?default=" default-pfp-url)))) + (fn [hex] + (set-pfp-url! (str gravatar-base-url hex + "?default=" default-pfp-url)))) (p/catch - (fn [err] - (.log js/console "failed to digest email hash:" err) - (set-pfp-url! default-pfp-url)))) + (fn [err] + (.log js/console "failed to digest email hash:" err) + (set-pfp-url! default-pfp-url)))) (set-pfp-url! default-pfp-url)))) - (d/div {:class-name "hidden lg:block"} + (d/div {:class "hidden lg:block"} (d/button {:type "button" - :class-name (str "flex text-sm bg-gray-800 aspect-square rounded-full " - (when dropdown-open? "focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-600")) + :class (str "flex text-sm bg-gray-800 aspect-square rounded-full " + (when dropdown-open? "focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-600")) :on-click #(toggle-dropdown! not)} - (d/span {:class-name "sr-only"} "Open user menu") - ($ pfp-img {:image-style "rounded" - :pfp-loading? pfp-loading? - :pfp-url pfp-url})) - (d/div {:class-name (str "absolute z-50 my-4 right-0 text-base list-none bg-white rounded divide-y" - "divide-gray-100 shadow dark:bg-gray-700 dark:divide-gray-600 " - (when-not dropdown-open? "hidden"))} - (d/div {:class-name "py-3 px-4" :role "none"} - (d/p {:class-name "text-sm font-medium text-gray-900 truncate dark:text-gray-300" :role "none"} + (d/span {:class "sr-only"} "Open user menu") + ($ pfp {:roundness :full + :loading? pfp-loading? + :src (if (= true pfp-loading?) + "/images/default-pfp.png" + pfp-url)})) + (d/div {:class (str "absolute z-50 my-4 right-0 text-base list-none bg-white rounded divide-y" + "divide-gray-100 shadow dark:bg-gray-700 dark:divide-gray-600 " + (when-not dropdown-open? "hidden"))} + (d/div {:class "py-3 px-4" :role "none"} + (d/p {:class "text-sm font-medium text-gray-900 truncate dark:text-gray-300" :role "none"} (:email user-data))) - (d/ul {:class-name "py-1" :role "none"} + (d/ul {:class "py-1" :role "none"} (d/li - (d/a {:href "" + (d/a {:href "" ;; TODO settings - :class-name "block py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600 dark:hover:text-white" - :role "menuitem"} - "Settings")) + :class "block py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600 dark:hover:text-white" + :role "menuitem"} + "Settings")) (d/li - (d/button - {:class-name (str "w-full block py-2 px-4 text-sm text-left text-gray-700 hover:bg-gray-100" - "dark:text-gray-300 dark:hover:bg-gray-600 dark:hover:text-white") - :on-click (fn [e] - (.preventDefault e) - (supabase/sign-out - #(refx/dispatch-sync [:app.auth/logout %]))) - :role "menuitem"} - "Logout"))))))) - - + (d/button + {:class (str "w-full block py-2 px-4 text-sm text-left text-gray-700 hover:bg-gray-100" + "dark:text-gray-300 dark:hover:bg-gray-600 dark:hover:text-white") + :on-click (fn [e] + (.preventDefault e) + (supabase/sign-out + #(refx/dispatch-sync [:app.auth/logout %]))) + :role "menuitem"} + "Logout"))))))) diff --git a/src/front/app/components/section.cljs b/src/front/app/components/section.cljs index b28ab92a..412f2610 100644 --- a/src/front/app/components/section.cljs +++ b/src/front/app/components/section.cljs @@ -3,9 +3,9 @@ [helix.dom :as d] [helix.core :refer [defnc]])) -(def section-styles +(def section-styles {:default "bg-gray-50 dark:bg-gray-800"}) -(defnc section [{:keys [children class-name]}] - (d/section {:class-name (or class-name (get section-styles :default))} - children)) +(defnc section [{:keys [children class]}] + (d/section {:class (or class (get section-styles :default))} + children)) diff --git a/src/front/app/components/status.cljs b/src/front/app/components/status.cljs index b6378641..09fbefc7 100644 --- a/src/front/app/components/status.cljs +++ b/src/front/app/components/status.cljs @@ -1,10 +1,11 @@ (ns front.app.components.status - (:require [front.app.components.svg :as svg] - [front.app.lib :refer [defnc]] - [helix.core :refer [$]] - [helix.hooks :as hooks] - [helix.dom :as d] - [refx.alpha :as refx])) + (:require + [front.app.components.svg :as svg] + [front.app.lib :refer [defnc]] + [helix.core :refer [$]] + [helix.hooks :as hooks] + [helix.dom :as d] + [refx.alpha :as refx])) (defnc status-card [{:keys [status loading? title]}] (d/div {:class (str "px-3 mr-2 flex flex-row space-x-2 items-center rounded-md dns-" @@ -48,12 +49,12 @@ ["publishing" "offline"]))] (hooks/use-effect - [status attempt] - (when loading? - (js/setTimeout #(refx/dispatch - [:app.dashboard/get-mock-pub-stts - {:mock-id id}]) - 5000))) + [status attempt] + (when loading? + (js/setTimeout #(refx/dispatch + [:app.dashboard/get-mock-pub-stts + {:mock-id id}]) + 5000))) ($ status-card {:status (if enabled diff --git a/src/front/app/components/svg.cljs b/src/front/app/components/svg.cljs index a79e91b4..af362ad1 100644 --- a/src/front/app/components/svg.cljs +++ b/src/front/app/components/svg.cljs @@ -1,5 +1,5 @@ (ns front.app.components.svg - (:require + (:require [front.app.lib :refer [defnc]] [helix.dom :as d])) @@ -31,13 +31,13 @@ (defnc save [] (d/svg {:width "17" - :class-name "shrink-0 relative overflow-visible" + :class "shrink-0 relative overflow-visible" :height "17" :viewBox "0 0 17 17" :fill "none"} (d/path - {:d "M7.07983 9.12424C7.01155 9.05355 6.92988 8.99716 6.83957 8.95837C6.74927 8.91958 6.65215 8.89916 6.55387 8.89831C6.45559 8.89745 6.35813 8.91618 6.26716 8.9534C6.1762 8.99061 6.09356 9.04557 6.02406 9.11507C5.95457 9.18456 5.89961 9.2672 5.86239 9.35817C5.82517 9.44913 5.80645 9.5466 5.8073 9.64487C5.80816 9.74315 5.82857 9.84028 5.86736 9.93058C5.90616 10.0209 5.96254 10.1026 6.03324 10.1708L8.25373 12.3913C8.39253 12.5301 8.58076 12.608 8.77702 12.608C8.97329 12.608 9.16152 12.5301 9.30032 12.3913L11.5208 10.1708C11.6556 10.0312 11.7302 9.84427 11.7286 9.6502C11.7269 9.45613 11.649 9.27049 11.5118 9.13326C11.3746 8.99603 11.1889 8.91818 10.9949 8.9165C10.8008 8.91481 10.6138 8.98942 10.4742 9.12424L9.51719 10.0813V5.94672H13.218C13.6106 5.94672 13.9871 6.10268 14.2648 6.3803C14.5424 6.65791 14.6983 7.03444 14.6983 7.42705V12.6082C14.6983 13.0008 14.5424 13.3773 14.2648 13.6549C13.9871 13.9326 13.6106 14.0885 13.218 14.0885H4.33604C3.94343 14.0885 3.56691 13.9326 3.28929 13.6549C3.01168 13.3773 2.85571 13.0008 2.85571 12.6082V7.42705C2.85571 7.03444 3.01168 6.65791 3.28929 6.3803C3.56691 6.10268 3.94343 5.94672 4.33604 5.94672H8.03686V10.0813L7.07983 9.12424V9.12424ZM8.03686 4.46639C8.03686 4.27009 8.11484 4.08182 8.25365 3.94302C8.39246 3.80421 8.58072 3.72623 8.77702 3.72623C8.97333 3.72623 9.16159 3.80421 9.3004 3.94302C9.43921 4.08182 9.51719 4.27009 9.51719 4.46639V5.94672H8.03686V4.46639Z" - :fill "white"}))) + {:d "M7.07983 9.12424C7.01155 9.05355 6.92988 8.99716 6.83957 8.95837C6.74927 8.91958 6.65215 8.89916 6.55387 8.89831C6.45559 8.89745 6.35813 8.91618 6.26716 8.9534C6.1762 8.99061 6.09356 9.04557 6.02406 9.11507C5.95457 9.18456 5.89961 9.2672 5.86239 9.35817C5.82517 9.44913 5.80645 9.5466 5.8073 9.64487C5.80816 9.74315 5.82857 9.84028 5.86736 9.93058C5.90616 10.0209 5.96254 10.1026 6.03324 10.1708L8.25373 12.3913C8.39253 12.5301 8.58076 12.608 8.77702 12.608C8.97329 12.608 9.16152 12.5301 9.30032 12.3913L11.5208 10.1708C11.6556 10.0312 11.7302 9.84427 11.7286 9.6502C11.7269 9.45613 11.649 9.27049 11.5118 9.13326C11.3746 8.99603 11.1889 8.91818 10.9949 8.9165C10.8008 8.91481 10.6138 8.98942 10.4742 9.12424L9.51719 10.0813V5.94672H13.218C13.6106 5.94672 13.9871 6.10268 14.2648 6.3803C14.5424 6.65791 14.6983 7.03444 14.6983 7.42705V12.6082C14.6983 13.0008 14.5424 13.3773 14.2648 13.6549C13.9871 13.9326 13.6106 14.0885 13.218 14.0885H4.33604C3.94343 14.0885 3.56691 13.9326 3.28929 13.6549C3.01168 13.3773 2.85571 13.0008 2.85571 12.6082V7.42705C2.85571 7.03444 3.01168 6.65791 3.28929 6.3803C3.56691 6.10268 3.94343 5.94672 4.33604 5.94672H8.03686V10.0813L7.07983 9.12424V9.12424ZM8.03686 4.46639C8.03686 4.27009 8.11484 4.08182 8.25365 3.94302C8.39246 3.80421 8.58072 3.72623 8.77702 3.72623C8.97333 3.72623 9.16159 3.80421 9.3004 3.94302C9.43921 4.08182 9.51719 4.27009 9.51719 4.46639V5.94672H8.03686V4.46639Z" + :fill "white"}))) (defnc box [{:keys [color] :or {color "white"}}] @@ -60,14 +60,14 @@ :fill color})) (d/defs (d/clipPath - {:id "clip0_236_1090"} - (d/rect {:width "12" - :height "12" - :fill "white" - :transform "translate(0 0.5)"}))))) + {:id "clip0_236_1090"} + (d/rect {:width "12" + :height "12" + :fill "white" + :transform "translate(0 0.5)"}))))) (defnc personal-mock [] - (d/svg {:class-name "" + (d/svg {:class "" :fill "none" :width "22" :height "23" @@ -79,7 +79,7 @@ :d "M10.5882 9.92283C10.5882 14.0357 9.40118 17.8738 7.34941 21.1155M3.30235 18.7299L3.36588 18.6246C5.0159 16.019 5.8885 13.0016 5.88235 9.92283C5.88235 8.68221 6.37815 7.4924 7.26067 6.61516C8.1432 5.73791 9.34016 5.24507 10.5882 5.24507C11.8363 5.24507 13.0333 5.73791 13.9158 6.61516C14.7983 7.4924 15.2941 8.68221 15.2941 9.92283C15.2941 11.1121 15.2118 12.2839 15.0553 13.4311M12.5635 21.4348C13.2897 19.9946 13.8774 18.4895 14.3188 16.9395M18.8353 18.2633C19.5941 15.6133 20 12.8148 20 9.92283C20.0004 8.28041 19.5658 6.66685 18.7399 5.24434C17.914 3.82183 16.7259 2.64051 15.295 1.81914C13.8642 0.997776 12.2411 0.565308 10.5888 0.565216C8.93648 0.565124 7.31328 0.997411 5.88235 1.81862M0 15.0263C0.752941 13.4838 1.17647 11.7518 1.17647 9.92283C1.17647 8.21895 1.63529 6.6215 2.43529 5.24507"}))) (defnc org-mock [] - (d/svg {:class-name "" + (d/svg {:class "" :fill "none" :width "20" :height "21" @@ -121,7 +121,7 @@ (defnc hamburger-menu [] (d/svg {:id "toggleSidebarMobileHamburger" - :class-name "w-6 h-6" + :class "w-6 h-6" :viewBox "0 0 20 20" :fill "currentColor"} (d/path {:fill-rule "evenodd" @@ -130,7 +130,7 @@ (defnc hamburger-menu-close [] (d/svg {:id "toggleSidebarMobileClose" - :class-name "w-6 h-6" + :class "w-6 h-6" :fill "currentColor" :viewBox "0 0 20 20"} (d/path {:fill-rule "evenodd" @@ -138,21 +138,20 @@ :clip-rule "evenodd"}))) (defnc arrow [{:keys [direction class]}] - (d/svg {:class-name (str "w-6 h-6 " - (case direction - :up "rotate-180 " - :down "rotate-0 " - :left "rotate-90 " - :right "-rotate-90 ") - class) + (d/svg {:class (str "w-6 h-6 " + (case direction + :up "rotate-180 " + :down "rotate-0 " + :left "rotate-90 " + :right "-rotate-90 ") + class) :fill "currentColor" :viewBox "0 0 20 20"} (d/path {:d "M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" :clip-rule "evenodd" :fill-rule "evenodd"}))) - (defnc mock-list-box [] - (d/svg {:class-name "flex-shrink-0 w-6 h-6 text-gray-500 transition duration-75 group-hover:text-gray-900 dark:text-gray-400 dark:group-hover:text-white" + (d/svg {:class "flex-shrink-0 w-6 h-6 text-gray-500 transition duration-75 group-hover:text-gray-900 dark:text-gray-400 dark:group-hover:text-white" :fill "currentColor" :viewBox "0 0 24 24"} (d/path {:d "M10.5021 1.40273C10.9577 1.14023 11.4742 1.00204 12 1.00204C12.5258 1.00204 13.0424 1.14024 13.4979 1.40276C13.4986 1.40317 13.4993 1.40357 13.5 1.40397L20.5 5.40396C20.9556 5.66701 21.334 6.04524 21.5973 6.50071C21.8606 6.95618 21.9995 7.47288 22 7.99897V16.001C21.9995 16.5271 21.8606 17.0438 21.5973 17.4993C21.334 17.9547 20.9556 18.333 20.5 18.596L20.4961 18.5982L13.5 22.596C13.4994 22.5964 13.4988 22.5967 13.4982 22.5971C13.0426 22.8597 12.5259 22.9979 12 22.9979C11.4741 22.9979 10.9575 22.8597 10.5019 22.5971C10.5012 22.5967 10.5006 22.5964 10.5 22.596L3.50386 18.5982L3.5 18.596C3.04439 18.333 2.66597 17.9547 2.40269 17.4993C2.13941 17.0438 2.00054 16.5271 2 16.001V7.99897C2.00054 7.47288 2.13941 6.95618 2.40269 6.50071C2.66597 6.04524 3.04439 5.66701 3.5 5.40397L3.50386 5.40174L10.5021 1.40273ZM12 3.00204C11.8245 3.00204 11.652 3.04825 11.5 3.13602L11.4961 3.13825L4.5 7.13602C4.49947 7.13632 4.49895 7.13663 4.49842 7.13693C4.34726 7.22457 4.22169 7.3503 4.13423 7.5016C4.04654 7.6533 4.00025 7.82537 4 8.00059V15.9994C4.00025 16.1746 4.04654 16.3467 4.13423 16.4984C4.22169 16.6497 4.34726 16.7754 4.49842 16.8631C4.49895 16.8634 4.49947 16.8637 4.5 16.864L11.5 20.864C11.652 20.9517 11.8245 20.9979 12 20.9979C12.1755 20.9979 12.348 20.9517 12.5 20.864L12.5039 20.8618L19.5 16.864C19.5005 16.8637 19.5011 16.8634 19.5016 16.8631C19.6527 16.7754 19.7783 16.6497 19.8658 16.4984C19.9535 16.3466 19.9998 16.1743 20 15.999V8.00102C19.9998 7.82566 19.9535 7.65342 19.8658 7.5016C19.7783 7.35031 19.6527 7.22458 19.5016 7.13694C19.5011 7.13663 19.5005 7.13633 19.5 7.13602L12.5 3.13603C12.348 3.04826 12.1755 3.00204 12 3.00204Z" @@ -167,7 +166,7 @@ :fill-rule "evenodd"}))) (defnc house [] - (d/svg {:class-name "w-6 h-6 text-gray-500 transition duration-75 group-hover:text-gray-900 dark:text-gray-400 dark:group-hover:text-white" + (d/svg {:class "w-6 h-6 text-gray-500 transition duration-75 group-hover:text-gray-900 dark:text-gray-400 dark:group-hover:text-white" :fill "none" :viewBox "0 0 24 24"} (d/path {:fill "currentColor" :clip-rule "evenodd" @@ -178,127 +177,127 @@ :clip-rule "evenodd" :d "M8 12C8 11.4477 8.44772 11 9 11H15C15.5523 11 16 11.4477 16 12V22C16 22.5523 15.5523 23 15 23C14.4477 23 14 22.5523 14 22V13H10V22C10 22.5523 9.55228 23 9 23C8.44772 23 8 22.5523 8 22V12Z"}))) -(defnc upload [{:keys [class-name]}] +(defnc upload [{:keys [class]}] (d/svg - {:class class-name - :aria-hidden "true" - :fill "none" - :viewBox "0 0 20 16"} - (d/path {:stroke "currentColor" - :stroke-linecap "round" - :stroke-linejoin "round" - :stroke-width "2" - :d "M13 13h3a3 3 0 0 0 0-6h-.025A5.56 5.56 0 0 0 16 6.5 5.5 5.5 0 0 0 5.207 5.021C5.137 5.017 5.071 5 5 5a4 4 0 0 0 0 8h2.167M10 15V6m0 0L8 8m2-2 2 2"}))) + {:class class + :aria-hidden "true" + :fill "none" + :viewBox "0 0 20 16"} + (d/path {:stroke "currentColor" + :stroke-linecap "round" + :stroke-linejoin "round" + :stroke-width "2" + :d "M13 13h3a3 3 0 0 0 0-6h-.025A5.56 5.56 0 0 0 16 6.5 5.5 5.5 0 0 0 5.207 5.021C5.137 5.017 5.071 5 5 5a4 4 0 0 0 0 8h2.167M10 15V6m0 0L8 8m2-2 2 2"}))) (defnc info [] (d/svg - {:class "w-4 h-4" - :fill "#046c4e" - :viewBox "0 0 15 15"} - (d/path - {:fill-rule "evenodd" - :clip-rule "evenodd" - :d (str "M7.2 14.7C9.10956 14.7 10.9409 13.9414 12.2912 " - "12.5912C13.6414 11.2409 14.4 9.40956 14.4 7.5C14.4 5.59044 " - "13.6414 3.7591 12.2912 2.40883C10.9409 1.05857 9.10956 " - "0.300003 7.2 0.300003C5.29044 0.300003 3.45909 1.05857 " - "2.10883 2.40883C0.758569 3.7591 0 5.59044 0 7.5C0 9.40956 " - "0.758569 11.2409 2.10883 12.5912C3.45909 13.9414 5.29044 " - "14.7 7.2 14.7ZM10.5363 6.3363C10.7002 6.16656 10.791 5.93922 " - "10.7889 5.70324C10.7869 5.46727 10.6922 5.24153 10.5253 " - "5.07467C10.3585 4.9078 10.1327 4.81315 9.89676 4.8111C9.66078 " - "4.80905 9.43344 4.89976 9.2637 5.0637L6.3 8.0274L5.1363 " - "6.8637C4.96656 6.69976 4.73922 6.60905 4.50324 6.6111C4.26726 " - "6.61315 4.04153 6.7078 3.87466 6.87467C3.7078 7.04153 3.61314 " - "7.26727 3.61109 7.50324C3.60904 7.73922 3.69976 7.96656 " - "3.8637 8.1363L5.6637 9.9363C5.83248 10.105 6.06135 10.1998 " - "6.3 10.1998C6.53865 10.1998 6.76753 10.105 6.9363 " - "9.9363L10.5363 6.3363Z")}))) + {:class "w-4 h-4" + :fill "#046c4e" + :viewBox "0 0 15 15"} + (d/path + {:fill-rule "evenodd" + :clip-rule "evenodd" + :d (str "M7.2 14.7C9.10956 14.7 10.9409 13.9414 12.2912 " + "12.5912C13.6414 11.2409 14.4 9.40956 14.4 7.5C14.4 5.59044 " + "13.6414 3.7591 12.2912 2.40883C10.9409 1.05857 9.10956 " + "0.300003 7.2 0.300003C5.29044 0.300003 3.45909 1.05857 " + "2.10883 2.40883C0.758569 3.7591 0 5.59044 0 7.5C0 9.40956 " + "0.758569 11.2409 2.10883 12.5912C3.45909 13.9414 5.29044 " + "14.7 7.2 14.7ZM10.5363 6.3363C10.7002 6.16656 10.791 5.93922 " + "10.7889 5.70324C10.7869 5.46727 10.6922 5.24153 10.5253 " + "5.07467C10.3585 4.9078 10.1327 4.81315 9.89676 4.8111C9.66078 " + "4.80905 9.43344 4.89976 9.2637 5.0637L6.3 8.0274L5.1363 " + "6.8637C4.96656 6.69976 4.73922 6.60905 4.50324 6.6111C4.26726 " + "6.61315 4.04153 6.7078 3.87466 6.87467C3.7078 7.04153 3.61314 " + "7.26727 3.61109 7.50324C3.60904 7.73922 3.69976 7.96656 " + "3.8637 8.1363L5.6637 9.9363C5.83248 10.105 6.06135 10.1998 " + "6.3 10.1998C6.53865 10.1998 6.76753 10.105 6.9363 " + "9.9363L10.5363 6.3363Z")}))) (defnc error [] (d/svg - {:class "w-4 h-4" - :fill "#c81e1e" - :viewBox "0 0 15 15"} - (d/path - {:fill-rule "evenodd" - :clip-rule "evenodd" - :d (str "M7.2 14.7C9.10956 14.7 10.9409 13.9414 12.2912 " - "12.5912C13.6414 11.2409 14.4 9.40956 14.4 7.5C14.4 5.59044 " - "13.6414 3.7591 12.2912 2.40883C10.9409 1.05857 9.10956 " - "0.300003 7.2 0.300003C5.29044 0.300003 3.45909 1.05857 " - "2.10883 2.40883C0.758569 3.7591 0 5.59044 0 7.5C0 9.40956 " - "0.758569 11.2409 2.10883 12.5912C3.45909 13.9414 5.29044 14.7 " - "7.2 14.7ZM6.0363 5.0637C5.86656 4.89976 5.63922 4.80905 " - "5.40324 4.8111C5.16726 4.81315 4.94153 4.9078 4.77466 " - "5.07467C4.6078 5.24153 4.51314 5.46727 4.51109 " - "5.70324C4.50904 5.93922 4.59976 6.16656 4.7637 6.3363L5.9274 " - "7.5L4.7637 8.6637C4.67774 8.74673 4.60918 8.84604 4.56201 " - "8.95584C4.51484 9.06564 4.49001 9.18374 4.48897 " - "9.30324C4.48794 9.42274 4.51071 9.54125 4.55596 " - "9.65186C4.60121 9.76247 4.66804 9.86296 4.75254 " - "9.94746C4.83705 10.032 4.93753 10.0988 5.04814 " - "10.144C5.15875 10.1893 5.27726 10.2121 5.39676 " - "10.211C5.51626 10.21 5.63436 10.1852 5.74416 10.138C5.85397 " - "10.0908 5.95328 10.0223 6.0363 9.9363L7.2 8.7726L8.3637 " - "9.9363C8.53344 10.1002 8.76078 10.191 8.99676 10.1889C9.23274 " - "10.1869 9.45847 10.0922 9.62534 9.92534C9.7922 9.75847 " - "9.88686 9.53274 9.88891 9.29676C9.89096 9.06079 9.80024 " - "8.83345 9.6363 8.6637L8.4726 7.5L9.6363 6.3363C9.80024 " - "6.16656 9.89096 5.93922 9.88891 5.70324C9.88686 5.46727 " - "9.7922 5.24153 9.62534 5.07467C9.45847 4.9078 9.23274 " - "4.81315 8.99676 4.8111C8.76078 4.80905 8.53344 4.89976 " - "8.3637 5.0637L7.2 6.2274L6.0363 5.0637Z")}))) + {:class "w-4 h-4" + :fill "#c81e1e" + :viewBox "0 0 15 15"} + (d/path + {:fill-rule "evenodd" + :clip-rule "evenodd" + :d (str "M7.2 14.7C9.10956 14.7 10.9409 13.9414 12.2912 " + "12.5912C13.6414 11.2409 14.4 9.40956 14.4 7.5C14.4 5.59044 " + "13.6414 3.7591 12.2912 2.40883C10.9409 1.05857 9.10956 " + "0.300003 7.2 0.300003C5.29044 0.300003 3.45909 1.05857 " + "2.10883 2.40883C0.758569 3.7591 0 5.59044 0 7.5C0 9.40956 " + "0.758569 11.2409 2.10883 12.5912C3.45909 13.9414 5.29044 14.7 " + "7.2 14.7ZM6.0363 5.0637C5.86656 4.89976 5.63922 4.80905 " + "5.40324 4.8111C5.16726 4.81315 4.94153 4.9078 4.77466 " + "5.07467C4.6078 5.24153 4.51314 5.46727 4.51109 " + "5.70324C4.50904 5.93922 4.59976 6.16656 4.7637 6.3363L5.9274 " + "7.5L4.7637 8.6637C4.67774 8.74673 4.60918 8.84604 4.56201 " + "8.95584C4.51484 9.06564 4.49001 9.18374 4.48897 " + "9.30324C4.48794 9.42274 4.51071 9.54125 4.55596 " + "9.65186C4.60121 9.76247 4.66804 9.86296 4.75254 " + "9.94746C4.83705 10.032 4.93753 10.0988 5.04814 " + "10.144C5.15875 10.1893 5.27726 10.2121 5.39676 " + "10.211C5.51626 10.21 5.63436 10.1852 5.74416 10.138C5.85397 " + "10.0908 5.95328 10.0223 6.0363 9.9363L7.2 8.7726L8.3637 " + "9.9363C8.53344 10.1002 8.76078 10.191 8.99676 10.1889C9.23274 " + "10.1869 9.45847 10.0922 9.62534 9.92534C9.7922 9.75847 " + "9.88686 9.53274 9.88891 9.29676C9.89096 9.06079 9.80024 " + "8.83345 9.6363 8.6637L8.4726 7.5L9.6363 6.3363C9.80024 " + "6.16656 9.89096 5.93922 9.88891 5.70324C9.88686 5.46727 " + "9.7922 5.24153 9.62534 5.07467C9.45847 4.9078 9.23274 " + "4.81315 8.99676 4.8111C8.76078 4.80905 8.53344 4.89976 " + "8.3637 5.0637L7.2 6.2274L6.0363 5.0637Z")}))) (defnc close [] (d/svg - {:class-name "w-5 h-5" - :fill "currentColor" - :viewBox " 0 0 20 20"} - (d/path - {:fill-rule "evenodd" - :d "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" - :clip-rule "evenodd"}))) + {:class "w-5 h-5" + :fill "currentColor" + :viewBox " 0 0 20 20"} + (d/path + {:fill-rule "evenodd" + :d "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" + :clip-rule "evenodd"}))) (defnc arrow-link [] (d/svg - {:class "w-4 h-4" - :width "16" - :height "16" - :viewBox "0 0 16 16"} - (d/path - {:fill-rule "evenodd" - :d (str "M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 " - "1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 " - "0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 " - ".5-.5h6.636a.5.5 0 0 0 .5-.5")}) - (d/path - {:fill-rule "evenodd" - :d (str "M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 " - "9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0z")}))) + {:class "w-4 h-4" + :width "16" + :height "16" + :viewBox "0 0 16 16"} + (d/path + {:fill-rule "evenodd" + :d (str "M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 " + "1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 " + "0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 " + ".5-.5h6.636a.5.5 0 0 0 .5-.5")}) + (d/path + {:fill-rule "evenodd" + :d (str "M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 " + "9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0z")}))) (defnc warning [] (d/svg - {:class "w-8 h-8" - :viewBox "0 0 36 35" - :fill "none"} - (d/path - {:stroke "#9ca3af" - :stroke-width "3" - :stroke-linecap "round" - :stroke-linejoin "round" - :d (str "M18 10.75V17.75M18 24.75H18.0175M33.75 17.75C33.75 19.8183 " - "33.3426 21.8664 32.5511 23.7773C31.7596 25.6881 30.5995 " - "27.4244 29.1369 28.8869C27.6744 30.3495 25.9381 31.5096 " - "24.0273 32.3011C22.1164 33.0926 20.0683 33.5 18 33.5C15.9317 " - "33.5 13.8836 33.0926 11.9727 32.3011C10.0619 31.5096 8.32559 " - "30.3495 6.86307 28.8869C5.40055 27.4244 4.24041 25.6881 3.4489 " - "23.7773C2.65739 21.8664 2.25 19.8183 2.25 17.75C2.25 13.5728 " - "3.90937 9.56677 6.86307 6.61307C9.81677 3.65937 13.8228 2 18 " - "2C22.1772 2 26.1832 3.65937 29.1369 6.61307C32.0906 9.56677 " - "33.75 13.5728 33.75 17.75Z")}))) + {:class "w-8 h-8" + :viewBox "0 0 36 35" + :fill "none"} + (d/path + {:stroke "#9ca3af" + :stroke-width "3" + :stroke-linecap "round" + :stroke-linejoin "round" + :d (str "M18 10.75V17.75M18 24.75H18.0175M33.75 17.75C33.75 19.8183 " + "33.3426 21.8664 32.5511 23.7773C31.7596 25.6881 30.5995 " + "27.4244 29.1369 28.8869C27.6744 30.3495 25.9381 31.5096 " + "24.0273 32.3011C22.1164 33.0926 20.0683 33.5 18 33.5C15.9317 " + "33.5 13.8836 33.0926 11.9727 32.3011C10.0619 31.5096 8.32559 " + "30.3495 6.86307 28.8869C5.40055 27.4244 4.24041 25.6881 3.4489 " + "23.7773C2.65739 21.8664 2.25 19.8183 2.25 17.75C2.25 13.5728 " + "3.90937 9.56677 6.86307 6.61307C9.81677 3.65937 13.8228 2 18 " + "2C22.1772 2 26.1832 3.65937 29.1369 6.61307C32.0906 9.56677 " + "33.75 13.5728 33.75 17.75Z")}))) -(defnc plus-sign [] +(defnc plus-sign [] (d/svg {:width "16" :height "17" :viewBox "0 0 16 17" @@ -308,18 +307,33 @@ :d "M8 4.5C8.21217 4.5 8.41566 4.58429 8.56569 4.73431C8.71571 4.88434 8.8 5.08783 8.8 5.3V7.7H11.2C11.4122 7.7 11.6157 7.78429 11.7657 7.93431C11.9157 8.08434 12 8.28783 12 8.5C12 8.71217 11.9157 8.91566 11.7657 9.06569C11.6157 9.21571 11.4122 9.3 11.2 9.3H8.8V11.7C8.8 11.9122 8.71571 12.1157 8.56569 12.2657C8.41566 12.4157 8.21217 12.5 8 12.5C7.78783 12.5 7.58434 12.4157 7.43431 12.2657C7.28429 12.1157 7.2 11.9122 7.2 11.7V9.3H4.8C4.58783 9.3 4.38434 9.21571 4.23431 9.06569C4.08429 8.91566 4 8.71217 4 8.5C4 8.28783 4.08429 8.08434 4.23431 7.93431C4.38434 7.78429 4.58783 7.7 4.8 7.7H7.2V5.3C7.2 5.08783 7.28429 4.88434 7.43431 4.73431C7.58434 4.58429 7.78783 4.5 8 4.5V4.5Z" :fill "white"}))) - (defnc help [] - (d/svg {:class-name "flex-shrink-0 w-6 h-6 text-gray-500 transition duration-75 group-hover:text-gray-900 dark:text-gray-400 dark:group-hover:text-white" + (d/svg {:class "flex-shrink-0 w-6 h-6 text-gray-500 transition duration-75 group-hover:text-gray-900 dark:text-gray-400 dark:group-hover:text-white" :fill "currentColor" :viewBox "0 0 20 20"} (d/path {:fill-rule "evenodd" :d "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-2 0c0 .993-.241 1.929-.668 2.754l-1.524-1.525a3.997 3.997 0 00.078-2.183l1.562-1.562C15.802 8.249 16 9.1 16 10zm-5.165 3.913l1.58 1.58A5.98 5.98 0 0110 16a5.976 5.976 0 01-2.516-.552l1.562-1.562a4.006 4.006 0 001.789.027zm-4.677-2.796a4.002 4.002 0 01-.041-2.08l-.08.08-1.53-1.533A5.98 5.98 0 004 10c0 .954.223 1.856.619 2.657l1.54-1.54zm1.088-6.45A5.974 5.974 0 0110 4c.954 0 1.856.223 2.657.619l-1.54 1.54a4.002 4.002 0 00-2.346.033L7.246 4.668zM12 10a2 2 0 11-4 0 2 2 0 014 0z"}))) -(defnc docs [] - (d/svg {:class-name "flex-shrink-0 w-6 h-6 text-gray-500 transition duration-75 group-hover:text-gray-900 dark:text-gray-400 dark:group-hover:text-white" +(defnc docs [] + (d/svg {:class "flex-shrink-0 w-6 h-6 text-gray-500 transition duration-75 group-hover:text-gray-900 dark:text-gray-400 dark:group-hover:text-white" :fill "currentColor" :viewBox "0 0 20 20"} (d/path {:d "M9 2a1 1 0 000 2h2a1 1 0 100-2H9z"}) (d/path {:d "M4 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v11a2 2 0 01-2 2H6a2 2 0 01-2-2V5zm3 4a1 1 0 000 2h.01a1 1 0 100-2H7zm3 0a1 1 0 000 2h3a1 1 0 100-2h-3zm-3 4a1 1 0 100 2h.01a1 1 0 100-2H7zm3 0a1 1 0 100 2h3a1 1 0 100-2h-3z" :clip-rule "evenodd"}))) + +(defnc github [] + (d/svg {:class "flex-shrink-0 w-6 h-6 text-gray-300 transition duration-75 group-hover:text-gray-400 dark:text-gray-400 dark:group-hover:text-white" + :fill "currentColor" + :viewBox "0 0 100 100"} + (d/path {:fill-rule "evenodd" + :clip-rule "evenodd" + :d "M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z"}))) + +(defnc logout [] + (d/svg {:class "flex-shrink-0 w-6 h-6 text-gray-300 transition duration-75 group-hover:text-gray-400 dark:text-gray-400 dark:group-hover:text-white" + :fill "currentColor" + :viewBox "0 0 100 100"} + (d/path {:fill-rule "evenodd" + :clip-rule "evenodd" + :d "M381.481,184.088l-83.009-84.2c-4.704-4.752-12.319-4.74-17.011,0c-4.704,4.74-4.704,12.439,0,17.179l62.558,63.46H96.279 c-6.641,0-12.03,5.438-12.03,12.151c0,6.713,5.39,12.151,12.03,12.151h247.74l-62.558,63.46c-4.704,4.752-4.704,12.439,0,17.179 c4.704,4.752,12.319,4.752,17.011,0l82.997-84.2C386.113,196.588,386.161,188.756,381.481,184.088z"}))) diff --git a/src/front/app/core.cljs b/src/front/app/core.cljs index 945ca65b..b8a0dee5 100644 --- a/src/front/app/core.cljs +++ b/src/front/app/core.cljs @@ -3,12 +3,14 @@ ["@sentry/react" :as Sentry] ["flowbite"] ["react-dom/client" :as rdom] + [cljs.pprint :as pprint] [front.app.auth.db] [front.app.auth.events] [front.app.auth.subs] [front.app.auth.supabase :as supabase] - [front.app.components.footer :refer [footer]] + [mockingbird.layout.footer :refer [footer]] [front.app.components.notifications :refer [notifications]] + [front.app.components.container :refer [aside-container]] [front.app.dashboard.events] [front.app.dashboard.subs] [front.app.lib :refer [defnc]] @@ -56,40 +58,40 @@ user-exists? (refx/use-sub [:app.auth/user-exists?])] (hooks/use-effect - [login-err current-route] - (when (or login-err (nil? current-route)) - (rfe/push-state :app.core/login))) + [login-err current-route] + (when (or login-err (nil? current-route)) + (rfe/push-state :app.core/login))) (hooks/use-effect - [user-exists?] - (if (and (not user-exists?) (some? session)) - (do - (refx/dispatch-sync [:app.auth/saving-user session]) - (rfe/push-state :app.core/first-login) - (set-session! nil)) - (when (some-> current-user :user) - (if (not= route-name :app.core/auth) - (rfe/push-state route-name) - (rfe/push-state :app.core/dashboard))))) + [user-exists?] + (if (and (not user-exists?) (some? session)) + (do + (refx/dispatch-sync [:app.auth/saving-user session]) + (rfe/push-state :app.core/first-login) + (set-session! nil)) + (when (some-> current-user :user) + (if (not= route-name :app.core/auth) + (rfe/push-state route-name) + (rfe/push-state :app.core/dashboard))))) (hooks/use-effect - [current-user] - (when-not (and (some? session) valid-user?) - (-> (.. supabase/client -auth getSession) - (p/then - (fn [resp] - (let [ses (-> (utils/js->cljs-key resp) - (get-in [:data :session]) - utils/convert-keys) - access-token (:access-token ses) - valid-session? (and (some? ses) (not= ses {}) - (some? access-token))] - (if valid-session? - (do - (set-session! ses) - (refx/dispatch-sync [:app.auth/user-exists? ses])) - (rfe/push-state :app.core/login))))) - (p/catch (fn [err] (refx/dispatch-sync [:app.auth/login-error err])))))) + [current-user] + (when-not (and (some? session) valid-user?) + (-> (.. supabase/client -auth getSession) + (p/then + (fn [resp] + (let [ses (-> (utils/js->cljs-key resp) + (get-in [:data :session]) + utils/convert-keys) + access-token (:access-token ses) + valid-session? (and (some? ses) (not= ses {}) + (some? access-token))] + (if valid-session? + (do + (set-session! ses) + (refx/dispatch-sync [:app.auth/user-exists? ses])) + (rfe/push-state :app.core/login))))) + (p/catch (fn [err] (refx/dispatch-sync [:app.auth/login-error err])))))) (let [view (-> current-route :data :view)] (when (and (some? view) accessible-route?) @@ -100,8 +102,12 @@ (defnc app [] (d/div ($ route-handler) - (when debug - ($ footer)))) + (let [db (refx/use-sub [:app.database/db])] + (when debug + ($ footer + ($ aside-container + (d/pre (with-out-str + (pprint/pprint db))))))))) ;;; Setup ;;; (defonce root diff --git a/src/front/app/dashboard/base.cljs b/src/front/app/dashboard/base.cljs index 7b6ce62b..74e83a6c 100644 --- a/src/front/app/dashboard/base.cljs +++ b/src/front/app/dashboard/base.cljs @@ -4,9 +4,9 @@ [front.app.components.modal :refer [modal]] [front.app.components.svg :as svg] [front.app.components.aside :refer [aside]] - [front.app.components.button :refer [button]] + [mockingbird.components.button :refer [button]] [front.app.components.navbar :refer [nav-bar]] - [front.app.lib :refer [defnc]] + [mockingbird.lib :refer-macros [defnc]] [helix.core :refer [$ <>]] [helix.dom :as d] [helix.hooks :as hooks] @@ -59,118 +59,118 @@ (refx/dispatch-sync [:app.dashboard/toggle-mock-modal])) :children (d/div - {:class "w-screen md:w-[600px] p-6 space-y-4"} + {:class "w-screen md:w-[600px] p-6 space-y-4"} + (d/div (d/div - (d/div - {:class "grid grid-cols-6 gap-4"} - (d/div - {:class "col-span-6 lm:col-span-3"} - (d/label - {:for "product-name" - :class (str "block mb-2 text-sm font-medium text-gray-900 " - "dark:text-white")} - "mock name") - (d/input - {:class (str "shadow-sm bg-gray-50 focus:ring-pink-500 " - "focus:border-pink-500 block w-full sm:text-sm " - "border-gray-300 rounded-md") - :placeholder default-wildcard - :on-load #(set-mock assoc :wildcard default-wildcard) - :type "text" - :on-change #(set-mock - assoc :wildcard - (slugify/default (or (.. % -target -value) - default-wildcard) - #js {:replacement "-" - :lower true - :trim true})) - :name "product-name" - :id "product-name"}))) - (d/div - {:class "mb-4"} - (d/label - {:for "settings-language" - :class-name (str "block mb-2 text-sm font-medium text-gray-900 " - "dark:text-white")} - "Org name") - (d/select - {:id "settings-language" - :name "subdomain" - :value (or (:subdomain new-mock) default-subdomain) - :on-change #(set-mock assoc :subdomain - (or (.. % -target -value) - default-subdomain)) - :class (str "bg-gray-50 border-gray-300 text-gray-900 " - "sm:text-sm rounded-lg focus:ring-primary-500 " - "focus:border-primary-500 block w-full p-2.5 " - "dark:bg-gray-700 dark:border-gray-600 " - "dark:placeholder-gray-400 dark:text-white " - "dark:focus:ring-primary-500 " - "dark:focus:border-primary-500")} - (d/option {:value ""} "Select an org-name") - (mapv #(d/option {:key % :value %} %) - user-orgs)) - (d/div - {:class "mt-2 text-sm text-gray-500 dark:text-gray-400"} - (d/span - {:class "text-gray-900 text-base font-semibold "} - (or (:wildcard new-mock) "")) - (d/span - {:class "text-gray-900 "} - (str "-" (or (:subdomain new-mock) "") - ".moclojer.com")))) + {:class "grid grid-cols-6 gap-4"} + (d/div + {:class "col-span-6 lm:col-span-3"} + (d/label + {:for "product-name" + :class (str "block mb-2 text-sm font-medium text-gray-900 " + "dark:text-white")} + "mock name") + (d/input + {:class (str "shadow-sm bg-gray-50 focus:ring-pink-500 " + "focus:border-pink-500 block w-full sm:text-sm " + "border-gray-300 rounded-md") + :placeholder default-wildcard + :on-load #(set-mock assoc :wildcard default-wildcard) + :type "text" + :on-change #(set-mock + assoc :wildcard + (slugify/default (or (.. % -target -value) + default-wildcard) + #js {:replacement "-" + :lower true + :trim true})) + :name "product-name" + :id "product-name"}))) + (d/div + {:class "mb-4"} + (d/label + {:for "settings-language" + :class-name (str "block mb-2 text-sm font-medium text-gray-900 " + "dark:text-white")} + "Org name") + (d/select + {:id "settings-language" + :name "subdomain" + :value (or (:subdomain new-mock) default-subdomain) + :on-change #(set-mock assoc :subdomain + (or (.. % -target -value) + default-subdomain)) + :class (str "bg-gray-50 border-gray-300 text-gray-900 " + "sm:text-sm rounded-lg focus:ring-primary-500 " + "focus:border-primary-500 block w-full p-2.5 " + "dark:bg-gray-700 dark:border-gray-600 " + "dark:placeholder-gray-400 dark:text-white " + "dark:focus:ring-primary-500 " + "dark:focus:border-primary-500")} + (d/option {:value ""} "Select an org-name") + (mapv #(d/option {:key % :value %} %) + user-orgs)) + (d/div + {:class "mt-2 text-sm text-gray-500 dark:text-gray-400"} + (d/span + {:class "text-gray-900 text-base font-semibold "} + (or (:wildcard new-mock) "")) + (d/span + {:class "text-gray-900 "} + (str "-" (or (:subdomain new-mock) "") + ".moclojer.com")))) + (d/div + {:class "divide-y divide-gray-200 dark:divide-gray-700 hidden"} + (d/div + {:class "flex justify-between items-center py-4"} (d/div - {:class "divide-y divide-gray-200 dark:divide-gray-700 hidden"} - (d/div - {:class "flex justify-between items-center py-4"} - (d/div - {:class "flex flex-col flex-grow"} - (d/div - {:class "text-lg font-semibold text-gray-900 dark:text-white"} - "public?") - (d/div - {:class "text-base font-normal text-gray-500 dark:text-gray-400"} - "is this api ready to be published?")) - (d/label - {:for "rating-reminders" - :class "flex relative items-center cursor-pointer"} - (d/input - {:type "checkbox" - :id "rating-reminders" - :class-name "sr-only peer cursor-not-allowed" - :on-change (fn [e] - (set-mock assoc :enabled (= (.. e -target -value) "on")))}) - (d/span - {:class (str "w-11 h-6 bg-gray-200 rounded-full peer " - "dark:bg-gray-700 peer-focus:ring-4 " - "peer-focus:ring-pink-300 dark:peer-focus:ring-pink-800 " - "peer-checked:after:translate-x-full " - "peer-checked:after:border-white after:content-[''] " - "after:absolute after:top-0.5 after:left-[2px] " - "after:bg-white after:border-gray-300 after:border " - "after:rounded-full after:h-5 after:w-5 " - "after:transition-all dark:border-gray-600 " - "peer-checked:bg-pink-500")})))) + {:class "flex flex-col flex-grow"} + (d/div + {:class "text-lg font-semibold text-gray-900 dark:text-white"} + "public?") + (d/div + {:class "text-base font-normal text-gray-500 dark:text-gray-400"} + "is this api ready to be published?")) + (d/label + {:for "rating-reminders" + :class "flex relative items-center cursor-pointer"} + (d/input + {:type "checkbox" + :id "rating-reminders" + :class-name "sr-only peer cursor-not-allowed" + :on-change (fn [e] + (set-mock assoc :enabled (= (.. e -target -value) "on")))}) + (d/span + {:class (str "w-11 h-6 bg-gray-200 rounded-full peer " + "dark:bg-gray-700 peer-focus:ring-4 " + "peer-focus:ring-pink-300 dark:peer-focus:ring-pink-800 " + "peer-checked:after:translate-x-full " + "peer-checked:after:border-white after:content-[''] " + "after:absolute after:top-0.5 after:left-[2px] " + "after:bg-white after:border-gray-300 after:border " + "after:rounded-full after:h-5 after:w-5 " + "after:transition-all dark:border-gray-600 " + "peer-checked:bg-pink-500")})))) - (d/div - {:class "flex justify-between items-end py-4"} - ($ button - {:class-name - (str "px-3 py-2 rounded-lg justify-end items-center gap-2 flex btn-add " - (if allow-save? "bg-pink-600" "btn-add__disabled bg-gray-600 cursor-not-allowed")) - :on-click #(when allow-save? - (refx/dispatch [:app.dashboard/create-mock new-mock]))} - (d/div - {:class "text-white text-xs font-bold leading-[18px]"} - " save") - ($ svg/save)))))}))) + (d/div + {:class "flex justify-between items-end py-4"} + ($ button + {:class + (str "px-3 py-2 rounded-lg justify-end items-center gap-2 flex btn-add " + (if allow-save? "bg-pink-600" "btn-add__disabled bg-gray-600 cursor-not-allowed")) + :on-click #(when allow-save? + (refx/dispatch [:app.dashboard/create-mock new-mock]))} + (d/div + {:class "text-white text-xs font-bold leading-[18px]"} + " save") + ($ svg/save)))))}))) (defn mock-deletion-modal [] (let [[open? set-open!] (hooks/use-state false) close-modal! #(do (set-open! false) (refx/dispatch-sync - [:app.dashboard/set-mock-to-delete nil])) + [:app.dashboard/set-mock-to-delete nil])) mock (refx/use-sub [:app.dashboard/mock-to-delete])] (hooks/use-effect @@ -186,29 +186,29 @@ :on-close close-modal! :children (d/div - {:class "px-4 py-4 flex flex-col space-y-4 items-center align-center"} - ($ svg/warning) - (d/p "Do you want to delete this mock?") - (d/div - {:class "flex flex-row space-x-2"} - ($ button - {:class-name "px-4 py-2 bg-red-500 rounded-lg hover:opacity-80" - :on-click #(do - (close-modal!) - (refx/dispatch-sync [:app.dashboard/delete-mock mock]))} - (d/p - {:class "text-white"} - "Yes, I want to delete it")) - ($ button - {:class-name "px-4 py-2 border-2 border-gray-400 rounded-lg hover:bg-gray-200"} - (d/p - {:class-name "text-gray-800 text-sm font-medium" - :on-click #(close-modal!)} - "No, cancel"))))}))) + {:class "px-4 py-4 flex flex-col space-y-4 items-center align-center"} + ($ svg/warning) + (d/p "Do you want to delete this mock?") + (d/div + {:class "flex flex-row space-x-2"} + ($ button + {:class "px-4 py-2 bg-red-500 rounded-lg hover:opacity-80" + :on-click #(do + (close-modal!) + (refx/dispatch-sync [:app.dashboard/delete-mock mock]))} + (d/p + {:class "text-white"} + "Yes, I want to delete it")) + ($ button + {:class "px-4 py-2 border-2 border-gray-400 rounded-lg hover:bg-gray-200"} + (d/p + {:class-name "text-gray-800 text-sm font-medium" + :on-click #(close-modal!)} + "No, cancel"))))}))) (defnc index [{:keys [children]}] (let [user (-> (refx/use-sub [:app.auth/current-user]) :user)] - (d/body + (d/div {:class-name "bg-gray-50 dark:bg-gray-800"} ($ nav-bar {:user-data user}) diff --git a/src/front/app/dashboard/editor.cljs b/src/front/app/dashboard/editor.cljs index 86bb6ba6..a2199e04 100644 --- a/src/front/app/dashboard/editor.cljs +++ b/src/front/app/dashboard/editor.cljs @@ -1,30 +1,31 @@ (ns front.app.dashboard.editor - (:require ["@codemirror/language" :as language] - ["@codemirror/legacy-modes/mode/yaml" :as yaml] - ["@codemirror/lint" :as clint] - ["@uiw/codemirror-theme-github" :as theme] - ["@uiw/react-codemirror" :as c] - [front.app.components.status :refer [publication-status]] - [front.app.components.svg :as svg] - [front.app.dashboard.base :as base] - [front.app.dashboard.linter :as linter] - [front.app.lib :refer [defnc]] - [helix.core :refer [$]] - [helix.dom :as d] - [helix.hooks :as hooks] - [refx.alpha :as refx] - [reitit.frontend.easy :as rfe])) + (:require + ["@codemirror/language" :as language] + ["@codemirror/legacy-modes/mode/yaml" :as yaml] + ["@codemirror/lint" :as clint] + ["@uiw/codemirror-theme-github" :as theme] + ["@uiw/react-codemirror" :as c] + [front.app.components.status :refer [publication-status]] + [front.app.components.svg :as svg] + [front.app.dashboard.base :as base] + [front.app.dashboard.linter :as linter] + [mockingbird.lib :refer-macros [defnc]] + [helix.core :refer [$]] + [helix.dom :as d] + [helix.hooks :as hooks] + [refx.alpha :as refx] + [reitit.frontend.easy :as rfe])) (defnc editor [props] (let [{:keys [data set-dragging-over!]} props {:keys [content id] :or {content ""}} data ref-fn (hooks/use-callback - [content] - (fn [content] - (refx/dispatch-sync - [:app.dashboard/edit-mock {:mock-id id - :content content}])))] + [content] + (fn [content] + (refx/dispatch-sync + [:app.dashboard/edit-mock {:mock-id id + :content content}])))] ($ c/default {:height "calc(100vh - 171px)" @@ -113,13 +114,13 @@ ;; outside of this component's state, this logic lets us know ;; when the popup `really delete this mock?` is confirmed (if so). (hooks/use-effect - [mock-to-delete] - (if (and deleting? (nil? mock-to-delete)) - (do - (set-deleting! false) - (rfe/push-state :app.core/mocks)) - (when (= (:id mock-to-delete) mock-id) - (set-deleting! true)))) + [mock-to-delete] + (if (and deleting? (nil? mock-to-delete)) + (do + (set-deleting! false) + (rfe/push-state :app.core/mocks)) + (when (= (:id mock-to-delete) mock-id) + (set-deleting! true)))) ($ base/index (d/div diff --git a/src/front/app/dashboard/events.cljs b/src/front/app/dashboard/events.cljs index ecf0b9f5..83155ec4 100644 --- a/src/front/app/dashboard/events.cljs +++ b/src/front/app/dashboard/events.cljs @@ -1,5 +1,6 @@ (ns front.app.dashboard.events - (:require [refx.alpha :as refx])) + (:require + [refx.alpha :as refx])) (refx/reg-event-db :app.dashboard/toggle-aside! diff --git a/src/front/app/dashboard/linter.cljs b/src/front/app/dashboard/linter.cljs index f9926df4..e628ef9a 100644 --- a/src/front/app/dashboard/linter.cljs +++ b/src/front/app/dashboard/linter.cljs @@ -1,9 +1,10 @@ (ns front.app.dashboard.linter - (:require ["@codemirror/lint" :as clint] - ["js-yaml" :as js-yaml] - [clojure.string :as str] - [malli.core :as m] - [refx.alpha :as refx])) + (:require + ["@codemirror/lint" :as clint] + ["js-yaml" :as js-yaml] + [clojure.string :as str] + [malli.core :as m] + [refx.alpha :as refx])) (def MethodSchema [:enum diff --git a/src/front/app/dashboard/mocks.cljs b/src/front/app/dashboard/mocks.cljs index ac7190e8..2506fe1c 100644 --- a/src/front/app/dashboard/mocks.cljs +++ b/src/front/app/dashboard/mocks.cljs @@ -1,13 +1,15 @@ (ns front.app.dashboard.mocks - (:require [front.app.components.status :refer [publication-status]] - [front.app.components.svg :as svg] - [front.app.dashboard.base :as base] - [front.app.lib :refer [defnc]] - [helix.core :refer [$ <>]] - [helix.dom :as d] - [helix.hooks :as hooks] - [refx.alpha :as refx] - [reitit.frontend.easy :as rfe])) + (:require + [mockingbird.components.button :refer [button]] + [front.app.components.status :refer [publication-status]] + [front.app.components.svg :as svg] + [front.app.dashboard.base :as base] + [front.app.lib :refer [defnc]] + [helix.core :refer [$ <>]] + [helix.dom :as d] + [helix.hooks :as hooks] + [refx.alpha :as refx] + [reitit.frontend.easy :as rfe])) (defnc api-mock [{:keys [enabled url id]}] (d/div {:class (str "w-full py-4 bg-white border-b border-gray-200 flex flex-col items-left cursor-pointer " @@ -63,6 +65,7 @@ :else svg/org-mock)) (defnc apis-mocks [{:keys [subdomain mock-type apis]}] + (d/div {:id "custom-mock" :class (str "w-full px-6 py-4 bg-white rounded-lg shadow flex-col justify-center items-start inline-flex " "lg:p-8") @@ -74,7 +77,9 @@ (<> {:key id} ($ api-mock {:enabled enabled :url url :id id}))) (d/div {:class "self-stretch pt-6 justify-start items-start inline-flex text-white text-xs font-bold leading-[18px]"} - (d/button {:class "px-3 py-2 bg-pink-600 rounded-lg justify-end items-center gap-2 flex btn-add" + + ($ button {:class "px-3 py-2 text-white hover:text-white bg-pink-600 rounded-lg justify-end items-center gap-2 flex btn-add" + :theme :mockingbird :on-click (fn [_] (refx/dispatch [:app.dashboard/toggle-mock-modal]))} (d/svg {:width "16" :height "17" @@ -94,16 +99,16 @@ loading-mocks? (refx/use-sub [:app.dashboard/loading-mocks?])] (hooks/use-effect - [mocks] - (when (nil? mocks) - (refx/dispatch-sync [:app.dashboard/get-mocks current-user]))) + [mocks] + (when (nil? mocks) + (refx/dispatch-sync [:app.dashboard/get-mocks current-user]))) (hooks/use-effect - [mocks loading-mocks?] - (when (and (or (nil? mocks) - (empty? mocks)) - (not loading-mocks?)) - (refx/dispatch-sync [:app.dashboard/toggle-mock-modal]))) + [mocks loading-mocks?] + (when (and (or (nil? mocks) + (empty? mocks)) + (not loading-mocks?)) + (refx/dispatch-sync [:app.dashboard/toggle-mock-modal]))) ($ base/index (d/div {:class "flex flex-col lg:p-8"} diff --git a/src/front/app/dashboard/subs.cljs b/src/front/app/dashboard/subs.cljs index c94a45d3..f5fa3901 100644 --- a/src/front/app/dashboard/subs.cljs +++ b/src/front/app/dashboard/subs.cljs @@ -1,5 +1,6 @@ (ns front.app.dashboard.subs - (:require [refx.alpha :as refx])) + (:require + [refx.alpha :as refx])) (defn conj-if [xs & ys] (reduce (fn [xs y] diff --git a/src/front/app/dashboard/views.cljs b/src/front/app/dashboard/views.cljs index c24b9e80..4c8cbacd 100644 --- a/src/front/app/dashboard/views.cljs +++ b/src/front/app/dashboard/views.cljs @@ -1,25 +1,18 @@ (ns front.app.dashboard.views (:require - [front.app.dashboard.base :as base] - [front.app.components.messages :refer [default-message blogpost-message]] - [front.app.lib :refer [defnc]] - [helix.core :refer [$]] - [helix.dom :as d])) + [mockingbird.components.message :refer [message]] + [front.app.dashboard.base :as base] + [mockingbird.lib :refer-macros [defnc]] + [helix.core :refer [$]] + [helix.dom :as d])) (defnc welcome [] - ($ base/index - (d/main - ($ default-message + ($ base/index + (d/main + ($ message {:title "Welcome to moclojer beta" :email "avelino@moclojer.com" :author "Avelino" :image "/images/users/avatar.png" :image-style "rounded" :message ["I'm happy to have you here, we are launching the SaaS version of moclojer, seeking to make it simple for you to put a mock API in the air to develop your projects." "I look forward to your feedback (this is the only way we can improve the product)."]})))) - -(comment ($ blogpost-message - {:author "Avelino" - :email "avelino@moclojer.com" - :link "https://www.github.com" - :image "/images/users/avatar.png" - :image-style "default"})) diff --git a/src/front/app/routes/bookmarks.cljs b/src/front/app/routes/bookmarks.cljs index 0c7b09ec..8e632bb2 100644 --- a/src/front/app/routes/bookmarks.cljs +++ b/src/front/app/routes/bookmarks.cljs @@ -1,8 +1,9 @@ (ns front.app.routes.bookmarks - (:require [front.app.auth.views :as auth] - [front.app.dashboard.editor :as editor] - [front.app.dashboard.mocks :as mocks] - [front.app.dashboard.views :as d.views])) + (:require + [front.app.auth.views :as auth] + [front.app.dashboard.editor :as editor] + [front.app.dashboard.mocks :as mocks] + [front.app.dashboard.views :as d.views])) (def routes ["" diff --git a/src/front/app/routes/subs.cljs b/src/front/app/routes/subs.cljs index bd101272..70435240 100644 --- a/src/front/app/routes/subs.cljs +++ b/src/front/app/routes/subs.cljs @@ -1,5 +1,6 @@ (ns front.app.routes.subs - (:require [refx.alpha :as refx])) + (:require + [refx.alpha :as refx])) (refx/reg-sub :app.route/current-route diff --git a/src/front/css/tailwind.css b/src/front/css/tailwind.css index 45b44164..1f7d861b 100644 --- a/src/front/css/tailwind.css +++ b/src/front/css/tailwind.css @@ -159,7 +159,7 @@ } .fc .fc-today-button { - @apply rounded-lg border border-gray-200 bg-white text-sm font-medium px-4 py-2 text-gray-900 hover:bg-gray-100 hover:text-primary-700 focus:z-10 focus:ring-2 focus:ring-primary-700 focus:text-primary-700 !important; + @apply rounded-lg border border-gray-200 bg-white text-sm font-medium px-4 py-2 text-gray-900 hover:bg-gray-100 hover:text-gray-700 focus:z-10 focus:ring-2 focus:ring-gray-700 focus:text-gray-700 !important; } .fc-direction-ltr .fc-toolbar > * > :not(:first-child) { @@ -196,7 +196,7 @@ } .fc .fc-event .fc-event-main { - @apply p-2 bg-primary-700 hover:bg-primary-800 !important; + @apply p-2 bg-gray-700 hover:bg-gray-800 !important; } .fc .fc-h-event .fc-event-main-frame { diff --git a/tailwind.config.js b/tailwind.config.js index 3d287a9e..39b1aa4f 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -39,10 +39,13 @@ module.exports = { '9xl': ['8rem', { lineHeight: '1' }], }, extend: { - colors: { - primary: { "50": "#eff6ff", "100": "#dbeafe", "200": "#bfdbfe", "300": "#93c5fd", "400": "#60a5fa", "500": "#3b82f6", "600": "#2563eb", "700": "#1d4ed8", "800": "#1e40af", "900": "#1e3a8a" }, - red: {"50": "#fde8e8", "700": "#c81e1e"}, - green: {"50": "#def7ec", "700": "#046c4e"}, + colors: { + mockingbird: {"main": "#FF009E", "100": "#AA397F", "400":"#A9397E", "500": "#D42490", "600": "#e90562", "700": "#66003F", "text":"#55394A"}, + nightjar: {"main": "#E0D94A", "bg": "#36362C"}, + kiwi: {"main": "#7FE04A", "bg": "#2F362C"}, + warning: {"50": "#fde8e8", "900": "#F05252"}, + success: {"50": "#def7ec", "700": "#046c4e"}, + gray: { "700": "#808080", "800": "#5e5e5e" }, }, fontFamily: { 'sans': ['Inter', 'ui-sans-serif', 'system-ui', '-apple-system', 'system-ui', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', 'Noto Sans', 'sans-serif', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'], diff --git a/test/back/back/integration/api/add_org_user_test.clj b/test/back/back/integration/api/add_org_user_test.clj index b6d6a09e..af382e1a 100644 --- a/test/back/back/integration/api/add_org_user_test.clj +++ b/test/back/back/integration/api/add_org_user_test.clj @@ -26,21 +26,21 @@ (defn fcreate-org-user [org user] (flow - "should add an user to an organization" - [:let [req {:headers {"authorization" - (str "Bearer " - "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkY2ZmNGMwNi0" - "xYzllLTRhYmItYTQ5Yi00MzhlMTg2OWVjNWIifQ.Gd42M" - "G5EQCVvQwsvlhRQWHuEr-BBo4GB7Pd9di8w_No")} - :uri (str "/orgs/" (:org/id org) "/users") - :method :post - :body {:user-id (:customer/uuid user)}} - resp (helpers/request! req)]] - (match? - (matchers/embeds - {:status 200 - :body {:users [{:uuid (str (:customer/uuid user))}]}}) - resp))) + "should add an user to an organization" + [:let [req {:headers {"authorization" + (str "Bearer " + "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkY2ZmNGMwNi0" + "xYzllLTRhYmItYTQ5Yi00MzhlMTg2OWVjNWIifQ.Gd42M" + "G5EQCVvQwsvlhRQWHuEr-BBo4GB7Pd9di8w_No")} + :uri (str "/orgs/" (:org/id org) "/users") + :method :post + :body {:user-id (:customer/uuid user)}} + resp (helpers/request! req)]] + (match? + (matchers/embeds + {:status 200 + :body {:users [{:uuid (str (:customer/uuid user))}]}}) + resp))) (defflow flow-add-org-user @@ -48,16 +48,16 @@ :cleanup utils/stop-system! :fail-fast? true} (flow - "" - [:let [user #:customer{:uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :email "test@gmail.com" - :username "foobar123" - :external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - org #:org{:id #uuid "d50f35a1-cba2-4d62-88aa-0c3df71c410c" - :slug "my-org-d50f35a1" - :orgname "my-org"}] - {:keys [database]} (state-flow.api/get-state)] - (state/invoke #(db.customers/insert! user database)) - (state/invoke #(db.orgs/insert! org database)) + "" + [:let [user #:customer{:uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :email "test@gmail.com" + :username "foobar123" + :external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + org #:org{:id #uuid "d50f35a1-cba2-4d62-88aa-0c3df71c410c" + :slug "my-org-d50f35a1" + :orgname "my-org"}] + {:keys [database]} (state-flow.api/get-state)] + (state/invoke #(db.customers/insert! user database)) + (state/invoke #(db.orgs/insert! org database)) - (fcreate-org-user org user))) + (fcreate-org-user org user))) diff --git a/test/back/back/integration/api/create_conflicting_mock_test.clj b/test/back/back/integration/api/create_conflicting_mock_test.clj index 10f4f0d4..14e505ce 100644 --- a/test/back/back/integration/api/create_conflicting_mock_test.clj +++ b/test/back/back/integration/api/create_conflicting_mock_test.clj @@ -40,28 +40,28 @@ (defn fcreate-conflicting-mocks [] (flow - "should block creation of conflicting mocks" - [:let [req (merge (:base-req flow-consts) - {:method :post - :body (:mock flow-consts)}) - fst-exp-body {:mock (merge (:mock flow-consts) - {:id string? - :user-id string?})} - snd-exp-body {:error {:message string? - :cause "invalid-wildcard" - :value (:mock fst-exp-body)}}] - fst-resp (helpers/request! req) - snd-resp (helpers/request! req)] - (match? - (matchers/embeds {:status 201 :body (update-in fst-exp-body - [:mock] - merge - {:dns-status "offline" - :unification-status "offline"})}) - fst-resp) - (match? - (matchers/embeds {:status 412 :body snd-exp-body}) - snd-resp))) + "should block creation of conflicting mocks" + [:let [req (merge (:base-req flow-consts) + {:method :post + :body (:mock flow-consts)}) + fst-exp-body {:mock (merge (:mock flow-consts) + {:id string? + :user-id string?})} + snd-exp-body {:error {:message string? + :cause "invalid-wildcard" + :value (:mock fst-exp-body)}}] + fst-resp (helpers/request! req) + snd-resp (helpers/request! req)] + (match? + (matchers/embeds {:status 201 :body (update-in fst-exp-body + [:mock] + merge + {:dns-status "offline" + :unification-status "offline"})}) + fst-resp) + (match? + (matchers/embeds {:status 412 :body snd-exp-body}) + snd-resp))) (defflow flow-create-conflicting-mock @@ -69,7 +69,7 @@ :cleanup utils/stop-system! :fail-fast? true} (flow - "will try to create two conflicting mocks" - [db (state-flow.api/get-state :database)] - (state/invoke #(db.customers/insert! (:user flow-consts) db)) - (fcreate-conflicting-mocks))) + "will try to create two conflicting mocks" + [db (state-flow.api/get-state :database)] + (state/invoke #(db.customers/insert! (:user flow-consts) db)) + (fcreate-conflicting-mocks))) diff --git a/test/back/back/integration/api/create_mock_test.clj b/test/back/back/integration/api/create_mock_test.clj index 97cd89a5..66835d1c 100644 --- a/test/back/back/integration/api/create_mock_test.clj +++ b/test/back/back/integration/api/create_mock_test.clj @@ -33,45 +33,45 @@ :fail-fast? true} (flow "" - [database (state-flow.api/get-state :database)] + [database (state-flow.api/get-state :database)] - (state/invoke - #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/username "chico" - :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - database)) + (state/invoke + #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/username "chico" + :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + database)) - (flow "it will send a mock" - [resp (helpers/request! {:method :post - :headers {"authorization" token} - :uri "/mocks" - :body {:subdomain "chico" - :wildcard "test" - :enabled true}})] - (match? - (matchers/embeds {:status 201 - :body {:mock {:subdomain "chico" - :id string? - :wildcard "test" - :user-id "cd989358-af38-4a2f-a1a1-88096aa425a7" - :enabled true - :dns-status "offline" - :unification-status "offline"}}}) - resp) - (flow "retrieve the mock" - [resp-get (helpers/request! {:method :get - :headers {"authorization" token} - :uri "/mocks" - :body {}})] - (match? - (matchers/embeds {:mocks [{:subdomain "chico" - :mock-type "personal" - :apis [{:id #(uuid? (java.util.UUID/fromString %)) - :url "test-chico.moclojer.com" - :subdomain "chico" - :wildcard "test" - :enabled true - :dns-status "offline" - :unification-status "offline"}]}]}) - (-> resp-get :body)))))) + (flow "it will send a mock" + [resp (helpers/request! {:method :post + :headers {"authorization" token} + :uri "/mocks" + :body {:subdomain "chico" + :wildcard "test" + :enabled true}})] + (match? + (matchers/embeds {:status 201 + :body {:mock {:subdomain "chico" + :id string? + :wildcard "test" + :user-id "cd989358-af38-4a2f-a1a1-88096aa425a7" + :enabled true + :dns-status "offline" + :unification-status "offline"}}}) + resp) + (flow "retrieve the mock" + [resp-get (helpers/request! {:method :get + :headers {"authorization" token} + :uri "/mocks" + :body {}})] + (match? + (matchers/embeds {:mocks [{:subdomain "chico" + :mock-type "personal" + :apis [{:id #(uuid? (java.util.UUID/fromString %)) + :url "test-chico.moclojer.com" + :subdomain "chico" + :wildcard "test" + :enabled true + :dns-status "offline" + :unification-status "offline"}]}]}) + (-> resp-get :body)))))) diff --git a/test/back/back/integration/api/create_org_test.clj b/test/back/back/integration/api/create_org_test.clj index 527b367c..20ba900f 100644 --- a/test/back/back/integration/api/create_org_test.clj +++ b/test/back/back/integration/api/create_org_test.clj @@ -25,22 +25,22 @@ (defn fcreate-org [user] (flow - "should create an organization" - [:let [org {:orgname "test-123"} - req {:headers {"authorization" - (str "Bearer " - "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkY2ZmNGMwNi0" - "xYzllLTRhYmItYTQ5Yi00MzhlMTg2OWVjNWIifQ.Gd42M" - "G5EQCVvQwsvlhRQWHuEr-BBo4GB7Pd9di8w_No")} - :uri "/orgs" - :method :post - :body {:org org}} - resp (helpers/request! req)]] - (match? - (matchers/embeds - {:status 201 - :body {:org (assoc org :users [{:uuid (str (:customer/uuid user))}])}}) - resp))) + "should create an organization" + [:let [org {:orgname "test-123"} + req {:headers {"authorization" + (str "Bearer " + "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkY2ZmNGMwNi0" + "xYzllLTRhYmItYTQ5Yi00MzhlMTg2OWVjNWIifQ.Gd42M" + "G5EQCVvQwsvlhRQWHuEr-BBo4GB7Pd9di8w_No")} + :uri "/orgs" + :method :post + :body {:org org}} + resp (helpers/request! req)]] + (match? + (matchers/embeds + {:status 201 + :body {:org (assoc org :users [{:uuid (str (:customer/uuid user))}])}}) + resp))) (defflow flow-create-org @@ -48,11 +48,11 @@ :cleanup utils/stop-system! :fail-fast? true} (flow - "" - [:let [user #:customer{:uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :email "test@gmail.com" - :username "foobar123" - :external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"}] - {:keys [database]} (state-flow.api/get-state)] - (state/invoke #(db.customers/insert! user database)) - (fcreate-org user))) + "" + [:let [user #:customer{:uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :email "test@gmail.com" + :username "foobar123" + :external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"}] + {:keys [database]} (state-flow.api/get-state)] + (state/invoke #(db.customers/insert! user database)) + (fcreate-org user))) diff --git a/test/back/back/integration/api/customer_test.clj b/test/back/back/integration/api/customer_test.clj index dd2fdf76..c871e3ba 100644 --- a/test/back/back/integration/api/customer_test.clj +++ b/test/back/back/integration/api/customer_test.clj @@ -31,38 +31,38 @@ :fail-fast? true} (flow "setup a customer" - [database (state-flow.api/get-state :database)] + [database (state-flow.api/get-state :database)] - (state/invoke - #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - database)) + (state/invoke + #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + database)) - (flow "send the username to be added" - [resp (helpers/request! {:method :post - :headers {"authorization" token} - :uri "/user/cd989358-af38-4a2f-a1a1-88096aa425a7" - :body {:username "chico"}})] - (match? - (matchers/embeds {:status 200 - :body {:user {:username "chico" - :email "test@gmail.com" - :uuid "cd989358-af38-4a2f-a1a1-88096aa425a7"}}}) - resp)) + (flow "send the username to be added" + [resp (helpers/request! {:method :post + :headers {"authorization" token} + :uri "/user/cd989358-af38-4a2f-a1a1-88096aa425a7" + :body {:username "chico"}})] + (match? + (matchers/embeds {:status 200 + :body {:user {:username "chico" + :email "test@gmail.com" + :uuid "cd989358-af38-4a2f-a1a1-88096aa425a7"}}}) + resp)) - (flow "setup new customer" - (state/invoke - #(db.customers/insert! {:customer/uuid #uuid "cd989351-af31-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/external-uuid #uuid "dcf34306-1c9e-4abb-a49b-438e1869ec5b"} - database))) + (flow "setup new customer" + (state/invoke + #(db.customers/insert! {:customer/uuid #uuid "cd989351-af31-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/external-uuid #uuid "dcf34306-1c9e-4abb-a49b-438e1869ec5b"} + database))) - (flow "retrieve user by external id" - [resp (helpers/request! {:method :get - :headers {"authorization" token} - :uri "/user-external"})] - (match? - (matchers/embeds {:status 200 - :body {:user {:email "test@gmail.com"}}}) - resp)))) + (flow "retrieve user by external id" + [resp (helpers/request! {:method :get + :headers {"authorization" token} + :uri "/user-external"})] + (match? + (matchers/embeds {:status 200 + :body {:user {:email "test@gmail.com"}}}) + resp)))) diff --git a/test/back/back/integration/api/db/customers_test.clj b/test/back/back/integration/api/db/customers_test.clj index aab1df6c..7cf57805 100644 --- a/test/back/back/integration/api/db/customers_test.clj +++ b/test/back/back/integration/api/db/customers_test.clj @@ -20,29 +20,29 @@ :fail-fast? true} (flow "create a user in the database" - [database (state-flow.api/get-state :database)] + [database (state-flow.api/get-state :database)] - (state/invoke - #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - database)) + (state/invoke + #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + database)) - (flow "then get by external id" - (match? {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/external_uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - (db.customers/get-by-external-id #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b" database))) + (flow "then get by external id" + (match? {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/external_uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + (db.customers/get-by-external-id #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b" database))) - (flow "then get the user from db" - (match? [{:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/external_uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"}] - (db.customers/get-customers database))) + (flow "then get the user from db" + (match? [{:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/external_uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"}] + (db.customers/get-customers database))) - (flow "get a invalid id from db return nil" - (match? nil - (db.customers/get-by-external-id (java.util.UUID/randomUUID) database))))) + (flow "get a invalid id from db return nil" + (match? nil + (db.customers/get-by-external-id (java.util.UUID/randomUUID) database))))) (defflow flow-db-update-username-test {:init (utils/start-system! create-and-start-components) @@ -50,25 +50,25 @@ :fail-fast? true} (flow "create a user in the database" - [database (state-flow.api/get-state :database)] + [database (state-flow.api/get-state :database)] - (state/invoke - #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - database)) + (state/invoke + #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + database)) - (flow "then update the username" - (state/invoke - #(db.customers/update! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/username "chico" - :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - database)) + (flow "then update the username" + (state/invoke + #(db.customers/update! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/username "chico" + :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + database)) - (flow "get user by id" - (match? {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/username "chico" - :customer/external_uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - (db.customers/get-by-external-id #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b" database)))))) + (flow "get user by id" + (match? {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/username "chico" + :customer/external_uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + (db.customers/get-by-external-id #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b" database)))))) diff --git a/test/back/back/integration/api/db/get_username_test.clj b/test/back/back/integration/api/db/get_username_test.clj index 70eacd90..403125e8 100644 --- a/test/back/back/integration/api/db/get_username_test.clj +++ b/test/back/back/integration/api/db/get_username_test.clj @@ -21,23 +21,23 @@ (flow "get username" - [database (state-flow.api/get-state :database)] + [database (state-flow.api/get-state :database)] - (state/invoke - #(db.customers/insert! - {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b" - :customer/username "chico"} - database)) + (state/invoke + #(db.customers/insert! + {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b" + :customer/username "chico"} + database)) - (flow "get by username" - (match? {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/username "chico" - :customer/external_uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - (db.customers/get-by-username "chico" database))) + (flow "get by username" + (match? {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/username "chico" + :customer/external_uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + (db.customers/get-by-username "chico" database))) - (flow "get by username" - (match? nil - (db.customers/get-by-username "chicoo" database))))) + (flow "get by username" + (match? nil + (db.customers/get-by-username "chicoo" database))))) diff --git a/test/back/back/integration/api/db/mocks_test.clj b/test/back/back/integration/api/db/mocks_test.clj index 5262fd30..086c77eb 100644 --- a/test/back/back/integration/api/db/mocks_test.clj +++ b/test/back/back/integration/api/db/mocks_test.clj @@ -21,34 +21,34 @@ :fail-fast? true} (flow "save a mock in the database" - [database (state-flow.api/get-state :database)] - - (state/invoke - #(db.customers/insert! {:customer/uuid #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :customer/external_uuid #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :customer/username "chico" - :customer/email "chico@gmail.com"} + [database (state-flow.api/get-state :database)] + + (state/invoke + #(db.customers/insert! {:customer/uuid #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :customer/external_uuid #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :customer/username "chico" + :customer/email "chico@gmail.com"} + database)) + + (state/invoke + #(db.mocks/insert! {:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" + :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :mock/wildcard "test" + :mock/subdomain "chico" + :mock/enabled true + :mock/dns_status "offline" + :mock/unification_status "offline"} database)) - (state/invoke - #(db.mocks/insert! {:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" - :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :mock/wildcard "test" - :mock/subdomain "chico" - :mock/enabled true - :mock/dns_status "offline" - :mock/unification_status "offline"} - database)) - - (flow "then get by uuid" - (match? [{:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" - :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :mock/subdomain "chico" - :mock/wildcard "test" - :mock/enabled true - :mock/dns_status "offline" - :mock/unification_status "offline"}] - (db.mocks/get-mocks #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" database))))) + (flow "then get by uuid" + (match? [{:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" + :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :mock/subdomain "chico" + :mock/wildcard "test" + :mock/enabled true + :mock/dns_status "offline" + :mock/unification_status "offline"}] + (db.mocks/get-mocks #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" database))))) (defflow flow-db-get-mock-by-id {:init (utils/start-system! create-and-start-components) @@ -56,36 +56,36 @@ :fail-fast? true} (flow "save a mock in the database" - [database (state-flow.api/get-state :database)] - - (state/invoke - #(db.customers/insert! {:customer/uuid #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :customer/external_uuid #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :customer/username "chico" - :customer/email "chico@gmail.com"} + [database (state-flow.api/get-state :database)] + + (state/invoke + #(db.customers/insert! {:customer/uuid #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :customer/external_uuid #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :customer/username "chico" + :customer/email "chico@gmail.com"} + database)) + + (state/invoke + #(db.mocks/insert! {:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" + :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :mock/wildcard "test" + :mock/subdomain "chico" + :mock/enabled true + :mock/dns_status "offline" + :mock/unification_status "offline"} database)) - (state/invoke - #(db.mocks/insert! {:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" - :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :mock/wildcard "test" - :mock/subdomain "chico" - :mock/enabled true - :mock/dns_status "offline" - :mock/unification_status "offline"} - database)) - - (flow "then get by uuid" - (match? {:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" - :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :mock/subdomain "chico" - :mock/wildcard "test" - :mock/enabled true - :mock/dns_status "offline" - :mock/unification_status "offline"} - (db.mocks/get-mock-by-id - #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" - database))))) + (flow "then get by uuid" + (match? {:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" + :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :mock/subdomain "chico" + :mock/wildcard "test" + :mock/enabled true + :mock/dns_status "offline" + :mock/unification_status "offline"} + (db.mocks/get-mock-by-id + #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" + database))))) (defflow flow-db-update-mock-by-id {:init (utils/start-system! create-and-start-components) @@ -93,40 +93,40 @@ :fail-fast? true} (flow "save a mock in the database" - [database (state-flow.api/get-state :database)] - - (state/invoke - #(db.customers/insert! {:customer/uuid #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :customer/external_uuid #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :customer/username "chico" - :customer/email "chico@gmail.com"} + [database (state-flow.api/get-state :database)] + + (state/invoke + #(db.customers/insert! {:customer/uuid #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :customer/external_uuid #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :customer/username "chico" + :customer/email "chico@gmail.com"} + database)) + + (state/invoke + #(db.mocks/insert! {:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" + :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :mock/wildcard "test" + :mock/subdomain "chico" + :mock/enabled true + :mock/dns_status "offline" + :mock/unification_status "offline"} database)) - (state/invoke - #(db.mocks/insert! {:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" - :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :mock/wildcard "test" - :mock/subdomain "chico" - :mock/enabled true - :mock/dns_status "offline" - :mock/unification_status "offline"} - database)) - - (flow "then get by uuid" - (match? {:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" - :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :mock/subdomain "chico" - :mock/wildcard "test" - :mock/content "chico string content" - :mock/enabled true - :mock/dns_status "offline" - :mock/unification_status "offline"} - (db.mocks/update! {:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" - :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" - :mock/wildcard "test" - :mock/content "chico string content" - :mock/subdomain "chico" - :mock/enabled true - :mock/dns_status "offline" - :mock/unification_status "offline"} - database))))) + (flow "then get by uuid" + (match? {:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" + :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :mock/subdomain "chico" + :mock/wildcard "test" + :mock/content "chico string content" + :mock/enabled true + :mock/dns_status "offline" + :mock/unification_status "offline"} + (db.mocks/update! {:mock/id #uuid "41571d31-d9c2-4216-b6f6-d3c7bcc27570" + :mock/user_id #uuid "916d0b8b-af1b-4178-8aa1-0531c582dcd1" + :mock/wildcard "test" + :mock/content "chico string content" + :mock/subdomain "chico" + :mock/enabled true + :mock/dns_status "offline" + :mock/unification_status "offline"} + database))))) diff --git a/test/back/back/integration/api/delete_mock_test.clj b/test/back/back/integration/api/delete_mock_test.clj index 4639f185..5f9b1813 100644 --- a/test/back/back/integration/api/delete_mock_test.clj +++ b/test/back/back/integration/api/delete_mock_test.clj @@ -43,51 +43,51 @@ (defn fcheck-mock-deletion-mq [{:keys [id user-id]}] (flow - "should have published a :mock.deleted event" - [deleted-evt (state/invoke - #(second (get @mq/mock-channels "mock.deleted")))] - (match? - (matchers/embeds {:event {:yml.single.delete {:mock-id (parse-uuid id) - :owner-id user-id}}}) - (update-in deleted-evt [:yml.single.delete] dissoc :ctx)))) + "should have published a :mock.deleted event" + [deleted-evt (state/invoke + #(second (get @mq/mock-channels "mock.deleted")))] + (match? + (matchers/embeds {:event {:yml.single.delete {:mock-id (parse-uuid id) + :owner-id user-id}}}) + (update-in deleted-evt [:yml.single.delete] dissoc :ctx)))) (defn fcheck-mock-deletion-storage [{:keys [id user-id]}] (flow - "should have deleted mock from storage" - [:let [file-path (str user-id "/" id "/mock.yml")] - strg (state-flow.api/get-state :storage) - mock-file (state/invoke #(storage/get-file strg "moclojer" file-path))] - (match? nil mock-file))) + "should have deleted mock from storage" + [:let [file-path (str user-id "/" id "/mock.yml")] + strg (state-flow.api/get-state :storage) + mock-file (state/invoke #(storage/get-file strg "moclojer" file-path))] + (match? nil mock-file))) (defn fdelete-mock [id] (flow - "should delete given mock" - [:let [req (merge (:base-req flow-consts) - {:method :delete - :body {:id id}})] - resp (helpers/request! req)] - (match? - (matchers/embeds {:status 200 :body empty?}) - resp) - [:let [mock {:id id - :user-id (get-in flow-consts [:user :customer/uuid])}]] - (fcheck-mock-deletion-mq mock) - (fcheck-mock-deletion-storage mock))) + "should delete given mock" + [:let [req (merge (:base-req flow-consts) + {:method :delete + :body {:id id}})] + resp (helpers/request! req)] + (match? + (matchers/embeds {:status 200 :body empty?}) + resp) + [:let [mock {:id id + :user-id (get-in flow-consts [:user :customer/uuid])}]] + (fcheck-mock-deletion-mq mock) + (fcheck-mock-deletion-storage mock))) (defn fcreate-mock [] (flow - "should create a mock" - [:let [req (merge (:base-req flow-consts) - {:method :post - :body (:mock flow-consts)}) - exp-body {:mock (merge (:mock flow-consts) - {:id string? - :user-id string?})}] - resp (helpers/request! req)] - (match? - (matchers/embeds {:status 201 :body exp-body}) - resp) - (fdelete-mock (get-in resp [:body :mock :id])))) + "should create a mock" + [:let [req (merge (:base-req flow-consts) + {:method :post + :body (:mock flow-consts)}) + exp-body {:mock (merge (:mock flow-consts) + {:id string? + :user-id string?})}] + resp (helpers/request! req)] + (match? + (matchers/embeds {:status 201 :body exp-body}) + resp) + (fdelete-mock (get-in resp [:body :mock :id])))) (defflow flow-delete-mock @@ -95,7 +95,7 @@ :cleanup utils/stop-system! :fail-fast? true} (flow - "should create and delete mock" - [db (state-flow.api/get-state :database)] - (state/invoke #(db.customers/insert! (:user flow-consts) db)) - (fcreate-mock))) + "should create and delete mock" + [db (state-flow.api/get-state :database)] + (state/invoke #(db.customers/insert! (:user flow-consts) db)) + (fcreate-mock))) diff --git a/test/back/back/integration/api/healthcheck_test.clj b/test/back/back/integration/api/healthcheck_test.clj index c2a3e4e3..bb839cd9 100644 --- a/test/back/back/integration/api/healthcheck_test.clj +++ b/test/back/back/integration/api/healthcheck_test.clj @@ -27,8 +27,8 @@ :fail-fast? true} (flow "makes a healthcheck request" - (match? (matchers/embeds {:status 200 - :body {:data {:content "Live api"}}}) - (helpers/request! {:method :get - :uri "/healthcheck" - :body {}})))) + (match? (matchers/embeds {:status 200 + :body {:data {:content "Live api"}}}) + (helpers/request! {:method :get + :uri "/healthcheck" + :body {}})))) diff --git a/test/back/back/integration/api/helpers.clj b/test/back/back/integration/api/helpers.clj index 35af76b7..9a82e090 100644 --- a/test/back/back/integration/api/helpers.clj +++ b/test/back/back/integration/api/helpers.clj @@ -19,17 +19,17 @@ (defn request! [{:keys [method uri body headers]}] (flow "makes http request" - [service-fn (state-flow.api/get-state (comp :io.pedestal.http/service-fn :webserver :webserver))] - (-> service-fn - (do-request method uri body headers) - parsed-response - state-flow.api/return))) + [service-fn (state-flow.api/get-state (comp :io.pedestal.http/service-fn :webserver :webserver))] + (-> service-fn + (do-request method uri body headers) + parsed-response + state-flow.api/return))) (defn request-moclojer! [{:keys [method uri body headers]}] (flow "makes http request" - [service-fn (state-flow.api/get-state (comp :io.pedestal.http/service-fn :server :moclojer :moclojer))] - (-> service-fn - (do-request method uri body headers) - parsed-response - state-flow.api/return))) + [service-fn (state-flow.api/get-state (comp :io.pedestal.http/service-fn :server :moclojer :moclojer))] + (-> service-fn + (do-request method uri body headers) + parsed-response + state-flow.api/return))) diff --git a/test/back/back/integration/api/update_mock_test.clj b/test/back/back/integration/api/update_mock_test.clj index 813f40fc..5cb013c3 100644 --- a/test/back/back/integration/api/update_mock_test.clj +++ b/test/back/back/integration/api/update_mock_test.clj @@ -49,73 +49,73 @@ :cleanup utils/stop-system! :fail-fast? true} (flow "" - [database (state-flow.api/get-state :database)] + [database (state-flow.api/get-state :database)] - (state/invoke - #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/username "chico" - :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - database)) + (state/invoke + #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/username "chico" + :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + database)) - (flow "it will send a mock and save it" - [resp (helpers/request! {:method :post - :headers {"authorization" token} - :uri "/mocks" - :body {:subdomain "chico" - :wildcard "test" - :enabled true}})] - (match? - (matchers/embeds {:status 201 - :body {:mock {:subdomain "chico" - :id string? - :wildcard "test" - :user-id "cd989358-af38-4a2f-a1a1-88096aa425a7" - :enabled true - :dns-status "offline" - :unification-status "offline"}}}) - resp) - (flow "then will update the content" - [resp-get (helpers/request! {:method :put - :headers {"authorization" token} - :uri "/mocks" - :body {:id (-> resp :body :mock :id str) - :content yml}})] - - (match? - (matchers/embeds {:mock {:id #(uuid? (java.util.UUID/fromString %)) - :subdomain "chico" - :wildcard "test" - :content yml - :user-id "cd989358-af38-4a2f-a1a1-88096aa425a7" - :enabled true - :dns-status "offline" - :unification-status "offline"}}) - (-> resp-get :body)) - - (flow "then retreive all mocks" - [resp-get (helpers/request! {:method :get + (flow "it will send a mock and save it" + [resp (helpers/request! {:method :post :headers {"authorization" token} :uri "/mocks" - :body {}})] - (match? - (matchers/embeds {:mocks [{:subdomain "chico" - :mock-type "personal" - :apis [{:id #(uuid? (java.util.UUID/fromString %)) + :body {:subdomain "chico" + :wildcard "test" + :enabled true}})] + (match? + (matchers/embeds {:status 201 + :body {:mock {:subdomain "chico" + :id string? + :wildcard "test" + :user-id "cd989358-af38-4a2f-a1a1-88096aa425a7" + :enabled true + :dns-status "offline" + :unification-status "offline"}}}) + resp) + (flow "then will update the content" + [resp-get (helpers/request! {:method :put + :headers {"authorization" token} + :uri "/mocks" + :body {:id (-> resp :body :mock :id str) + :content yml}})] + + (match? + (matchers/embeds {:mock {:id #(uuid? (java.util.UUID/fromString %)) :subdomain "chico" - :url "test-chico.moclojer.com" - :content yml :wildcard "test" + :content yml + :user-id "cd989358-af38-4a2f-a1a1-88096aa425a7" :enabled true :dns-status "offline" - :unification-status "offline"}]}]}) - (-> resp-get :body))) + :unification-status "offline"}}) + (-> resp-get :body)) + + (flow "then retreive all mocks" + [resp-get (helpers/request! {:method :get + :headers {"authorization" token} + :uri "/mocks" + :body {}})] + (match? + (matchers/embeds {:mocks [{:subdomain "chico" + :mock-type "personal" + :apis [{:id #(uuid? (java.util.UUID/fromString %)) + :subdomain "chico" + :url "test-chico.moclojer.com" + :content yml + :wildcard "test" + :enabled true + :dns-status "offline" + :unification-status "offline"}]}]}) + (-> resp-get :body))) - (flow "should have publish a mock calling mq" - (match? - (matchers/embeds - {:event - {:yml.single.generate - {:mock-id (-> resp-get :body :mock :id parse-uuid)}}}) - (update-in (second (get @mq/mock-channels "mock.updated")) - [:event :yml.single.generate] dissoc :ctx))))))) + (flow "should have publish a mock calling mq" + (match? + (matchers/embeds + {:event + {:yml.single.generate + {:mock-id (-> resp-get :body :mock :id parse-uuid)}}}) + (update-in (second (get @mq/mock-channels "mock.updated")) + [:event :yml.single.generate] dissoc :ctx))))))) diff --git a/test/back/back/integration/api/username_is_available_test.clj b/test/back/back/integration/api/username_is_available_test.clj index 64006174..8ff14046 100644 --- a/test/back/back/integration/api/username_is_available_test.clj +++ b/test/back/back/integration/api/username_is_available_test.clj @@ -31,29 +31,29 @@ :fail-fast? true} (flow "setup a customer" - [database (state-flow.api/get-state :database)] + [database (state-flow.api/get-state :database)] - (state/invoke - #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/username "chico" - :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - database)) + (state/invoke + #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/username "chico" + :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + database)) - (flow "check if username is available" - [resp (helpers/request! {:method :get - :headers {"authorization" token} - :uri "/user/username/chico"})] - (match? - (matchers/embeds {:status 200 - :body {:available false}}) - resp)) + (flow "check if username is available" + [resp (helpers/request! {:method :get + :headers {"authorization" token} + :uri "/user/username/chico"})] + (match? + (matchers/embeds {:status 200 + :body {:available false}}) + resp)) - (flow "username is available" - [resp (helpers/request! {:method :get - :headers {"authorization" token} - :uri "/user/username/test"})] - (match? - (matchers/embeds {:status 200 - :body {:available true}}) - resp)))) + (flow "username is available" + [resp (helpers/request! {:method :get + :headers {"authorization" token} + :uri "/user/username/test"})] + (match? + (matchers/embeds {:status 200 + :body {:available true}}) + resp)))) diff --git a/test/back/back/integration/cloud_ops/create_domain_test.clj b/test/back/back/integration/cloud_ops/create_domain_test.clj index ac74ffb4..8d257f48 100644 --- a/test/back/back/integration/cloud_ops/create_domain_test.clj +++ b/test/back/back/integration/cloud_ops/create_domain_test.clj @@ -60,24 +60,24 @@ (defn fcreate-domain [domain] (flow - "should create domain" - [components (state-flow.api/get-state)] - (state/invoke - #(workers/create-domain-handler {:event {:domain.create {:domain domain}}} - components)) + "should create domain" + [components (state-flow.api/get-state)] + (state/invoke + #(workers/create-domain-handler {:event {:domain.create {:domain domain}}} + components)) - (match? - (matchers/embeds {:event {:domain domain - :new-status "publishing"}}) - (update-in (first (get @mq/mock-channels "domain.updated")) - [:event] dissoc :ctx)) + (match? + (matchers/embeds {:event {:domain domain + :new-status "publishing"}}) + (update-in (first (get @mq/mock-channels "domain.updated")) + [:event] dissoc :ctx)) - (match? - (matchers/embeds {:event {:domain domain - :retrying? true - :skip-data? false}}) - (update-in (first (get @mq/mock-channels "domain.verification.dispatched")) - [:event] dissoc :ctx)))) + (match? + (matchers/embeds {:event {:domain domain + :retrying? true + :skip-data? false}}) + (update-in (first (get @mq/mock-channels "domain.verification.dispatched")) + [:event] dissoc :ctx)))) (defflow flow-create-domain diff --git a/test/back/back/integration/cloud_ops/fail_create_domain_test.clj b/test/back/back/integration/cloud_ops/fail_create_domain_test.clj index c371b25c..67311c82 100644 --- a/test/back/back/integration/cloud_ops/fail_create_domain_test.clj +++ b/test/back/back/integration/cloud_ops/fail_create_domain_test.clj @@ -39,13 +39,13 @@ :cleanup utils/stop-system! :fail-fast? true} (sf/flow - "should fail to create cloudflare record" - [components (sf/get-state) - err-url (sf/invoke #(try - (workers/create-domain-handler - {:event {:domain.create {:domain "test-j0suetm"}}} - components) - (catch Throwable e - (-> e ex-data :req :url))))] - (sf/match? "https://api.cloudflare.com/client/v4/zones/c6f10cf4dd7ace4b979d60c22066be23/dns_records" - err-url))) + "should fail to create cloudflare record" + [components (sf/get-state) + err-url (sf/invoke #(try + (workers/create-domain-handler + {:event {:domain.create {:domain "test-j0suetm"}}} + components) + (catch Throwable e + (-> e ex-data :req :url))))] + (sf/match? "https://api.cloudflare.com/client/v4/zones/c6f10cf4dd7ace4b979d60c22066be23/dns_records" + err-url))) diff --git a/test/back/back/integration/cloud_ops/fail_retrieve_data_test.clj b/test/back/back/integration/cloud_ops/fail_retrieve_data_test.clj index cd187ba0..dc6d48b7 100644 --- a/test/back/back/integration/cloud_ops/fail_retrieve_data_test.clj +++ b/test/back/back/integration/cloud_ops/fail_retrieve_data_test.clj @@ -23,13 +23,13 @@ :cleanup utils/stop-system! :fail-fast? true} (sf/flow - "should fail to retrieve current cloudflare records" - [components (sf/get-state) - err-url (sf/invoke #(try - (workers/create-domain-handler - {:event {:domain.create {:domain "test-j0suetm"}}} - components) - (catch Throwable e - (-> e ex-data :req :url))))] - (sf/match? "https://api.cloudflare.com/client/v4/zones/c6f10cf4dd7ace4b979d60c22066be23/dns_records" - err-url))) + "should fail to retrieve current cloudflare records" + [components (sf/get-state) + err-url (sf/invoke #(try + (workers/create-domain-handler + {:event {:domain.create {:domain "test-j0suetm"}}} + components) + (catch Throwable e + (-> e ex-data :req :url))))] + (sf/match? "https://api.cloudflare.com/client/v4/zones/c6f10cf4dd7ace4b979d60c22066be23/dns_records" + err-url))) diff --git a/test/back/back/integration/components/utils.clj b/test/back/back/integration/components/utils.clj index 36e71445..aebbb588 100644 --- a/test/back/back/integration/components/utils.clj +++ b/test/back/back/integration/components/utils.clj @@ -8,7 +8,7 @@ (defn start-system! [system-start-fn] (fn [] - (logs/setup :info :auto :dev) + #_(logs/setup :info :auto :dev) (pg-emb/init-pg) (migrations/migrate (migrations/build-complete-db-config "back/config.edn")) (system-start-fn))) diff --git a/test/back/back/integration/yaml_generator/mock_validation_test.clj b/test/back/back/integration/yaml_generator/mock_validation_test.clj index 8908680b..fb6904df 100644 --- a/test/back/back/integration/yaml_generator/mock_validation_test.clj +++ b/test/back/back/integration/yaml_generator/mock_validation_test.clj @@ -39,40 +39,40 @@ (defn fblock-invalid-yaml [] (flow "" - [:let [mock-id (random-uuid)] - database (state-flow.api/get-state :database)] - (state/invoke - #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/username "chico" - :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - database)) + [:let [mock-id (random-uuid)] + database (state-flow.api/get-state :database)] + (state/invoke + #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/username "chico" + :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + database)) - (state/invoke #(db.mocks/insert! - {:mock/subdomain "chico" - :mock/id mock-id - :mock/content invalid-mock-yaml - :mock/wildcard "test" - :mock/user_id #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :mock/enabled true - :mock/dns_status "offline" - :mock/unification_status "offline"} - database)) - (flow - "should block invalid yaml" - [components (state-flow.api/get-state)] - (state/invoke - #(workers/generate-single-yml-handler - {:event - {:yml.single.generate {:mock-id mock-id}}} - components)) - (match? - (matchers/embeds {:event - {:mock.unification-status - {:mock-id mock-id - :new-status "offline-invalid"}}}) - (update-in (first (get @mq/mock-channels "yml.unified.generated")) - [:event :mock.unification-status] dissoc :ctx))))) + (state/invoke #(db.mocks/insert! + {:mock/subdomain "chico" + :mock/id mock-id + :mock/content invalid-mock-yaml + :mock/wildcard "test" + :mock/user_id #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :mock/enabled true + :mock/dns_status "offline" + :mock/unification_status "offline"} + database)) + (flow + "should block invalid yaml" + [components (state-flow.api/get-state)] + (state/invoke + #(workers/generate-single-yml-handler + {:event + {:yml.single.generate {:mock-id mock-id}}} + components)) + (match? + (matchers/embeds {:event + {:mock.unification-status + {:mock-id mock-id + :new-status "offline-invalid"}}}) + (update-in (first (get @mq/mock-channels "yml.unified.generated")) + [:event :mock.unification-status] dissoc :ctx))))) (def valid-mock-yaml "- endpoint: @@ -93,40 +93,40 @@ (defn fallow-valid-yaml [] (flow "" - [:let [mock-id (random-uuid)] - database (state-flow.api/get-state :database)] - (state/invoke - #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :customer/email "test@gmail.com" - :customer/username "chico" - :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} - database)) + [:let [mock-id (random-uuid)] + database (state-flow.api/get-state :database)] + (state/invoke + #(db.customers/insert! {:customer/uuid #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :customer/email "test@gmail.com" + :customer/username "chico" + :customer/external-uuid #uuid "dcff4c06-1c9e-4abb-a49b-438e1869ec5b"} + database)) - (state/invoke #(db.mocks/insert! - {:mock/subdomain "chico" - :mock/id mock-id - :mock/content valid-mock-yaml - :mock/wildcard "test" - :mock/user_id #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" - :mock/enabled true - :mock/dns_status "offline" - :mock/unification_status "offline"} - database)) - (flow - "should allow valid yaml" - [components (state-flow.api/get-state)] - (state/invoke - #(workers/generate-single-yml-handler - {:event - {:yml.single.generate - {:mock-id mock-id}}} - components)) - (match? - (matchers/embeds {:event - {:gen-yml-path (str "cd989358-af38-4a2f-a1a1-88096aa425a7/" mock-id "/mock.yml") - :append? true}}) - (update-in (first (get @mq/mock-channels "yml.single.generated")) - [:event] dissoc :ctx))))) + (state/invoke #(db.mocks/insert! + {:mock/subdomain "chico" + :mock/id mock-id + :mock/content valid-mock-yaml + :mock/wildcard "test" + :mock/user_id #uuid "cd989358-af38-4a2f-a1a1-88096aa425a7" + :mock/enabled true + :mock/dns_status "offline" + :mock/unification_status "offline"} + database)) + (flow + "should allow valid yaml" + [components (state-flow.api/get-state)] + (state/invoke + #(workers/generate-single-yml-handler + {:event + {:yml.single.generate + {:mock-id mock-id}}} + components)) + (match? + (matchers/embeds {:event + {:gen-yml-path (str "cd989358-af38-4a2f-a1a1-88096aa425a7/" mock-id "/mock.yml") + :append? true}}) + (update-in (first (get @mq/mock-channels "yml.single.generated")) + [:event] dissoc :ctx))))) (defflow flow-block-valid-yaml diff --git a/test/back/back/integration/yaml_generator/unified_validation_test.clj b/test/back/back/integration/yaml_generator/unified_validation_test.clj index 225ebf6a..c67de5ac 100644 --- a/test/back/back/integration/yaml_generator/unified_validation_test.clj +++ b/test/back/back/integration/yaml_generator/unified_validation_test.clj @@ -82,29 +82,29 @@ (defn fvalidate-and-recreate-unified [] (flow - "should correct and validate unified yaml" - [{:keys [mq storage]} (state-flow.api/get-state)] + "should correct and validate unified yaml" + [{:keys [mq storage]} (state-flow.api/get-state)] - (state-flow.api/invoke - #(mq/try-op! mq :publish! ["yml.unified.verification.fired" {}] {})) + (state-flow.api/invoke + #(mq/try-op! mq :publish! ["yml.unified.verification.fired" {}] {})) - (match? - (matchers/embeds (logic.yml/parse-yaml-&-body - (:with-host yml-consts))) - (state-flow.api/return - (let [timeout 10000 ;; 10 seconds - deadline (+ (System/currentTimeMillis) timeout)] - (loop [] - (Thread/sleep 500) - (if (< (System/currentTimeMillis) deadline) - (if-let [content (some-> (storage/get-file storage "moclojer" "moclojer.yml") - io/reader slurp - logic.yml/parse-yaml-&-body)] - (if-not (= content []) - content - (recur)) - (recur)) - (throw (Exception. "Timeout reached while waiting for file content"))))))))) + (match? + (matchers/embeds (logic.yml/parse-yaml-&-body + (:with-host yml-consts))) + (state-flow.api/return + (let [timeout 10000 ;; 10 seconds + deadline (+ (System/currentTimeMillis) timeout)] + (loop [] + (Thread/sleep 500) + (if (< (System/currentTimeMillis) deadline) + (if-let [content (some-> (storage/get-file storage "moclojer" "moclojer.yml") + io/reader slurp + logic.yml/parse-yaml-&-body)] + (if-not (= content []) + content + (recur)) + (recur)) + (throw (Exception. "Timeout reached while waiting for file content"))))))))) (defflow flow-unified-validation-test @@ -112,14 +112,14 @@ :cleanup utils/stop-system! :fail-fast? true} (flow - "will validate the unified yaml" - [{:keys [database storage]} (state-flow.api/get-state)] - (state/invoke #(db.customers/insert! (:user flow-consts) database)) - (state/invoke #(db.mocks/insert! (:mock flow-consts) database)) - (state/invoke #(storage/upload! storage "moclojer" - (logic.yml/gen-path - (get-in flow-consts [:user :customer/uuid]) - (get-in flow-consts [:mock :mock/id])) - (:with-host yml-consts) {})) - (state/invoke #(storage/upload! storage "moclojer" "moclojer.yml" "[]\n" {})) - (fvalidate-and-recreate-unified))) + "will validate the unified yaml" + [{:keys [database storage]} (state-flow.api/get-state)] + (state/invoke #(db.customers/insert! (:user flow-consts) database)) + (state/invoke #(db.mocks/insert! (:mock flow-consts) database)) + (state/invoke #(storage/upload! storage "moclojer" + (logic.yml/gen-path + (get-in flow-consts [:user :customer/uuid]) + (get-in flow-consts [:mock :mock/id])) + (:with-host yml-consts) {})) + (state/invoke #(storage/upload! storage "moclojer" "moclojer.yml" "[]\n" {})) + (fvalidate-and-recreate-unified))) diff --git a/test/back/back/integration/yaml_generator/yaml_generation_test.clj b/test/back/back/integration/yaml_generator/yaml_generation_test.clj index 25311255..fb23482d 100644 --- a/test/back/back/integration/yaml_generator/yaml_generation_test.clj +++ b/test/back/back/integration/yaml_generator/yaml_generation_test.clj @@ -75,39 +75,39 @@ (defn fgenerate-and-save-mock [] (flow - "should save generated yml to storage" - [mq (state-flow.api/get-state :mq) - storage (state-flow.api/get-state :storage)] - (state-flow.api/invoke - #(do - (mq/try-op! mq :publish! - ["mock.updated" - {:event - {:yml.single.generate - {:mock-id (get-in flow-consts [:mock :mock/id])}}}] - {}) - (Thread/sleep 5000))) + "should save generated yml to storage" + [mq (state-flow.api/get-state :mq) + storage (state-flow.api/get-state :storage)] + (state-flow.api/invoke + #(do + (mq/try-op! mq :publish! + ["mock.updated" + {:event + {:yml.single.generate + {:mock-id (get-in flow-consts [:mock :mock/id])}}}] + {}) + (Thread/sleep 5000))) - (match? - (matchers/embeds (logic.yml/parse-yaml-&-body (:sample yml-consts))) - (state-flow.api/return - (let [timeout 10000 ;; 10 seconds - deadline (+ (System/currentTimeMillis) timeout)] - (loop [] - (Thread/sleep 500) - (if (< (System/currentTimeMillis) deadline) - (if-let [content (some-> (storage/get-file - storage "moclojer" - (logic.yml/gen-path - (get-in flow-consts [:user :customer/uuid]) - (get-in flow-consts [:mock :mock/id]))) - io/reader slurp - logic.yml/parse-yaml-&-body)] - (if-not (= content []) - content - (recur)) - (recur)) - (throw (Exception. "Timeout reached while waiting for file content"))))))))) + (match? + (matchers/embeds (logic.yml/parse-yaml-&-body (:sample yml-consts))) + (state-flow.api/return + (let [timeout 10000 ;; 10 seconds + deadline (+ (System/currentTimeMillis) timeout)] + (loop [] + (Thread/sleep 500) + (if (< (System/currentTimeMillis) deadline) + (if-let [content (some-> (storage/get-file + storage "moclojer" + (logic.yml/gen-path + (get-in flow-consts [:user :customer/uuid]) + (get-in flow-consts [:mock :mock/id]))) + io/reader slurp + logic.yml/parse-yaml-&-body)] + (if-not (= content []) + content + (recur)) + (recur)) + (throw (Exception. "Timeout reached while waiting for file content"))))))))) (defflow flow-yaml-generation-test @@ -115,8 +115,8 @@ :cleanup utils/stop-system! :fail-fast? true} (flow - "will try to generate a yaml and save it to storage" - [db (state-flow.api/get-state :database)] - (state/invoke #(db.customers/insert! (:user flow-consts) db)) - (state/invoke #(db.mocks/insert! (:mock flow-consts) db)) - (fgenerate-and-save-mock))) + "will try to generate a yaml and save it to storage" + [db (state-flow.api/get-state :database)] + (state/invoke #(db.customers/insert! (:user flow-consts) db)) + (state/invoke #(db.mocks/insert! (:mock flow-consts) db)) + (fgenerate-and-save-mock))) diff --git a/test/back/back/integration/yaml_generator/yaml_unified_mock_test.clj b/test/back/back/integration/yaml_generator/yaml_unified_mock_test.clj index 2f016dff..d6f95da2 100644 --- a/test/back/back/integration/yaml_generator/yaml_unified_mock_test.clj +++ b/test/back/back/integration/yaml_generator/yaml_unified_mock_test.clj @@ -16,61 +16,61 @@ (defn publish-message [msg queue-name] (flow "publish a message" - [mq (state-flow.api/get-state :mq)] + [mq (state-flow.api/get-state :mq)] - (-> (mq/try-op! mq :publish! [queue-name msg] {}) - state-flow.api/return))) + (-> (mq/try-op! mq :publish! [queue-name msg] {}) + state-flow.api/return))) (defn create-bucket-on-localstack [n] (flow "create a bucket on localstack" - [storage (state-flow.api/get-state :storage)] + [storage (state-flow.api/get-state :storage)] - (-> storage - (storage/create-bucket! n) - state-flow.api/return))) + (-> storage + (storage/create-bucket! n) + state-flow.api/return))) (defn delete-bucket-on-localstack [n] (flow "delte bucket on localstack" - [storage (state-flow.api/get-state :storage)] + [storage (state-flow.api/get-state :storage)] - (-> storage - (storage/delete-bucket! n) - state-flow.api/return))) + (-> storage + (storage/delete-bucket! n) + state-flow.api/return))) (defn cleaning-up-localstack-all-files [n] (flow "cleaning up localstack" - [storage (state-flow.api/get-state :storage)] + [storage (state-flow.api/get-state :storage)] - (->> (storage/list-files storage n) - (map :Key) - (map #(storage/delete-file! storage n %)) - state-flow.api/return))) + (->> (storage/list-files storage n) + (map :Key) + (map #(storage/delete-file! storage n %)) + state-flow.api/return))) (defn setup-file-on-localstack [bucket k v] (flow "setup a file on localstack" - [storage (state-flow.api/get-state :storage)] + [storage (state-flow.api/get-state :storage)] - (-> storage - (storage/upload! bucket k v {}) - state-flow.api/return))) + (-> storage + (storage/upload! bucket k v {}) + state-flow.api/return))) (defn get-file-on-localstack [n k] (flow "get a file on localstack" - [storage (state-flow.api/get-state :storage)] - (state-flow.api/return - (let [timeout 5000 ;; 5 seconds - deadline (+ (System/currentTimeMillis) timeout)] - (loop [] - (Thread/sleep 500) - (if (< (System/currentTimeMillis) deadline) - (if-let [content (some-> (storage/get-file storage n k) - io/reader slurp - logic.yml/parse-yaml-&-body)] - (if-not (= content []) - content - (recur)) - (recur)) - (throw (Exception. "Failed to retrieve file content within the 5-second timeout")))))))) + [storage (state-flow.api/get-state :storage)] + (state-flow.api/return + (let [timeout 5000 ;; 5 seconds + deadline (+ (System/currentTimeMillis) timeout)] + (loop [] + (Thread/sleep 500) + (if (< (System/currentTimeMillis) deadline) + (if-let [content (some-> (storage/get-file storage n k) + io/reader slurp + logic.yml/parse-yaml-&-body)] + (if-not (= content []) + content + (recur)) + (recur)) + (throw (Exception. "Failed to retrieve file content within the 5-second timeout")))))))) (defn- create-and-start-components [] (component/start-system @@ -125,19 +125,19 @@ :fail-fast? true} (flow "create a bucket" - [create (create-bucket-on-localstack "moclojer")] + [create (create-bucket-on-localstack "moclojer")] - (match? create {:Location "/moclojer"}) + (match? create {:Location "/moclojer"}) - (flow "setup mock on bucket for path" + (flow "setup mock on bucket for path" - [_ (setup-file-on-localstack "moclojer" - (str "cd989358-af38-4a2f-a1a1-88096aa425a7/" mock-id "/mock.yml") - yml) - _ (publish-message {:event - {:path (str "cd989358-af38-4a2f-a1a1-88096aa425a7/" mock-id "/mock.yml")}} "mock-unified")] - (flow "check retrieved unified yml" + [_ (setup-file-on-localstack "moclojer" + (str "cd989358-af38-4a2f-a1a1-88096aa425a7/" mock-id "/mock.yml") + yml) + _ (publish-message {:event + {:path (str "cd989358-af38-4a2f-a1a1-88096aa425a7/" mock-id "/mock.yml")}} "mock-unified")] + (flow "check retrieved unified yml" - (match? - (matchers/embeds (logic.yml/parse-yaml-&-body expected-yml-with-host)) - (get-file-on-localstack "moclojer" (str "cd989358-af38-4a2f-a1a1-88096aa425a7/" mock-id "/mock.yml"))))))) + (match? + (matchers/embeds (logic.yml/parse-yaml-&-body expected-yml-with-host)) + (get-file-on-localstack "moclojer" (str "cd989358-af38-4a2f-a1a1-88096aa425a7/" mock-id "/mock.yml"))))))) diff --git a/test/front/front/app/integration/login_auth_view_test.cljs b/test/front/front/app/integration/login_auth_view_test.cljs index 795daffb..a05dc9a6 100644 --- a/test/front/front/app/integration/login_auth_view_test.cljs +++ b/test/front/front/app/integration/login_auth_view_test.cljs @@ -49,38 +49,38 @@ :body (clj->js login-return)}}}) #_(deftest login-auth-view-test-fail-workos-test - (testing "auth login code redirect view should show error from WORKOS" - (async done - (p/let [_route (refx/dispatch [:app.routes/navigated-fake - {:query-params - {:error_description "some err message."}}]) - _msw (mock/start! login-auth-fail-msw) - _render (aux/wait-for #(-> auth.views/login-auth-view aux/render .-container)) - error-msg (p/delay 250 (subs/sub [:app.auth/login-error]))] - (is (= "some err message." (last (subs/-value error-msg)))) - (aux/cleanup) - (done))))) + (testing "auth login code redirect view should show error from WORKOS" + (async done + (p/let [_route (refx/dispatch [:app.routes/navigated-fake + {:query-params + {:error_description "some err message."}}]) + _msw (mock/start! login-auth-fail-msw) + _render (aux/wait-for #(-> auth.views/login-auth-view aux/render .-container)) + error-msg (p/delay 250 (subs/sub [:app.auth/login-error]))] + (is (= "some err message." (last (subs/-value error-msg)))) + (aux/cleanup) + (done))))) #_(deftest login-auth-view-test-fail-api-test - (testing "auth login code redirect view should show error from internal API" - (async done - (p/let [_route (refx/dispatch [:app.routes/navigated-fake - {:query-params {:code "1234"}}]) - _msw (mock/start! login-auth-fail-msw) - _render (aux/wait-for #(-> auth.views/login-auth-view aux/render .-container)) - error-msg (p/delay 250 (subs/sub [:app.auth/login-error]))] - (is (= "Invalid credentials" (:message (last (subs/-value error-msg))))) - (aux/cleanup) - (done))))) + (testing "auth login code redirect view should show error from internal API" + (async done + (p/let [_route (refx/dispatch [:app.routes/navigated-fake + {:query-params {:code "1234"}}]) + _msw (mock/start! login-auth-fail-msw) + _render (aux/wait-for #(-> auth.views/login-auth-view aux/render .-container)) + error-msg (p/delay 250 (subs/sub [:app.auth/login-error]))] + (is (= "Invalid credentials" (:message (last (subs/-value error-msg))))) + (aux/cleanup) + (done))))) #_(deftest login-auth-view-test-success-api-test - (testing "auth login code redirect view should show error from internal API" - (async done - (p/let [_route (refx/dispatch [:app.routes/navigated-fake - {:query-params {:code "1234"}}]) - _msw (mock/start! login-auth-sucess-msw) - _render (aux/wait-for #(-> auth.views/login-auth-view aux/render .-container)) - current-user (p/delay 250 (subs/sub [:app.auth/current-user]))] - (is (= login-return (subs/-value current-user))) - (aux/cleanup) - (done))))) + (testing "auth login code redirect view should show error from internal API" + (async done + (p/let [_route (refx/dispatch [:app.routes/navigated-fake + {:query-params {:code "1234"}}]) + _msw (mock/start! login-auth-sucess-msw) + _render (aux/wait-for #(-> auth.views/login-auth-view aux/render .-container)) + current-user (p/delay 250 (subs/sub [:app.auth/current-user]))] + (is (= login-return (subs/-value current-user))) + (aux/cleanup) + (done))))) diff --git a/test/front/front/app/integration/login_view_test.cljs b/test/front/front/app/integration/login_view_test.cljs index 2e70e714..b827243e 100644 --- a/test/front/front/app/integration/login_view_test.cljs +++ b/test/front/front/app/integration/login_view_test.cljs @@ -29,31 +29,31 @@ :body #js {:ok true}}}}) #_(deftest auth-view-email-send-error-test - (testing "auth email send view should error" - (async done - (p/let [_ (mock/start! login-error-msw) - render (aux/wait-for #(-> auth.views/login-view aux/render)) - container (aux/wait-for #(.-container render)) - button (-> container (aux/tag "button") first) - input (-> container (aux/query "#login-email")) - _change (aux/wait-for #(-> input (aux/change "err@ee.cc"))) - _click (aux/wait-for #(-> button aux/click)) - error-msg (aux/wait-for #(-> container (aux/query "#login-error") aux/text))] - (is (= "Error... try it again.Not found" error-msg)) - (aux/cleanup) - (done))))) + (testing "auth email send view should error" + (async done + (p/let [_ (mock/start! login-error-msw) + render (aux/wait-for #(-> auth.views/login-view aux/render)) + container (aux/wait-for #(.-container render)) + button (-> container (aux/tag "button") first) + input (-> container (aux/query "#login-email")) + _change (aux/wait-for #(-> input (aux/change "err@ee.cc"))) + _click (aux/wait-for #(-> button aux/click)) + error-msg (aux/wait-for #(-> container (aux/query "#login-error") aux/text))] + (is (= "Error... try it again.Not found" error-msg)) + (aux/cleanup) + (done))))) #_(deftest auth-view-email-send-success-test - (testing "auth email send view should work and show next panel" - (async done - (p/let [_ (mock/start! login-sucess-msw) - render (aux/wait-for #(-> auth.views/login-view aux/render)) - container (aux/wait-for #(.-container render)) - button (-> container (aux/tag "button") first) - input (-> container (aux/query "#login-email")) - _change (aux/wait-for #(-> input (aux/change "nice@email.cc"))) - _click (aux/wait-for #(-> button aux/click)) - success-msg (aux/wait-for #(-> container (aux/query "#login-email-sent") aux/text))] - (is (= "Check your email, and click on the link.Didn't received it? Try again." success-msg)) - (aux/cleanup) - (done))))) + (testing "auth email send view should work and show next panel" + (async done + (p/let [_ (mock/start! login-sucess-msw) + render (aux/wait-for #(-> auth.views/login-view aux/render)) + container (aux/wait-for #(.-container render)) + button (-> container (aux/tag "button") first) + input (-> container (aux/query "#login-email")) + _change (aux/wait-for #(-> input (aux/change "nice@email.cc"))) + _click (aux/wait-for #(-> button aux/click)) + success-msg (aux/wait-for #(-> container (aux/query "#login-email-sent") aux/text))] + (is (= "Check your email, and click on the link.Didn't received it? Try again." success-msg)) + (aux/cleanup) + (done))))) diff --git a/test/front/front/app/unit/components/button_test.cljs b/test/front/front/app/unit/components/button_test.cljs deleted file mode 100644 index b81589cb..00000000 --- a/test/front/front/app/unit/components/button_test.cljs +++ /dev/null @@ -1,17 +0,0 @@ -(ns front.app.unit.components.button-test - (:require [cljs.test :refer [deftest is testing]] - [front.app.components.button :as components.button])) - -(deftest props-classes-test - (testing "should build classes name" - (is (= "group inline-flex items-center justify-center rounded-full py-2 px-4 text-sm font-semibold focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 bg-blue-600 text-white hover:text-slate-100 hover:bg-blue-500 active:bg-blue-800 active:text-blue-100 focus-visible:outline-blue-600 " - (components.button/get-login-style {}))) - (is (= "group inline-flex items-center justify-center rounded-full py-2 px-4 text-sm font-semibold focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 bg-slate-900 text-white hover:bg-slate-700 hover:text-slate-100 active:bg-slate-800 active:text-slate-300 focus-visible:outline-slate-900 " - (components.button/get-login-style {:base "slate"}))) - (is (= "group inline-flex ring-1 items-center justify-center rounded-full py-2 px-4 text-sm focus:outline-none ring-slate-200 text-slate-700 hover:text-slate-900 hover:ring-slate-300 active:bg-slate-100 active:text-slate-600 focus-visible:outline-blue-600 focus-visible:ring-slate-300 " - (components.button/get-login-style {:variant "slate" - :base "outline"}))) - (is (= "group inline-flex ring-1 items-center justify-center rounded-full py-2 px-4 text-sm focus:outline-none ring-slate-200 text-slate-700 hover:text-slate-900 hover:ring-slate-300 active:bg-slate-100 active:text-slate-600 focus-visible:outline-blue-600 focus-visible:ring-slate-300 extra" - (components.button/get-login-style {:variant "slate" - :base "outline" - :class-name "extra"})))))