diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 846dd9f33..000000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,53 +0,0 @@ -module.exports = { - root: true, - env: { - browser: true, - es2021: true, - }, - plugins: ["@typescript-eslint"], - overrides: [ - { - files: ["*.svelte"], - parser: "svelte-eslint-parser", - parserOptions: { - parser: "@typescript-eslint/parser", - }, - }, - ], - extends: [ - "eslint:recommended", - "plugin:svelte/recommended", - "plugin:@typescript-eslint/recommended", - ], - parser: "@typescript-eslint/parser", - parserOptions: { - ecmaVersion: "latest", - sourceType: "module", - tsconfigRootDir: __dirname, - project: ["./tsconfig.json"], - extraFileExtensions: [".svelte"], - }, - settings: { - "svelte3/typescript": require("typescript"), - }, - rules: { - "a11y-click-events-have-key-events": "off", - "a11y-autofocus": "off", - "no-constant-condition": "off", - "no-unused-vars": "off", - "no-useless-escape": "off", - "no-extra-semi": "off", - "no-async-promise-executor": "off", - "prefer-const": ["error", {destructuring: "all"}], - "svelte/valid-compile": "off", - "svelte/no-at-html-tags": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-extra-semi": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/no-unused-vars": [ - "error", - {args: "none", destructuredArrayIgnorePattern: "^_d?$"}, - ], - }, - ignorePatterns: ["*.svg"], -} diff --git a/CHANGELOG.md b/CHANGELOG.md index 41e30c525..ade3b9fd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +# 0.4.10 + +- [x] Show loading when sending note reply +- [x] Support rendering zap responses +- [x] Speed up web of trust calculation and search page +- [x] Reduce extra encrypt/decrypt calls when updating lists +- [x] Apply mute keywords to usernames as well as note content +- [x] Large refactor to use @welshman/app utilities +- [x] Add profile picture to DMs +- [x] Add pubkey to profile name, fix wot info on mobile (zmjohnson) +- [x] Render highlight comments +- [x] Improve initial load and search performance +- [x] Remove web of trust numbers + # 0.4.9 - [x] Add person zaps diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7d04c907b..a66103cdb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -77,13 +77,13 @@ Enhancement suggestions are tracked as [GitHub issues](/issues). We welcome pull requests. To ensure your pull request is accepted, please follow the guidelines below: -- Base your pull request on an issue that has already been discussed and acknowledged as a problem or desirable enhancement. (ROADMAP.md)[ROADMAP.md] also contains several tasks that have not been put into issues yet. +- Base your pull request on an issue that has already been discussed and acknowledged as a problem or desirable enhancement. - Set your pull request up to merge into the `dev` branch of the upstream repo. - Make sure your pull request passes all checks and follows code style. You can autoformat, lint, and check types using the scripts in package.json. More broadly, code style is generally procedural, with some functional paradigms, using objects mostly as singletons with an initialization step. Try to use (but not over-use) svelte stores, ramda, and hurdak when possible. #### Development and Deployment -To create a working copy, please fork the repository and clone it so that all PRs can go through a review. Run `yarn && yarn dev` to start the dev server, and `yarn run check` to run all checks. Pushes to the `dev` branch are autodeployed via render.com to `dev.coracle.social`. Pushes to `master` are autodeployed via render.com to `app.coracle.social`. +To create a working copy, please fork the repository and clone it so that all PRs can go through a review. Run `npm i && npm run dev` to start the dev server, and `npm run check` to run all checks. Pushes to the `dev` branch are autodeployed via render.com to `dev.coracle.social`. Pushes to `master` are autodeployed via render.com to `app.coracle.social`. ### Project Structure diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..3b8a57b30 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,54 @@ +import js from "@eslint/js" +import ts from "typescript-eslint" +import svelte from "eslint-plugin-svelte" +import prettier from "eslint-config-prettier" +import globals from "globals" + +/** @type {import('eslint').Linter.Config[]} */ +export default [ + js.configs.recommended, + ...ts.configs.recommended, + ...svelte.configs["flat/recommended"], + prettier, + ...svelte.configs["flat/prettier"], + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.node, + }, + }, + }, + { + files: ["**/*.svelte"], + languageOptions: { + parserOptions: { + parser: ts.parser, + }, + }, + }, + { + ignores: ["build/", "dist/", "*.svg"], + }, + { + rules: { + "a11y-click-events-have-key-events": "off", + "a11y-autofocus": "off", + "no-constant-condition": "off", + "no-unused-vars": "off", + "no-useless-escape": "off", + "no-extra-semi": "off", + "no-async-promise-executor": "off", + "prefer-const": ["error", {destructuring: "all"}], + "svelte/valid-compile": "off", + "svelte/no-at-html-tags": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-extra-semi": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + {args: "none", destructuredArrayIgnorePattern: "^_d?$", caughtErrors: "none"}, + ], + }, + }, +] diff --git a/index.html b/index.html index dbf1ae7af..284f7f89c 100644 --- a/index.html +++ b/index.html @@ -4,8 +4,41 @@ + content="script-src 'self' plausible.io 'nonce-A132076C'; worker-src 'self' blob:; style-src 'self' 'unsafe-inline'; frame-src open.spotify.com embed.tidal.com; child-src 'none'; form-action 'none';" /> +
diff --git a/package-lock.json b/package-lock.json index 23a2ddad2..38085ed4e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,79 +8,79 @@ "name": "coracle", "version": "0.4.4", "dependencies": { - "@bugsnag/js": "^7.22.4", - "@capacitor/android": "^6.0.0", - "@capacitor/core": "^6.0.0", - "@capacitor/ios": "^6.0.0", - "@event-calendar/core": "^2.6.1", - "@event-calendar/day-grid": "^2.6.1", - "@event-calendar/interaction": "^2.6.1", - "@fortawesome/fontawesome-free": "^6.5.2", - "@getalby/bitcoin-connect": "^3.2.2", - "@scure/base": "^1.1.6", - "@welshman/content": "^0.0.7", - "@welshman/dvm": "^0.0.4", - "@welshman/feeds": "^0.0.14", - "@welshman/lib": "^0.0.14", - "@welshman/net": "^0.0.18", - "@welshman/signer": "^0.0.2", - "@welshman/store": "^0.0.2", - "@welshman/util": "^0.0.25", + "@bugsnag/js": "^8.0.0", + "@capacitor/android": "^6.1.2", + "@capacitor/core": "^6.1.2", + "@capacitor/ios": "^6.1.2", + "@event-calendar/core": "^3.4.0", + "@event-calendar/day-grid": "^3.4.0", + "@event-calendar/interaction": "^3.4.0", + "@fortawesome/fontawesome-free": "^6.6.0", + "@getalby/bitcoin-connect": "^3.6.2", + "@scure/base": "^1.1.7", + "@welshman/app": "^0.0.7", + "@welshman/content": "^0.0.9", + "@welshman/dvm": "^0.0.7", + "@welshman/feeds": "^0.0.17", + "@welshman/lib": "^0.0.17", + "@welshman/net": "^0.0.22", + "@welshman/signer": "^0.0.5", + "@welshman/store": "^0.0.7", + "@welshman/util": "^0.0.31", "bowser": "^2.11.0", "classnames": "^2.5.1", "compressorjs": "^1.2.1", - "date-picker-svelte": "^2.12.0", + "date-picker-svelte": "^2.13.0", + "eslint-config-prettier": "^9.1.0", "fuse.js": "^7.0.0", - "hls.js": "^1.5.8", + "hls.js": "^1.5.15", "hurdak": "^0.2.10", - "husky": "^8.0.3", + "husky": "^9.1.5", "idb": "^8.0.0", "insane": "^2.6.2", - "lru-cache": "^10.2.0", - "marked": "^11.2.0", + "marked": "^14.1.0", "normalize-url": "^8.0.1", - "nostr-tools": "^2.5.0", + "nostr-tools": "^2.7.2", "npm-run-all": "^4.1.5", "qr-scanner": "^1.4.2", - "qrcode": "^1.5.3", - "ramda": "^0.29.1", - "sharp": "^0.33.4", - "svelte": "^4.2.14", - "svelte-check": "^3.6.9", + "qrcode": "^1.5.4", + "ramda": "^0.30.1", + "sharp": "^0.33.5", + "svelte": "^4.2.19", + "svelte-check": "^4.0.0", "svelte-link-preview": "^0.3.3", "svelte-loading-spinners": "^0.3.6", - "svelte-range-slider-pips": "^2.3.1", + "svelte-range-slider-pips": "^3.1.1", "svelte-switch": "^0.0.5", - "throttle-debounce": "^5.0.0", + "throttle-debounce": "^5.0.2", "tippy.js": "^6.3.7", - "uuid": "^9.0.1" + "typescript-eslint": "^8.4.0", + "uuid": "^10.0.0" }, "devDependencies": { - "@capacitor/cli": "^6.0.0", - "@sveltejs/vite-plugin-svelte": "^3.1.0", + "@capacitor/cli": "^6.1.2", + "@sveltejs/vite-plugin-svelte": "^3.1.2", "@tsconfig/svelte": "^5.0.4", - "@types/ramda": "^0.29.12", + "@types/ramda": "^0.30.2", "@types/throttle-debounce": "^5.0.2", - "@typescript-eslint/eslint-plugin": "^7.7.0", - "@typescript-eslint/parser": "^7.7.0", "@vite-pwa/assets-generator": "^0.2.4", - "autoprefixer": "^10.4.19", - "cypress": "^13.7.3", + "autoprefixer": "^10.4.20", + "cypress": "^13.14.1", "dotenv": "^16.4.5", - "eslint": "^8.57.0", - "eslint-plugin-svelte": "^2.37.0", + "eslint": "^9.9.1", + "eslint-plugin-svelte": "^2.43.0", "favicons": "^7.2.0", - "postcss": "^8.4.38", - "prettier": "^3.2.5", - "prettier-plugin-svelte": "^3.2.3", - "prettier-plugin-tailwindcss": "^0.5.14", - "svelte-preprocess": "^5.1.3", - "tailwindcss": "^3.4.3", - "typescript": "^5.4.5", - "vite": "^5.2.8", - "vite-plugin-html-config": "^1.0.11", + "postcss": "^8.4.44", + "prettier": "^3.3.3", + "prettier-plugin-svelte": "^3.2.6", + "prettier-plugin-tailwindcss": "^0.6.6", + "svelte-preprocess": "^6.0.2", + "tailwindcss": "^3.4.10", + "typescript": "^5.5.4", + "vite": "^5.4.2", + "vite-plugin-html-config": "^2.0.2", "vite-plugin-node-polyfills": "^0.22.0", - "vite-plugin-pwa": "^0.17.5" + "vite-plugin-pwa": "^0.20.2" } }, "node_modules/@alloc/quick-lru": { @@ -120,7 +120,7 @@ "version": "7.24.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/highlight": "^7.24.2", "picocolors": "^1.0.0" @@ -133,7 +133,7 @@ "version": "7.24.4", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6.9.0" } @@ -142,7 +142,7 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", - "devOptional": true, + "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.2", @@ -172,7 +172,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "devOptional": true, + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -181,7 +181,7 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/types": "^7.24.5", "@jridgewell/gen-mapping": "^0.3.5", @@ -220,7 +220,7 @@ "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-validator-option": "^7.23.5", @@ -236,7 +236,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "devOptional": true, + "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -245,7 +245,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "devOptional": true, + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -254,7 +254,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "devOptional": true + "dev": true }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.24.5", @@ -334,7 +334,7 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6.9.0" } @@ -343,7 +343,7 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -356,7 +356,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -380,7 +380,7 @@ "version": "7.24.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/types": "^7.24.0" }, @@ -392,7 +392,7 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.24.3", @@ -466,7 +466,7 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/types": "^7.24.5" }, @@ -490,7 +490,7 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/types": "^7.24.5" }, @@ -502,7 +502,7 @@ "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6.9.0" } @@ -511,7 +511,7 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6.9.0" } @@ -520,7 +520,7 @@ "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6.9.0" } @@ -543,7 +543,7 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/template": "^7.24.0", "@babel/traverse": "^7.24.5", @@ -557,7 +557,7 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", @@ -572,7 +572,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "devOptional": true, + "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -584,7 +584,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "devOptional": true, + "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -598,7 +598,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "devOptional": true, + "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -607,13 +607,13 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "devOptional": true + "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "devOptional": true, + "dev": true, "engines": { "node": ">=0.8.0" } @@ -622,7 +622,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "devOptional": true, + "dev": true, "engines": { "node": ">=4" } @@ -631,7 +631,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "devOptional": true, + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -643,7 +643,7 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", - "devOptional": true, + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -1882,7 +1882,7 @@ "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/parser": "^7.24.0", @@ -1896,7 +1896,7 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/code-frame": "^7.24.2", "@babel/generator": "^7.24.5", @@ -1917,7 +1917,7 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "devOptional": true, + "dev": true, "engines": { "node": ">=4" } @@ -1926,7 +1926,7 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.24.1", "@babel/helper-validator-identifier": "^7.24.5", @@ -1942,17 +1942,17 @@ "integrity": "sha512-NVf/1YycDMs6+FxS0Tb/W8MjJRDQdXF+tBfDtZ5UZeiRUkTmwKc4vmYCKZTyymfJk1gnMsauvZSX/HiV9jOABw==" }, "node_modules/@bugsnag/browser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.22.7.tgz", - "integrity": "sha512-70jFkWKscK2osm7bnFbPLevrzHClrygM3UcKetKs/l81Xuzlxnu1SS3onN5OUl9kd9RN4XMFr46Pv5jSqWqImQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-8.0.0.tgz", + "integrity": "sha512-v+Ff9rHuzB7Fb/RBxlqA1Bhn+SulZWIvbI+I0fIsJQ7mdOgnVuAK16HwiSzXSmrfntEB2M4NAyfUAQRcWjAKTA==", "dependencies": { - "@bugsnag/core": "^7.22.7" + "@bugsnag/core": "^8.0.0" } }, "node_modules/@bugsnag/core": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.22.7.tgz", - "integrity": "sha512-9DPWBkkBjhFJc5dCFy/wVC3HE0Aw3ZiLJKjyAxgywSKbILgtpD+qT1Xe8sacWyxU92znamlZ8H8ziQOe7jhhbA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-8.0.0.tgz", + "integrity": "sha512-AcDMjd4RZ+G8M/n6TFzL5P/1due+aNvTIu+26mu9TW2Tt4d/86lKVFQSy0H2Ju1HIaBdqtUUNCTXOIeNXJVkHQ==", "dependencies": { "@bugsnag/cuid": "^3.0.0", "@bugsnag/safe-json-stringify": "^6.0.0", @@ -1967,20 +1967,20 @@ "integrity": "sha512-d2z4b0rEo3chI07FNN1Xds8v25CNeekecU6FC/2Fs9MxY2EipkZTThVcV2YinMn8dvRUlViKOyC50evoUxg8tw==" }, "node_modules/@bugsnag/js": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@bugsnag/js/-/js-7.23.0.tgz", - "integrity": "sha512-gnCpcv/v6p3CtbwwDuAjVYPPNq4NMVj4hp70MiB3OGJ+LmIS66CwElDiyvRMA8Ar6OzCF4joTeaNG5bD9cM41w==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@bugsnag/js/-/js-8.0.0.tgz", + "integrity": "sha512-xlSA48AJtnj+SsS824k1Gzo/gJTnn5xTBbWE7NhbsHEBBGVX3U7vOVBF75mZZEi89XwTiRwjQ91fASw4Rv5Ebg==", "dependencies": { - "@bugsnag/browser": "^7.22.7", - "@bugsnag/node": "^7.23.0" + "@bugsnag/browser": "^8.0.0", + "@bugsnag/node": "^8.0.0" } }, "node_modules/@bugsnag/node": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-7.23.0.tgz", - "integrity": "sha512-eXA8/h+J2booEMlKsuRl1NAszebwm4KZ9zxCSg/xN4sw5boXia7kMifLf8QTqk+UBtIhNKBsyQQKHXbawKyE6Q==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-8.0.0.tgz", + "integrity": "sha512-boI969qvzuNgS61M0hTbLFKzWPo+OC8AFr4j3hGxGTOiqQD5QuFwSQ40Jcet+y1BHjMRjj3QD4U+722nOqaXyQ==", "dependencies": { - "@bugsnag/core": "^7.22.7", + "@bugsnag/core": "^8.0.0", "byline": "^5.0.0", "error-stack-parser": "^2.0.2", "iserror": "^0.0.2", @@ -2000,17 +2000,17 @@ "dev": true }, "node_modules/@capacitor/android": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@capacitor/android/-/android-6.0.0.tgz", - "integrity": "sha512-NwL87VO9F1WY/EgvJZN9pIhjejq688k2fRW6XWNLVe3cgGE6nUb9J34KI68fhx3139cf2LVGPUYs+mwZC8esiQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@capacitor/android/-/android-6.1.2.tgz", + "integrity": "sha512-Yh0gQDY1bgRrL25J6ecIlvvs2kF8iNSwIPXjyw6Yz9mnwYxBazF5KZbjpKtGPnJgicJhFkYGsqOkEtxrve0EoQ==", "peerDependencies": { - "@capacitor/core": "^6.0.0" + "@capacitor/core": "^6.1.0" } }, "node_modules/@capacitor/cli": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-6.0.0.tgz", - "integrity": "sha512-6z30P0mr53l0VXPwFjzDVuKIt1991bqUSSfShTT2efWN+rBSGSAH2bPID6qSZornH1n5R5Lh/UHq/aGuW523MQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-6.1.2.tgz", + "integrity": "sha512-HKCNGE0RP8U7aiEF2vg5wTivJROS8BVfu8a3yYJb1mRQvzv+czpmtHNsTWS/WukvwoxUjyjRmsNQSAACHfMTmQ==", "dev": true, "dependencies": { "@ionic/cli-framework-output": "^2.2.5", @@ -2041,19 +2041,19 @@ } }, "node_modules/@capacitor/core": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-6.0.0.tgz", - "integrity": "sha512-NvxIQsJcMiIV+Le1DilR2GGyQQbDInfXK1UywGROQ5mycdFlW5XoAPZ+MKnFGB123RoEgE3uhDGgwTXUmSlX9A==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-6.1.2.tgz", + "integrity": "sha512-xFy1/4qLFLp5WCIzIhtwUuVNNoz36+V7/BzHmLqgVJcvotc4MMjswW/TshnPQaLLujEOaLkA4h8ZJ0uoK3ImGg==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@capacitor/ios": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-6.0.0.tgz", - "integrity": "sha512-7mAs3gjWiE5DPM4AGPduqFSDGXCPwwqQRMzbohVway7/cTWnHomHV8mIojMZE4GILeWO2fILbyu3C8q9pHg2vg==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-6.1.2.tgz", + "integrity": "sha512-HaeW68KisBd/7TmavzPDlL2bpoDK5AjR2ZYrqU4TlGwM88GtQfvduBCAlSCj20X0w/4+rWMkseD9dAAkacjiyQ==", "peerDependencies": { - "@capacitor/core": "^6.0.0" + "@capacitor/core": "^6.1.0" } }, "node_modules/@colors/colors": { @@ -2133,9 +2133,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], @@ -2149,9 +2149,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], @@ -2165,9 +2165,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], @@ -2181,9 +2181,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -2197,9 +2197,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -2213,9 +2213,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], @@ -2229,9 +2229,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], @@ -2245,9 +2245,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], @@ -2261,9 +2261,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], @@ -2277,9 +2277,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], @@ -2293,9 +2293,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], @@ -2309,9 +2309,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], @@ -2325,9 +2325,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], @@ -2341,9 +2341,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], @@ -2357,9 +2357,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], @@ -2373,9 +2373,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], @@ -2389,9 +2389,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], @@ -2405,9 +2405,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], @@ -2421,9 +2421,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -2437,9 +2437,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -2453,9 +2453,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -2469,9 +2469,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], @@ -2485,9 +2485,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -2504,7 +2504,6 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -2516,24 +2515,55 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -2541,7 +2571,7 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -2551,7 +2581,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2561,7 +2590,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2570,59 +2598,65 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@event-calendar/core": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@event-calendar/core/-/core-2.7.1.tgz", - "integrity": "sha512-KqlSefS/D3Wh5EhaRdRpKxENH+jgR4aXoKygZqpRxAtB1GuckXL2IA6YavRc3PkiJNgCLuxfGMk3akMzwwAmQA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@event-calendar/core/-/core-3.4.0.tgz", + "integrity": "sha512-b7Kx214hRs6MNfRbnN/L29kgWsBI+Zv2KrU0Gp0H/alqN9yJR+6YNaqcaAo3NV4DiCo+9moBOlZ4KbbpZhnulQ==", "dependencies": { "svelte": "^4.2.16" } }, "node_modules/@event-calendar/day-grid": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@event-calendar/day-grid/-/day-grid-2.7.1.tgz", - "integrity": "sha512-u4OCuLZz7VrAPOoh4b94HvJ+vIEbZY3+GPwJZ8pixi/fRjOxuPteippYL+mj7NT39NH+e8Lviy2EOmpR5vBbVw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@event-calendar/day-grid/-/day-grid-3.4.0.tgz", + "integrity": "sha512-BlZLM4fiqb4kPtis4tX5jg8XcbhmIOesgc8qhUjooEmWcPc8GZvW4Ob0UYt0Js/HjX+u4IvNdVUsNDzJe8o2Dw==", "dependencies": { - "@event-calendar/core": "~2.7.1", + "@event-calendar/core": "~3.4.0", "svelte": "^4.2.16" } }, "node_modules/@event-calendar/interaction": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@event-calendar/interaction/-/interaction-2.7.1.tgz", - "integrity": "sha512-AA0FQU4ORhEFtjXg+3dygtp5azincRF1xLCpjjBZz9MYuEIYQheLDNp3dBQhqNR03gycKKBfbIBA/X1ePo/JzQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@event-calendar/interaction/-/interaction-3.4.0.tgz", + "integrity": "sha512-cizgMNdaPbeONCoBeMODglzn2dH6lLhpoaCdU4uBb2EOafe3DdtiK5yj+G4QjLOz+GcB3BomT8lwgzCQaD9akg==", "dependencies": { - "@event-calendar/core": "~2.7.1", + "@event-calendar/core": "~3.4.0", "svelte": "^4.2.16" } }, "node_modules/@fortawesome/fontawesome-free": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.2.tgz", - "integrity": "sha512-hRILoInAx8GNT5IMkrtIt9blOdrqHOnPBH+k70aWUAqPZPgopb9G5EQJFpaBx/S8zp2fC+mPW349Bziuk1o28Q==", - "hasInstallScript": true, + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.6.0.tgz", + "integrity": "sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==", "engines": { "node": ">=6" } }, "node_modules/@getalby/bitcoin-connect": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@getalby/bitcoin-connect/-/bitcoin-connect-3.4.2.tgz", - "integrity": "sha512-TsIKASy/823DJLw8DEgwpnJyHGRt2Xfm4kGpot2NxuRrTD8V5s2nlMHmyZhmkuxzrKE83wA0KpIXgqse5We/xA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@getalby/bitcoin-connect/-/bitcoin-connect-3.6.2.tgz", + "integrity": "sha512-JttIpbKWbkS5WA62S2xHQ2I6Ld5azJi99BLVcgjJoM6szpE4tlSuZi+oASduG8XTFMsiQ1GU57nqfiVXrv9ZyA==", "dependencies": { "@getalby/lightning-tools": "^5.0.3", - "@getalby/sdk": "^3.5.1", + "@getalby/sdk": "^3.6.1", "@lightninglabs/lnc-web": "^0.3.1-alpha", "qrcode-generator": "^1.4.4", - "zustand": "^4.5.2" + "zustand": "^4.5.4" } }, "node_modules/@getalby/lightning-tools": { @@ -2638,9 +2672,9 @@ } }, "node_modules/@getalby/sdk": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@getalby/sdk/-/sdk-3.5.1.tgz", - "integrity": "sha512-Qz9GgXMoVpupDLqbzA2CHpru+9yqijQrxeRN7CDfV6l39js/BGwin93MFTh7eFj2TsMo+i8JeM3BVn+SJn/iRg==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@getalby/sdk/-/sdk-3.7.0.tgz", + "integrity": "sha512-GorSxIErXm5nbM819Ib3aOyjqH0N4YyUqcD7yAQAgm/ejPpV8vTV0btp2cYl1XtYyHzZEcffDMt8luCOYCekJw==", "dependencies": { "eventemitter3": "^5.0.1", "nostr-tools": "^1.17.0" @@ -2704,47 +2738,10 @@ } } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, "engines": { "node": ">=12.22" }, @@ -2753,16 +2750,22 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz", - "integrity": "sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", "cpu": [ "arm64" ], @@ -2771,23 +2774,19 @@ "darwin" ], "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.2" + "@img/sharp-libvips-darwin-arm64": "1.0.4" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.4.tgz", - "integrity": "sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", "cpu": [ "x64" ], @@ -2796,23 +2795,19 @@ "darwin" ], "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.2" + "@img/sharp-libvips-darwin-x64": "1.0.4" } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", - "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", "cpu": [ "arm64" ], @@ -2820,20 +2815,14 @@ "os": [ "darwin" ], - "engines": { - "macos": ">=11", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz", - "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", "cpu": [ "x64" ], @@ -2841,20 +2830,14 @@ "os": [ "darwin" ], - "engines": { - "macos": ">=10.13", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz", - "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", "cpu": [ "arm" ], @@ -2862,20 +2845,14 @@ "os": [ "linux" ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz", - "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", "cpu": [ "arm64" ], @@ -2883,20 +2860,14 @@ "os": [ "linux" ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz", - "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", "cpu": [ "s390x" ], @@ -2904,20 +2875,14 @@ "os": [ "linux" ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz", - "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", "cpu": [ "x64" ], @@ -2925,20 +2890,14 @@ "os": [ "linux" ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz", - "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", "cpu": [ "arm64" ], @@ -2946,20 +2905,14 @@ "os": [ "linux" ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz", - "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", "cpu": [ "x64" ], @@ -2967,20 +2920,14 @@ "os": [ "linux" ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.4.tgz", - "integrity": "sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", "cpu": [ "arm" ], @@ -2989,23 +2936,19 @@ "linux" ], "engines": { - "glibc": ">=2.28", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.2" + "@img/sharp-libvips-linux-arm": "1.0.5" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.4.tgz", - "integrity": "sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", "cpu": [ "arm64" ], @@ -3014,23 +2957,19 @@ "linux" ], "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.2" + "@img/sharp-libvips-linux-arm64": "1.0.4" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.4.tgz", - "integrity": "sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", "cpu": [ "s390x" ], @@ -3039,23 +2978,19 @@ "linux" ], "engines": { - "glibc": ">=2.31", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.2" + "@img/sharp-libvips-linux-s390x": "1.0.4" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.4.tgz", - "integrity": "sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", "cpu": [ "x64" ], @@ -3064,23 +2999,19 @@ "linux" ], "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.2" + "@img/sharp-libvips-linux-x64": "1.0.4" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.4.tgz", - "integrity": "sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", "cpu": [ "arm64" ], @@ -3089,23 +3020,19 @@ "linux" ], "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2" + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.4.tgz", - "integrity": "sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", "cpu": [ "x64" ], @@ -3114,44 +3041,37 @@ "linux" ], "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.2" + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.4.tgz", - "integrity": "sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", "cpu": [ "wasm32" ], "optional": true, "dependencies": { - "@emnapi/runtime": "^1.1.1" + "@emnapi/runtime": "^1.2.0" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.4.tgz", - "integrity": "sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", "cpu": [ "ia32" ], @@ -3160,19 +3080,16 @@ "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.4.tgz", - "integrity": "sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", "cpu": [ "x64" ], @@ -3181,10 +3098,7 @@ "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" @@ -3750,9 +3664,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz", - "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz", + "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==", "cpu": [ "arm" ], @@ -3763,9 +3677,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz", - "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz", + "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==", "cpu": [ "arm64" ], @@ -3776,9 +3690,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz", - "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz", + "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==", "cpu": [ "arm64" ], @@ -3789,9 +3703,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz", - "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz", + "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==", "cpu": [ "x64" ], @@ -3802,9 +3716,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz", - "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz", + "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==", "cpu": [ "arm" ], @@ -3815,9 +3729,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz", - "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz", + "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==", "cpu": [ "arm" ], @@ -3828,9 +3742,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz", - "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz", + "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==", "cpu": [ "arm64" ], @@ -3841,9 +3755,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz", - "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz", + "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==", "cpu": [ "arm64" ], @@ -3854,9 +3768,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz", - "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz", + "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==", "cpu": [ "ppc64" ], @@ -3867,9 +3781,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz", - "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz", + "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==", "cpu": [ "riscv64" ], @@ -3880,9 +3794,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz", - "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz", + "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==", "cpu": [ "s390x" ], @@ -3893,9 +3807,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz", - "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz", + "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==", "cpu": [ "x64" ], @@ -3906,9 +3820,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz", - "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz", + "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==", "cpu": [ "x64" ], @@ -3919,9 +3833,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz", - "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz", + "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==", "cpu": [ "arm64" ], @@ -3932,9 +3846,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz", - "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz", + "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==", "cpu": [ "ia32" ], @@ -3945,9 +3859,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz", - "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz", + "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==", "cpu": [ "x64" ], @@ -3958,9 +3872,9 @@ ] }, "node_modules/@scure/base": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.6.tgz", - "integrity": "sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.7.tgz", + "integrity": "sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==", "funding": { "url": "https://paulmillr.com/funding/" } @@ -4023,16 +3937,16 @@ } }, "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.0.tgz", - "integrity": "sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", + "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", "dev": true, "dependencies": { - "@sveltejs/vite-plugin-svelte-inspector": "^2.0.0", + "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", "debug": "^4.3.4", "deepmerge": "^4.3.1", "kleur": "^4.1.5", - "magic-string": "^0.30.9", + "magic-string": "^0.30.10", "svelte-hmr": "^0.16.0", "vitefu": "^0.2.5" }, @@ -4100,18 +4014,13 @@ "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==" }, - "node_modules/@types/pug": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz", - "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==" - }, "node_modules/@types/ramda": { - "version": "0.29.12", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.12.tgz", - "integrity": "sha512-sgIEjpJhdQPB52gDF4aphs9nl0xe54CR22DPdWqT8gQHjZYmVApgA0R3/CpMbl0Y8az2TEZrPNL2zy0EvjbkLA==", + "version": "0.30.2", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", + "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", "dev": true, "dependencies": { - "types-ramda": "^0.29.10" + "types-ramda": "^0.30.1" } }, "node_modules/@types/resolve": { @@ -4160,31 +4069,30 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.10.0.tgz", - "integrity": "sha512-PzCr+a/KAef5ZawX7nbyNwBDtM1HdLIT53aSA2DDlxmxMngZ43O8SIePOeX8H5S+FHXeI6t97mTt/dDdzY4Fyw==", - "dev": true, + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", + "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.10.0", - "@typescript-eslint/type-utils": "7.10.0", - "@typescript-eslint/utils": "7.10.0", - "@typescript-eslint/visitor-keys": "7.10.0", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/type-utils": "8.4.0", + "@typescript-eslint/utils": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -4193,26 +4101,25 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.10.0.tgz", - "integrity": "sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.10.0", - "@typescript-eslint/types": "7.10.0", - "@typescript-eslint/typescript-estree": "7.10.0", - "@typescript-eslint/visitor-keys": "7.10.0", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", + "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", + "dependencies": { + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -4221,16 +4128,15 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz", - "integrity": "sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==", - "dev": true, + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", + "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", "dependencies": { - "@typescript-eslint/types": "7.10.0", - "@typescript-eslint/visitor-keys": "7.10.0" + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -4238,26 +4144,22 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.10.0.tgz", - "integrity": "sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g==", - "dev": true, + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", + "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", "dependencies": { - "@typescript-eslint/typescript-estree": "7.10.0", - "@typescript-eslint/utils": "7.10.0", + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/utils": "8.4.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.56.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -4265,12 +4167,11 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.10.0.tgz", - "integrity": "sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==", - "dev": true, + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", + "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -4278,22 +4179,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz", - "integrity": "sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==", - "dev": true, + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", + "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", "dependencies": { - "@typescript-eslint/types": "7.10.0", - "@typescript-eslint/visitor-keys": "7.10.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -4306,50 +4206,42 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.10.0.tgz", - "integrity": "sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg==", - "dev": true, + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", + "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.10.0", - "@typescript-eslint/types": "7.10.0", - "@typescript-eslint/typescript-estree": "7.10.0" + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz", - "integrity": "sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==", - "dev": true, + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", + "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", "dependencies": { - "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/types": "8.4.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, "node_modules/@vite-pwa/assets-generator": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@vite-pwa/assets-generator/-/assets-generator-0.2.4.tgz", @@ -4396,38 +4288,84 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@welshman/content": { + "node_modules/@welshman/app": { "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@welshman/content/-/content-0.0.7.tgz", - "integrity": "sha512-WOMfRtTBue/ZqiKU1pysnvviYIlT2J8om914ciQl0+VmQhtK+QK1oQq547iFG94YG0oY21ilTb9L9y8Sqa3NvA==", + "resolved": "https://registry.npmjs.org/@welshman/app/-/app-0.0.7.tgz", + "integrity": "sha512-37dTcUDe+6wLhCFClexuJZKCZyGHgGoiFBvm8EL6ig4UHRMRWH2NCeddftScq0gEIl2GVWuq96iCni9COc7nRw==", + "dependencies": { + "@welshman/lib": "0.0.17", + "@welshman/net": "0.0.22", + "@welshman/signer": "0.0.5", + "@welshman/store": "0.0.7", + "@welshman/util": "0.0.31", + "fuse.js": "^7.0.0", + "idb": "^8.0.0", + "svelte": "^4.2.18", + "throttle-debounce": "^5.0.2" + } + }, + "node_modules/@welshman/content": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@welshman/content/-/content-0.0.9.tgz", + "integrity": "sha512-tmzSRvVmOdet+X9W1vmjqHf4tkyhxotZ0qG7+iVPd7SjRSvuDmq09odT19rQtWn5Pl8mmEREyQgqzTRubDbsxg==", "dependencies": { "@braintree/sanitize-url": "^7.0.2", - "nostr-tools": "^2.7.0" + "nostr-tools": "^2.7.2" } }, "node_modules/@welshman/dvm": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@welshman/dvm/-/dvm-0.0.4.tgz", - "integrity": "sha512-/U5DIVScXnuAu64+0KjsHBZQIciCbMlgTg0qXopueE9unpVtmDEM6ed6BaRQiiMOadXRF/7gjtYDXv8bn+mMbg==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@welshman/dvm/-/dvm-0.0.7.tgz", + "integrity": "sha512-GwMM9X9PXiI0OmajhRJibf5UQgBNptteZJGe7r0i3Z6ZY50VDbvypVJdLEk1/+g8FfhAF7OgEENIUP/UU4O9oA==", + "dependencies": { + "@welshman/lib": "0.0.17", + "@welshman/net": "0.0.21", + "@welshman/util": "0.0.30", + "nostr-tools": "^2.7.2" + } + }, + "node_modules/@welshman/dvm/node_modules/@welshman/net": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@welshman/net/-/net-0.0.21.tgz", + "integrity": "sha512-BOWRevNJjyNHshxr0eFn/yBjjVIuvofyy/Q+eYuLLTRwolFkqmaiN8xuG3wFndPi5z2uuC87Ay4PmRTzp+kCSg==", + "dependencies": { + "@welshman/lib": "0.0.17", + "@welshman/util": "0.0.30", + "isomorphic-ws": "^5.0.0", + "ws": "^8.16.0" + } + }, + "node_modules/@welshman/dvm/node_modules/@welshman/util": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@welshman/util/-/util-0.0.30.tgz", + "integrity": "sha512-CYLtaXfCod5Xo/OCXPUGYKwT+fRwm5DU7ASqcGwPuB/vadDodT/OJPSmrMH9Pq63VY9xK4gX/I2ma/rKRokdpg==", "dependencies": { - "@welshman/lib": "0.0.14", - "@welshman/net": "0.0.18", - "@welshman/util": "0.0.25", - "nostr-tools": "^2.7.0" + "@welshman/lib": "0.0.17", + "nostr-tools": "^2.7.2" } }, "node_modules/@welshman/feeds": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@welshman/feeds/-/feeds-0.0.14.tgz", - "integrity": "sha512-ZQV+4zCARt+GchuAfjHFppI7jLWYY3UjSjRmM9gLFj950X3CTAYCy/Ybwy59iVW1yC1d7OXAuMt7fIHdAKINAg==", + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/@welshman/feeds/-/feeds-0.0.17.tgz", + "integrity": "sha512-h950rGEE4Y4xq14z9vrTGx4WsZ6VQAq8nv4FLNpbAhDW5ICG5zC0IdEXRA5HJb9Wz/uqDr6YX95pMUIJU5LGfw==", + "dependencies": { + "@welshman/lib": "0.0.17", + "@welshman/util": "0.0.30" + } + }, + "node_modules/@welshman/feeds/node_modules/@welshman/util": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@welshman/util/-/util-0.0.30.tgz", + "integrity": "sha512-CYLtaXfCod5Xo/OCXPUGYKwT+fRwm5DU7ASqcGwPuB/vadDodT/OJPSmrMH9Pq63VY9xK4gX/I2ma/rKRokdpg==", "dependencies": { - "@welshman/util": "0.0.25" + "@welshman/lib": "0.0.17", + "nostr-tools": "^2.7.2" } }, "node_modules/@welshman/lib": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@welshman/lib/-/lib-0.0.14.tgz", - "integrity": "sha512-q5sWp3psLcouajdP97PZs2D44WoMZ0cwwT7EWUdShIPgisRJq9hjuMLSkUFqdgfJ3qBn72SSjcMMfDnkcQja4A==", + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/@welshman/lib/-/lib-0.0.17.tgz", + "integrity": "sha512-C0yelgMD6F5hgIcDjflJ+1Qg9/yvodtxSE00p1DZgkTn0s/7znvxraYpQInQdhqp8vJ8r+3coR3YagrRdm9+LA==", "dependencies": { "@scure/base": "^1.1.6", "@types/events": "^3.0.3", @@ -4437,73 +4375,64 @@ } }, "node_modules/@welshman/net": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@welshman/net/-/net-0.0.18.tgz", - "integrity": "sha512-5a6iKetUSDQisiG7/Cr61x9oSLhLNifqN/qzdOKW8Mu8ZqkOFYMIFPonLKT3UdixByvXn+RH5ka3b/nB77bBIA==", + "version": "0.0.22", + "resolved": "https://registry.npmjs.org/@welshman/net/-/net-0.0.22.tgz", + "integrity": "sha512-sXdHevglDqLujQrhXFUwSPsC0Zu/SY2WWy049Citpi1nej4JnAjCbpI8XUeI1it80a84dWa+vGA5Da4OhCYkmA==", "dependencies": { - "@welshman/lib": "0.0.14", - "@welshman/util": "0.0.25", + "@welshman/lib": "0.0.17", + "@welshman/util": "0.0.31", "isomorphic-ws": "^5.0.0", "ws": "^8.16.0" } }, "node_modules/@welshman/signer": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@welshman/signer/-/signer-0.0.2.tgz", - "integrity": "sha512-24K8A5Xnfsijq108+CQI+rvFhbhr+L14YitC/gA69VKnhSSEJTeaIvnKs9YSrHVX0BAYD3/kUNVpeYF3kp7YfA==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@welshman/signer/-/signer-0.0.5.tgz", + "integrity": "sha512-i3SUEF4yAb8up2qk6hdLyRytnkRt5W+5KyrbN1RmFcQpDC/foa3nYO+Q0mydwXIX3h6HAV7MzO8vi9tHWJ30Ww==", "dependencies": { - "@welshman/lib": "^0.0.13", - "@welshman/net": "^0.0.17", - "@welshman/util": "^0.0.24" - } - }, - "node_modules/@welshman/signer/node_modules/@welshman/lib": { - "version": "0.0.13", - "resolved": "https://registry.npmjs.org/@welshman/lib/-/lib-0.0.13.tgz", - "integrity": "sha512-tp5+KAiUwoid04Pap47uqkz3MWDqA1iy+JklX7qu5WppClehMgkYfePtCbKOQ8LS9psl88xnZM1oR8NtDhVqnA==", - "dependencies": { - "@scure/base": "^1.1.6", - "@types/events": "^3.0.3", - "@types/throttle-debounce": "^5.0.2", - "events": "^3.3.0", - "throttle-debounce": "^5.0.0" + "@welshman/lib": "0.0.17", + "@welshman/net": "0.0.21", + "@welshman/util": "0.0.30", + "nostr-tools": "^2.7.2" } }, "node_modules/@welshman/signer/node_modules/@welshman/net": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/@welshman/net/-/net-0.0.17.tgz", - "integrity": "sha512-m2hvpb3AdHPmmhtfc16oy03523TG+6ggM9bt7vOLfKZl67qg9ki5VHFRxd7VPRuKosvNabeIErWBsXIxtKWdJg==", + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@welshman/net/-/net-0.0.21.tgz", + "integrity": "sha512-BOWRevNJjyNHshxr0eFn/yBjjVIuvofyy/Q+eYuLLTRwolFkqmaiN8xuG3wFndPi5z2uuC87Ay4PmRTzp+kCSg==", "dependencies": { - "@welshman/lib": "0.0.13", - "@welshman/util": "0.0.24", + "@welshman/lib": "0.0.17", + "@welshman/util": "0.0.30", "isomorphic-ws": "^5.0.0", "ws": "^8.16.0" } }, "node_modules/@welshman/signer/node_modules/@welshman/util": { - "version": "0.0.24", - "resolved": "https://registry.npmjs.org/@welshman/util/-/util-0.0.24.tgz", - "integrity": "sha512-Qpe0J5VCYpqhpGB4f966d4FAw65L3JE2xYSqhBGbbfdMXnteqW6nHClP0YVbX9pMSYGRPn3ZXWkWf33yqImbGQ==", + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@welshman/util/-/util-0.0.30.tgz", + "integrity": "sha512-CYLtaXfCod5Xo/OCXPUGYKwT+fRwm5DU7ASqcGwPuB/vadDodT/OJPSmrMH9Pq63VY9xK4gX/I2ma/rKRokdpg==", "dependencies": { - "@welshman/lib": "0.0.13", - "nostr-tools": "^2.3.2" + "@welshman/lib": "0.0.17", + "nostr-tools": "^2.7.2" } }, "node_modules/@welshman/store": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@welshman/store/-/store-0.0.2.tgz", - "integrity": "sha512-VjyXFP6KILCldtHykTAwdCHhAQVNjpDy2lZrXho1YNDMBxuuskXtmj3AzS6iJuq6zZOKWN+iEDOzjqxbI5raFA==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@welshman/store/-/store-0.0.7.tgz", + "integrity": "sha512-Ltx2RYwMicCeGWBdl3+Wr+pilIdofmNSDKTqgOqtPanOgSarGn7uqZnPzDz9N+P0htg2TDSogg7YkBWf5drhDw==", "dependencies": { + "@welshman/lib": "0.0.17", + "@welshman/util": "0.0.31", "svelte": "^4.2.18" } }, "node_modules/@welshman/util": { - "version": "0.0.25", - "resolved": "https://registry.npmjs.org/@welshman/util/-/util-0.0.25.tgz", - "integrity": "sha512-Y0n7YKIyJmhqhUvi9iOTg21PnMPFgEJpoAfaQ1IypKfjUjLMfBe3blKQ/elO/W+nquZLHIFuSY9hNMLpXSnZ+Q==", + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/@welshman/util/-/util-0.0.31.tgz", + "integrity": "sha512-nUv/Mto6maQx6vbCaZ0HKQRvLYRWqQzPTLsKoxSDX0HkeFP653T6raFx8TvWt+op/qBuuT8sANJactc2/qGoYg==", "dependencies": { - "@welshman/lib": "0.0.14", - "nostr-tools": "^2.3.2" + "@welshman/lib": "0.0.17", + "nostr-tools": "^2.7.2" } }, "node_modules/@xmldom/xmldom": { @@ -4516,9 +4445,9 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "bin": { "acorn": "bin/acorn" }, @@ -4530,7 +4459,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -4552,7 +4480,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -4680,8 +4607,7 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/aria-query": { "version": "5.3.0", @@ -4706,15 +4632,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", @@ -4820,9 +4737,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", - "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "dev": true, "funding": [ { @@ -4839,11 +4756,11 @@ } ], "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001599", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -5102,7 +5019,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -5253,10 +5169,10 @@ } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "devOptional": true, + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -5272,10 +5188,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "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" @@ -5312,6 +5228,7 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, "engines": { "node": "*" } @@ -5416,10 +5333,10 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001620", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", - "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==", - "devOptional": true, + "version": "1.0.30001655", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", + "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", + "dev": true, "funding": [ { "type": "opencollective", @@ -5445,7 +5362,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5461,7 +5377,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5764,7 +5679,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "devOptional": true + "dev": true }, "node_modules/core-js-compat": { "version": "3.37.1", @@ -5838,7 +5753,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5909,13 +5823,13 @@ } }, "node_modules/cypress": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.9.0.tgz", - "integrity": "sha512-atNjmYfHsvTuCaxTxLZr9xGoHz53LLui3266WWxXJHY7+N6OdwJdg/feEa3T+buez9dmUXHT1izCOklqG82uCQ==", + "version": "13.14.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.14.1.tgz", + "integrity": "sha512-Wo+byPmjps66hACEH5udhXINEiN3qS3jWNGRzJOjrRJF3D0+YrcP2LVB1T7oYaVQM/S+eanqEvBWYc8cf7Vcbg==", "dev": true, "hasInstallScript": true, "dependencies": { - "@cypress/request": "^3.0.0", + "@cypress/request": "^3.0.1", "@cypress/xvfb": "^1.2.4", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", @@ -5954,7 +5868,7 @@ "request-progress": "^3.0.0", "semver": "^7.5.3", "supports-color": "^8.1.1", - "tmp": "~0.2.1", + "tmp": "~0.2.3", "untildify": "^4.0.0", "yauzl": "^2.10.0" }, @@ -6035,9 +5949,9 @@ } }, "node_modules/date-picker-svelte": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/date-picker-svelte/-/date-picker-svelte-2.12.0.tgz", - "integrity": "sha512-RsnTC6DR5qY+pGgRkdaoO0qWQfF8ho+5VacQjNh3PXOjSZrRaXUGrOGUbTZZBT6nzyZR0yRkEncFI+/1GMcxfw==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/date-picker-svelte/-/date-picker-svelte-2.13.0.tgz", + "integrity": "sha512-A0MMma1uv+/sL8MwgGuEPv/UJnhR6CmWg5aR8XhYeAX/I8+RQmQh+jpwIL0Z3/g4CGo9OhNZn+VicHpvnNCCtA==", "peerDependencies": { "svelte": "^3.24.0 || ^4.0.0" } @@ -6052,7 +5966,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "devOptional": true, "dependencies": { "ms": "2.1.2" }, @@ -6127,8 +6040,7 @@ "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==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "node_modules/deepmerge": { "version": "4.3.1", @@ -6213,14 +6125,6 @@ "minimalistic-assert": "^1.0.0" } }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "engines": { - "node": ">=8" - } - }, "node_modules/detect-libc": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -6257,36 +6161,12 @@ "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "dev": true }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/domain-browser": { "version": "4.23.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz", @@ -6343,10 +6223,10 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.777", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.777.tgz", - "integrity": "sha512-n02NCwLJ3wexLfK/yQeqfywCblZqLcXphzmid5e8yVPdtEcida7li0A5WQKghHNG0FeOMCzeFOzEbtAh5riXFw==", - "devOptional": true + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", + "dev": true }, "node_modules/elementtree": { "version": "0.1.7", @@ -6361,9 +6241,9 @@ } }, "node_modules/elliptic": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.6.tgz", - "integrity": "sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ==", + "version": "6.5.7", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", + "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", "dev": true, "dependencies": { "bn.js": "^4.11.9", @@ -6386,11 +6266,6 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "node_modules/encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" - }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -6555,15 +6430,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==" - }, "node_modules/esbuild": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "bin": { @@ -6573,36 +6443,36 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "devOptional": true, + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, "engines": { "node": ">=6" } @@ -6617,7 +6487,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { "node": ">=10" }, @@ -6626,41 +6495,36 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", + "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.9.1", "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -6674,16 +6538,24 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-compat-utils": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz", - "integrity": "sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, "dependencies": { "semver": "^7.5.4" @@ -6695,24 +6567,34 @@ "eslint": ">=6.0.0" } }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, "node_modules/eslint-plugin-svelte": { - "version": "2.39.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.39.0.tgz", - "integrity": "sha512-FXktBLXsrxbA+6ZvJK2z/sQOrUKyzSg3fNWK5h0reSCjr2fjAsc9ai/s/JvSl4Hgvz3nYVtTIMwarZH5RcB7BA==", + "version": "2.43.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.43.0.tgz", + "integrity": "sha512-REkxQWvg2pp7QVLxQNa+dJ97xUqRe7Y2JJbSWkHSuszu0VcblZtXkPBPckkivk99y5CdLw4slqfPylL2d/X4jQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@jridgewell/sourcemap-codec": "^1.4.15", - "debug": "^4.3.4", - "eslint-compat-utils": "^0.5.0", + "eslint-compat-utils": "^0.5.1", "esutils": "^2.0.3", - "known-css-properties": "^0.31.0", + "known-css-properties": "^0.34.0", "postcss": "^8.4.38", "postcss-load-config": "^3.1.4", "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.16", - "semver": "^7.6.0", - "svelte-eslint-parser": ">=0.36.0 <1.0.0" + "postcss-selector-parser": "^6.1.0", + "semver": "^7.6.2", + "svelte-eslint-parser": "^0.41.0" }, "engines": { "node": "^14.17.0 || >=16.0.0" @@ -6722,7 +6604,7 @@ }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0", - "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.112" + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.191" }, "peerDependenciesMeta": { "svelte": { @@ -6731,16 +6613,15 @@ } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -6750,7 +6631,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -6762,17 +6642,26 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6781,17 +6670,27 @@ } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -6801,7 +6700,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -6813,7 +6711,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, "dependencies": { "estraverse": "^5.2.0" }, @@ -6825,7 +6722,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -6842,7 +6738,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6958,8 +6853,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-fifo": { "version": "1.3.2", @@ -6996,14 +6890,12 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "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==", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fastq": { "version": "1.17.1", @@ -7058,6 +6950,19 @@ "pend": "~1.2.0" } }, + "node_modules/fdir": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.3.0.tgz", + "integrity": "sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -7083,15 +6988,14 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/filelist": { @@ -7130,7 +7034,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -7143,39 +7046,21 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=16" } }, "node_modules/flatted": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" }, "node_modules/for-each": { "version": "0.3.3", @@ -7297,7 +7182,8 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -7357,7 +7243,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6.9.0" } @@ -7453,6 +7339,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7472,7 +7359,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -7484,6 +7370,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7493,6 +7380,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -7516,15 +7404,11 @@ } }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7545,26 +7429,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -7584,8 +7448,7 @@ "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" }, "node_modules/has-bigints": { "version": "1.0.2", @@ -7599,7 +7462,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -7694,9 +7556,9 @@ } }, "node_modules/hls.js": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.8.tgz", - "integrity": "sha512-hJYMPfLhWO7/7+n4f9pn6bOheCGx0WgvVz7k3ouq3Pp1bja48NN+HeCQu3XCGYzqWQF/wo7Sk6dJAyWVJD8ECA==" + "version": "1.5.15", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.15.tgz", + "integrity": "sha512-6cD7xN6bycBHaXz2WyPIaHn/iXFizE5au2yvY5q9aC4wfihxAr16C9fUy4nxh2a3wOw0fEgLRa9dN6wsYjlpNg==" }, "node_modules/hmac-drbg": { "version": "1.0.1", @@ -7751,15 +7613,24 @@ "ramda": "^0.29.1" } }, + "node_modules/hurdak/node_modules/ramda": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.1.tgz", + "integrity": "sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda" + } + }, "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.5.tgz", + "integrity": "sha512-rowAVRUBfI0b4+niA4SJMhfQwc107VLkBUgEYYAOQAbqDCnra1nYh83hF/MDmhYs9t9n1E3DuKOrs2LYNC+0Ag==", "bin": { - "husky": "lib/bin.js" + "husky": "bin.js" }, "engines": { - "node": ">=14" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/typicode" @@ -7800,7 +7671,6 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, "engines": { "node": ">= 4" } @@ -7824,7 +7694,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -7842,6 +7711,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -7850,7 +7720,8 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/ini": { "version": "2.0.0", @@ -8185,7 +8056,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -8431,7 +8301,7 @@ "version": "1.21.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", - "dev": true, + "devOptional": true, "bin": { "jiti": "bin/jiti.js" } @@ -8445,7 +8315,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -8463,7 +8332,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "devOptional": true, + "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -8474,8 +8343,7 @@ "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", @@ -8491,14 +8359,12 @@ "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "node_modules/json-stringify-safe": { "version": "5.0.1", @@ -8510,7 +8376,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "devOptional": true, + "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -8558,7 +8424,6 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, "dependencies": { "json-buffer": "3.0.1" } @@ -8573,9 +8438,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", - "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", + "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", "dev": true }, "node_modules/lazy-ass": { @@ -8600,7 +8465,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -8613,7 +8477,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=10" } @@ -8682,7 +8546,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -8708,8 +8571,7 @@ "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "node_modules/lodash.once": { "version": "4.1.1", @@ -8783,14 +8645,6 @@ "loose-envify": "cli.js" } }, - "node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "engines": { - "node": "14 || >=16.14" - } - }, "node_modules/magic-string": { "version": "0.30.10", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", @@ -8800,9 +8654,9 @@ } }, "node_modules/marked": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-11.2.0.tgz", - "integrity": "sha512-HR0m3bvu0jAPYiIvLUUQtdg1g6D247//lvcekpHO1WMvbwDlwSkZAX9Lw4F4YHE1T0HaaNve0tuAWuV1UJ6vtw==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.0.tgz", + "integrity": "sha512-P93GikH/Pde0hM5TAXEd8I4JAYi8IB03n8qzW8Bh1BIEFpEyBoYxi/XWZA53LSpTeLBiMQOoSMj0u5E/tiVYTA==", "bin": { "marked": "bin/marked.js" }, @@ -8849,17 +8703,28 @@ } }, "node_modules/micromatch": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.6.tgz", - "integrity": "sha512-Y4Ypn3oujJYxJcMacVgcs92wofTHxp9FzfDpQON4msDefoC0lb3ETvQLOdLcbhSwU1bz8HrL/1sygfBIHudrkQ==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dependencies": { "braces": "^3.0.3", - "picomatch": "^4.0.2" + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", @@ -8921,14 +8786,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "engines": { - "node": ">=4" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -8945,7 +8802,6 @@ "version": "9.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -8960,6 +8816,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8998,17 +8855,6 @@ "node": ">=8" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "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", @@ -9026,8 +8872,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "devOptional": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/mz": { "version": "2.7.0", @@ -9044,7 +8889,7 @@ "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -9101,8 +8946,7 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "node_modules/nice-try": { "version": "1.0.5", @@ -9128,10 +8972,10 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "devOptional": true + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true }, "node_modules/node-stdlib-browser": { "version": "1.2.0", @@ -9225,9 +9069,9 @@ } }, "node_modules/nostr-tools": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.7.0.tgz", - "integrity": "sha512-jJoL2J1CBiKDxaXZww27nY/Wsuxzx7AULxmGKFce4sskDu1tohNyfnzYQ8BvDyvkstU8kNZUAXPL32tre33uig==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.7.2.tgz", + "integrity": "sha512-Bq3Ug0SZFtgtL1+0wCnAe8AJtI7yx/00/a2nUug9SkhfOwlKS92Tef12iCK9FdwXw+oFZWMtRnSwcLayQso+xA==", "dependencies": { "@noble/ciphers": "^0.5.1", "@noble/curves": "1.2.0", @@ -9557,7 +9401,6 @@ "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -9586,7 +9429,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -9601,7 +9443,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -9699,6 +9540,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -9707,7 +9549,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -9733,14 +9574,11 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-type": { - "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" - } + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/pbkdf2": { "version": "3.1.2", @@ -9789,6 +9627,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "devOptional": true, "engines": { "node": ">=12" }, @@ -9868,10 +9707,10 @@ } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", - "devOptional": true, + "version": "8.4.44", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz", + "integrity": "sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==", + "dev": true, "funding": [ { "type": "opencollective", @@ -9888,7 +9727,7 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "source-map-js": "^1.2.0" }, "engines": { @@ -9935,7 +9774,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "devOptional": true, + "dev": true, "dependencies": { "lilconfig": "^2.0.5", "yaml": "^1.10.2" @@ -10022,9 +9861,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -10104,15 +9943,14 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -10125,9 +9963,9 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.3.tgz", - "integrity": "sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.6.tgz", + "integrity": "sha512-Y1XWLw7vXUQQZmgv1JAEiLcErqUniAF2wO7QJsw8BVMvpLET2dI5WpEIEJx1r11iHVdSMzQxivyfrH9On9t2IQ==", "dev": true, "peerDependencies": { "prettier": "^3.0.0", @@ -10135,9 +9973,9 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.5.14", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.5.14.tgz", - "integrity": "sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==", + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.6.tgz", + "integrity": "sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==", "dev": true, "engines": { "node": ">=14.21.3" @@ -10154,6 +9992,7 @@ "prettier-plugin-import-sort": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", + "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", @@ -10191,6 +10030,9 @@ "prettier-plugin-marko": { "optional": true }, + "prettier-plugin-multiline-arrays": { + "optional": true + }, "prettier-plugin-organize-attributes": { "optional": true }, @@ -10302,7 +10144,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, "engines": { "node": ">=6" } @@ -10316,12 +10157,11 @@ } }, "node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", "dependencies": { "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", "pngjs": "^5.0.0", "yargs": "^15.3.1" }, @@ -10393,9 +10233,9 @@ "dev": true }, "node_modules/ramda": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.1.tgz", - "integrity": "sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", + "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/ramda" @@ -10787,9 +10627,9 @@ } }, "node_modules/rollup": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz", - "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.2.tgz", + "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -10802,22 +10642,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.17.2", - "@rollup/rollup-android-arm64": "4.17.2", - "@rollup/rollup-darwin-arm64": "4.17.2", - "@rollup/rollup-darwin-x64": "4.17.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.17.2", - "@rollup/rollup-linux-arm-musleabihf": "4.17.2", - "@rollup/rollup-linux-arm64-gnu": "4.17.2", - "@rollup/rollup-linux-arm64-musl": "4.17.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2", - "@rollup/rollup-linux-riscv64-gnu": "4.17.2", - "@rollup/rollup-linux-s390x-gnu": "4.17.2", - "@rollup/rollup-linux-x64-gnu": "4.17.2", - "@rollup/rollup-linux-x64-musl": "4.17.2", - "@rollup/rollup-win32-arm64-msvc": "4.17.2", - "@rollup/rollup-win32-ia32-msvc": "4.17.2", - "@rollup/rollup-win32-x64-msvc": "4.17.2", + "@rollup/rollup-android-arm-eabi": "4.21.2", + "@rollup/rollup-android-arm64": "4.21.2", + "@rollup/rollup-darwin-arm64": "4.21.2", + "@rollup/rollup-darwin-x64": "4.21.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.2", + "@rollup/rollup-linux-arm-musleabihf": "4.21.2", + "@rollup/rollup-linux-arm64-gnu": "4.21.2", + "@rollup/rollup-linux-arm64-musl": "4.21.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2", + "@rollup/rollup-linux-riscv64-gnu": "4.21.2", + "@rollup/rollup-linux-s390x-gnu": "4.21.2", + "@rollup/rollup-linux-x64-gnu": "4.21.2", + "@rollup/rollup-linux-x64-musl": "4.21.2", + "@rollup/rollup-win32-arm64-msvc": "4.21.2", + "@rollup/rollup-win32-ia32-msvc": "4.21.2", + "@rollup/rollup-win32-x64-msvc": "4.21.2", "fsevents": "~2.3.2" } }, @@ -10922,28 +10762,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", - "dependencies": { - "es6-promise": "^3.1.2", - "graceful-fs": "^4.1.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.2" - } - }, - "node_modules/sander/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/sax": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", @@ -10951,9 +10769,9 @@ "dev": true }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -11025,42 +10843,41 @@ } }, "node_modules/sharp": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.4.tgz", - "integrity": "sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", "hasInstallScript": true, "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", - "semver": "^7.6.0" + "semver": "^7.6.3" }, "engines": { - "libvips": ">=8.15.2", "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.4", - "@img/sharp-darwin-x64": "0.33.4", - "@img/sharp-libvips-darwin-arm64": "1.0.2", - "@img/sharp-libvips-darwin-x64": "1.0.2", - "@img/sharp-libvips-linux-arm": "1.0.2", - "@img/sharp-libvips-linux-arm64": "1.0.2", - "@img/sharp-libvips-linux-s390x": "1.0.2", - "@img/sharp-libvips-linux-x64": "1.0.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", - "@img/sharp-libvips-linuxmusl-x64": "1.0.2", - "@img/sharp-linux-arm": "0.33.4", - "@img/sharp-linux-arm64": "0.33.4", - "@img/sharp-linux-s390x": "0.33.4", - "@img/sharp-linux-x64": "0.33.4", - "@img/sharp-linuxmusl-arm64": "0.33.4", - "@img/sharp-linuxmusl-x64": "0.33.4", - "@img/sharp-wasm32": "0.33.4", - "@img/sharp-win32-ia32": "0.33.4", - "@img/sharp-win32-x64": "0.33.4" + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" } }, "node_modules/sharp-ico": { @@ -11078,7 +10895,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -11090,7 +10906,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -11190,15 +11005,6 @@ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -11222,20 +11028,6 @@ "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", "dev": true }, - "node_modules/sorcery": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", - "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.14", - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0" - }, - "bin": { - "sorcery": "bin/sorcery" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11570,22 +11362,10 @@ "node": ">=6" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" }, @@ -11682,9 +11462,9 @@ } }, "node_modules/svelte": { - "version": "4.2.18", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.18.tgz", - "integrity": "sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==", + "version": "4.2.19", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", + "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", @@ -11706,36 +11486,37 @@ } }, "node_modules/svelte-check": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.7.1.tgz", - "integrity": "sha512-U4uJoLCzmz2o2U33c7mPDJNhRYX/DNFV11XTUDlFxaKLsO7P+40gvJHMPpoRfa24jqZfST4/G9fGNcUGMO8NAQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.0.0.tgz", + "integrity": "sha512-QgKO6OQbee9B2dyWZgrGruS3WHKrUZ718Ug53nK45vamsx93Al3on6tOrxyCMVX+OMOLLlrenn7b2VAomePwxQ==", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.25", "chokidar": "^3.4.1", - "fast-glob": "^3.2.7", - "import-fresh": "^3.2.1", + "fdir": "^6.2.0", "picocolors": "^1.0.0", - "sade": "^1.7.4", - "svelte-preprocess": "^5.1.3", - "typescript": "^5.0.3" + "sade": "^1.7.4" }, "bin": { "svelte-check": "bin/svelte-check" }, + "engines": { + "node": ">= 18.0.0" + }, "peerDependencies": { - "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0" + "svelte": "^4.0.0 || ^5.0.0-next.0", + "typescript": ">=5.0.0" } }, "node_modules/svelte-eslint-parser": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.36.0.tgz", - "integrity": "sha512-/6YmUSr0FAVxW8dXNdIMydBnddPMHzaHirAZ7RrT21XYdgGGZMh0LQG6CZsvAFS4r2Y4ItUuCQc8TQ3urB30mQ==", + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.41.0.tgz", + "integrity": "sha512-L6f4hOL+AbgfBIB52Z310pg1d2QjRqm7wy3kI1W6hhdhX5bvu7+f0R6w4ykp5HoDdzq+vGhIJmsisaiJDGmVfA==", "dev": true, "dependencies": { "eslint-scope": "^7.2.2", "eslint-visitor-keys": "^3.4.3", "espree": "^9.6.1", - "postcss": "^8.4.38", + "postcss": "^8.4.39", "postcss-scss": "^4.0.9" }, "engines": { @@ -11745,7 +11526,7 @@ "url": "https://github.com/sponsors/ota-meshi" }, "peerDependencies": { - "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.115" + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.191" }, "peerDependenciesMeta": { "svelte": { @@ -11753,6 +11534,39 @@ } } }, + "node_modules/svelte-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/svelte-eslint-parser/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/svelte-hmr": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", @@ -11776,32 +11590,26 @@ "integrity": "sha512-mthHQ2TwiwzTWzbFry3CBnVEfzqPOD9WkVw84OfSYzHRq6N9wgQ+yv37u81uPeuLU/ZOIPqhujpXquB1aol5ZQ==" }, "node_modules/svelte-preprocess": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.4.tgz", - "integrity": "sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.2.tgz", + "integrity": "sha512-OvDTLfaOkkhjprbDKO0SOCkjNYuHy16dbD4SpqbIi6QiabOMHxRT4km5/dzbFFkmW1L0E2INF3MFltG2pgOyKQ==", + "dev": true, "hasInstallScript": true, - "dependencies": { - "@types/pug": "^2.0.6", - "detect-indent": "^6.1.0", - "magic-string": "^0.30.5", - "sorcery": "^0.11.0", - "strip-indent": "^3.0.0" - }, "engines": { - "node": ">= 16.0.0" + "node": ">= 18.0.0" }, "peerDependencies": { "@babel/core": "^7.10.2", "coffeescript": "^2.5.1", "less": "^3.11.3 || ^4.0.0", "postcss": "^7 || ^8", - "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", + "postcss-load-config": ">=3", "pug": "^3.0.0", "sass": "^1.26.8", - "stylus": "^0.55.0", + "stylus": ">=0.55", "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0", - "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" + "svelte": "^4.0.0 || ^5.0.0-next.100 || ^5.0.0", + "typescript": "^5.0.0" }, "peerDependenciesMeta": { "@babel/core": { @@ -11837,9 +11645,12 @@ } }, "node_modules/svelte-range-slider-pips": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/svelte-range-slider-pips/-/svelte-range-slider-pips-2.3.1.tgz", - "integrity": "sha512-P29PNqHld+SiaDuHzf98rLvhSYWXb3TVL9p7U5RG9UX8emUgypZgp9zuIIwpmIXysGQC6JG8duMc5FuaPnSVdg==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/svelte-range-slider-pips/-/svelte-range-slider-pips-3.1.1.tgz", + "integrity": "sha512-CaBczr0/egEr3ShYyFo3gDObZiYDEc7YBC35rQr8D2kWvisxCftE/+Znryk8YXva86Fq77tzQ4JeOfB+iUMjrg==", + "peerDependencies": { + "svelte": "^4.0.0" + } }, "node_modules/svelte-switch": { "version": "0.0.5", @@ -11847,9 +11658,9 @@ "integrity": "sha512-nVKSoOlJe1DNiiOyK/oMkZQwEuDgEq1fNmAYd+724Se8eyN/2HRbYiyOvDpNRpw0jJ+lE5vjLHfCruFrhJQFbA==" }, "node_modules/tailwindcss": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", - "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", + "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -12062,8 +11873,7 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "node_modules/thenify": { "version": "3.3.1", @@ -12087,9 +11897,9 @@ } }, "node_modules/throttle-debounce": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.0.tgz", - "integrity": "sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz", + "integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==", "engines": { "node": ">=12.22" } @@ -12130,6 +11940,19 @@ "node": ">=0.6.0" } }, + "node_modules/tinyglobby": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.5.tgz", + "integrity": "sha512-Dlqgt6h0QkoHttG53/WGADNh9QhcjCAIZMTERAVhdpmIBEejSuLI9ZmGKWzB7tweBjlk30+s/ofi4SLmBeTYhw==", + "dev": true, + "dependencies": { + "fdir": "^6.2.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/tippy.js": { "version": "6.3.7", "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", @@ -12157,7 +11980,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "devOptional": true, + "dev": true, "engines": { "node": ">=4" } @@ -12219,7 +12042,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", - "dev": true, "engines": { "node": ">=16" }, @@ -12272,7 +12094,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -12280,18 +12101,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typed-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", @@ -12362,18 +12171,18 @@ } }, "node_modules/types-ramda": { - "version": "0.29.10", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.29.10.tgz", - "integrity": "sha512-5PJiW/eiTPyXXBYGZOYGezMl6qj7keBiZheRwfjJZY26QPHsNrjfJnz0mru6oeqqoTHOni893Jfd6zyUXfQRWg==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", + "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", "dev": true, "dependencies": { "ts-toolbelt": "^9.6.0" } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -12382,6 +12191,28 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.4.0.tgz", + "integrity": "sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.4.0", + "@typescript-eslint/parser": "8.4.0", + "@typescript-eslint/utils": "8.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -12497,10 +12328,10 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", - "devOptional": true, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -12530,7 +12361,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -12580,9 +12410,9 @@ } }, "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } @@ -12607,9 +12437,9 @@ "dev": true }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -12642,14 +12472,14 @@ } }, "node_modules/vite": { - "version": "5.2.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz", - "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", + "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", "dev": true, "dependencies": { - "esbuild": "^0.20.1", - "postcss": "^8.4.38", - "rollup": "^4.13.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.41", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -12668,6 +12498,7 @@ "less": "*", "lightningcss": "^1.21.0", "sass": "*", + "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" @@ -12685,6 +12516,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -12697,15 +12531,15 @@ } }, "node_modules/vite-plugin-html-config": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/vite-plugin-html-config/-/vite-plugin-html-config-1.0.11.tgz", - "integrity": "sha512-hUybhgI+/LQQ5q6xoMMsTvI4PBuQD/Wv6Z1vtDPVWjanS8weCIexXuLLYNGD/93f0v8W2hpNfXpmxgpZMahJ0g==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vite-plugin-html-config/-/vite-plugin-html-config-2.0.2.tgz", + "integrity": "sha512-g09u0XsmgKyMUIp1RZSyNSkJWvIusaXxw3KylyxU3vkCq7/G8hyemLctT+4IvO42fCPlNySmrNC9g0qSoKmvpw==", "dev": true, "engines": { "node": ">=12.0.0" }, "peerDependencies": { - "vite": ">=2.0.0" + "vite": ">=5.0.0" } }, "node_modules/vite-plugin-node-polyfills": { @@ -12725,16 +12559,16 @@ } }, "node_modules/vite-plugin-pwa": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.17.5.tgz", - "integrity": "sha512-UxRNPiJBzh4tqU/vc8G2TxmrUTzT6BqvSzhszLk62uKsf+npXdvLxGDz9C675f4BJi6MbD2tPnJhi5txlMzxbQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.20.2.tgz", + "integrity": "sha512-9wLqHt/NjP7YKj6CCEKS5+Fhffo6tHGrAa+wvoqCG59oZkmpX5lBBl38MVjLaO4ELrLqjdtUhILJDwZu+q/hGQ==", "dev": true, "dependencies": { "debug": "^4.3.4", - "fast-glob": "^3.3.2", "pretty-bytes": "^6.1.1", - "workbox-build": "^7.0.0", - "workbox-window": "^7.0.0" + "tinyglobby": "^0.2.0", + "workbox-build": "^7.1.0", + "workbox-window": "^7.1.0" }, "engines": { "node": ">=16.0.0" @@ -12743,9 +12577,15 @@ "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { + "@vite-pwa/assets-generator": "^0.2.4", "vite": "^3.1.0 || ^4.0.0 || ^5.0.0", - "workbox-build": "^7.0.0", - "workbox-window": "^7.0.0" + "workbox-build": "^7.1.0", + "workbox-window": "^7.1.0" + }, + "peerDependenciesMeta": { + "@vite-pwa/assets-generator": { + "optional": true + } } }, "node_modules/vite-plugin-pwa/node_modules/pretty-bytes": { @@ -12801,7 +12641,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -12854,7 +12693,6 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -13329,7 +13167,7 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "devOptional": true, + "dev": true, "engines": { "node": ">= 6" } @@ -13429,7 +13267,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -13438,11 +13275,11 @@ } }, "node_modules/zustand": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.2.tgz", - "integrity": "sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.5.tgz", + "integrity": "sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==", "dependencies": { - "use-sync-external-store": "1.2.0" + "use-sync-external-store": "1.2.2" }, "engines": { "node": ">=12.7.0" diff --git a/package.json b/package.json index d2db03a3b..9355a1803 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "coracle", "private": true, - "version": "0.4.4", + "version": "0.4.10", "type": "module", "scripts": { "dev": "vite --host", @@ -9,84 +9,84 @@ "check:es": "eslint 'src/**/*.{js,ts,svelte}' --quiet", "check:ts": "svelte-check --tsconfig ./tsconfig.json --threshold error", "check:fmt": "prettier --check $(git diff head --name-only --diff-filter d | grep -E '(js|ts|svelte)$' | xargs)", - "check:errors": "run-p check:es check:ts", + "check:errors": "run-s check:ts check:es", "check": "run-p check:errors check:fmt", "format": "prettier --write $(git diff head --name-only --diff-filter d | grep -E '(js|ts|svelte)$' | xargs)", "watch": "find src -type f | entr -r" }, "devDependencies": { - "@capacitor/cli": "^6.0.0", - "@sveltejs/vite-plugin-svelte": "^3.1.0", + "@capacitor/cli": "^6.1.2", + "@sveltejs/vite-plugin-svelte": "^3.1.2", "@tsconfig/svelte": "^5.0.4", - "@types/ramda": "^0.29.12", + "@types/ramda": "^0.30.2", "@types/throttle-debounce": "^5.0.2", - "@typescript-eslint/eslint-plugin": "^7.7.0", - "@typescript-eslint/parser": "^7.7.0", "@vite-pwa/assets-generator": "^0.2.4", - "autoprefixer": "^10.4.19", - "cypress": "^13.7.3", + "autoprefixer": "^10.4.20", + "cypress": "^13.14.1", "dotenv": "^16.4.5", - "eslint": "^8.57.0", - "eslint-plugin-svelte": "^2.37.0", + "eslint": "^9.9.1", + "eslint-plugin-svelte": "^2.43.0", "favicons": "^7.2.0", - "postcss": "^8.4.38", - "prettier": "^3.2.5", - "prettier-plugin-svelte": "^3.2.3", - "prettier-plugin-tailwindcss": "^0.5.14", - "svelte-preprocess": "^5.1.3", - "tailwindcss": "^3.4.3", - "typescript": "^5.4.5", - "vite": "^5.2.8", - "vite-plugin-html-config": "^1.0.11", + "postcss": "^8.4.44", + "prettier": "^3.3.3", + "prettier-plugin-svelte": "^3.2.6", + "prettier-plugin-tailwindcss": "^0.6.6", + "svelte-preprocess": "^6.0.2", + "tailwindcss": "^3.4.10", + "typescript": "^5.5.4", + "vite": "^5.4.2", + "vite-plugin-html-config": "^2.0.2", "vite-plugin-node-polyfills": "^0.22.0", - "vite-plugin-pwa": "^0.17.5" + "vite-plugin-pwa": "^0.20.2" }, "dependencies": { - "@bugsnag/js": "^7.22.4", - "@capacitor/android": "^6.0.0", - "@capacitor/core": "^6.0.0", - "@capacitor/ios": "^6.0.0", - "@event-calendar/core": "^2.6.1", - "@event-calendar/day-grid": "^2.6.1", - "@event-calendar/interaction": "^2.6.1", - "@fortawesome/fontawesome-free": "^6.5.2", - "@getalby/bitcoin-connect": "^3.2.2", - "@scure/base": "^1.1.6", - "@welshman/content": "^0.0.8", - "@welshman/dvm": "^0.0.5", - "@welshman/feeds": "^0.0.15", - "@welshman/lib": "^0.0.15", - "@welshman/net": "^0.0.19", - "@welshman/signer": "^0.0.3", - "@welshman/store": "^0.0.3", - "@welshman/util": "^0.0.27", + "@bugsnag/js": "^8.0.0", + "@capacitor/android": "^6.1.2", + "@capacitor/core": "^6.1.2", + "@capacitor/ios": "^6.1.2", + "@event-calendar/core": "^3.4.0", + "@event-calendar/day-grid": "^3.4.0", + "@event-calendar/interaction": "^3.4.0", + "@fortawesome/fontawesome-free": "^6.6.0", + "@getalby/bitcoin-connect": "^3.6.2", + "@scure/base": "^1.1.7", + "@welshman/content": "^0.0.9", + "@welshman/lib": "^0.0.17", + "@welshman/util": "^0.0.31", + "@welshman/feeds": "^0.0.17", + "@welshman/store": "^0.0.7", + "@welshman/net": "^0.0.22", + "@welshman/dvm": "^0.0.7", + "@welshman/signer": "^0.0.5", + "@welshman/app": "^0.0.7", "bowser": "^2.11.0", "classnames": "^2.5.1", "compressorjs": "^1.2.1", - "date-picker-svelte": "^2.12.0", + "date-picker-svelte": "^2.13.0", + "eslint-config-prettier": "^9.1.0", "fuse.js": "^7.0.0", - "hls.js": "^1.5.8", + "hls.js": "^1.5.15", "hurdak": "^0.2.10", - "husky": "^8.0.3", + "husky": "^9.1.5", "idb": "^8.0.0", "insane": "^2.6.2", - "lru-cache": "^10.2.0", - "marked": "^11.2.0", + "marked": "^14.1.0", "normalize-url": "^8.0.1", - "nostr-tools": "^2.5.0", + "nostr-tools": "^2.7.2", "npm-run-all": "^4.1.5", "qr-scanner": "^1.4.2", - "qrcode": "^1.5.3", - "ramda": "^0.29.1", - "sharp": "^0.33.4", - "svelte": "^4.2.14", - "svelte-check": "^3.6.9", + "qrcode": "^1.5.4", + "ramda": "^0.30.1", + "sharp": "^0.33.5", + "svelte": "^4.2.19", + "svelte-check": "^4.0.0", "svelte-link-preview": "^0.3.3", "svelte-loading-spinners": "^0.3.6", - "svelte-range-slider-pips": "^2.3.1", + "svelte-range-slider-pips": "^3.1.1", "svelte-switch": "^0.0.5", - "throttle-debounce": "^5.0.0", + "throttle-debounce": "^5.0.2", "tippy.js": "^6.3.7", - "uuid": "^9.0.1" + "typescript-eslint": "^8.4.0", + "uuid": "^10.0.0" } } diff --git a/src/app/App.svelte b/src/app/App.svelte index e41f798fb..4f40df713 100644 --- a/src/app/App.svelte +++ b/src/app/App.svelte @@ -3,16 +3,15 @@ import "@fortawesome/fontawesome-free/css/solid.css" import {nip19} from "nostr-tools" - import {pluck} from "ramda" - import {seconds, Fetch} from "hurdak" import * as store from "svelte/store" import * as lib from "@welshman/lib" import * as util from "@welshman/util" import * as network from "@welshman/net" + import * as app from "@welshman/app" import logger from "src/util/logger" import * as misc from "src/util/misc" import * as nostr from "src/util/nostr" - import {storage, session, pubkey, relays, getSetting, dufflepud} from "src/engine" + import {ready} from "src/engine" import * as engine from "src/engine" import * as domain from "src/domain" import {loadAppData, slowConnections, loadUserData} from "src/app/state" @@ -22,6 +21,71 @@ import Routes from "src/app/Routes.svelte" import Nav from "src/app/Nav.svelte" import ForegroundButtons from "src/app/ForegroundButtons.svelte" + import About from "src/app/views/About.svelte" + import Bech32Entity from "src/app/views/Bech32Entity.svelte" + import Calendar from "src/app/views/Calendar.svelte" + import ChannelCreate from "src/app/views/ChannelCreate.svelte" + import ChannelsDetail from "src/app/views/ChannelsDetail.svelte" + import ChannelsList from "src/app/views/ChannelsList.svelte" + import DataExport from "src/app/views/DataExport.svelte" + import DataImport from "src/app/views/DataImport.svelte" + import EventDelete from "src/app/views/EventDelete.svelte" + import EventDetail from "src/app/views/EventDetail.svelte" + import EventEdit from "src/app/views/EventEdit.svelte" + import FeedCreate from "src/app/views/FeedCreate.svelte" + import FeedEdit from "src/app/views/FeedEdit.svelte" + import FeedList from "src/app/views/FeedList.svelte" + import GroupCreate from "src/app/views/GroupCreate.svelte" + import GroupDelete from "src/app/views/GroupDelete.svelte" + import GroupDetail from "src/app/views/GroupDetail.svelte" + import GroupEdit from "src/app/views/GroupEdit.svelte" + import GroupInfo from "src/app/views/GroupInfo.svelte" + import GroupList from "src/app/views/GroupList.svelte" + import GroupRotate from "src/app/views/GroupRotate.svelte" + import Help from "src/app/views/Help.svelte" + import Home from "src/app/views/Home.svelte" + import InviteAccept from "src/app/views/InviteAccept.svelte" + import InviteCreate from "src/app/views/InviteCreate.svelte" + import LabelCreate from "src/app/views/LabelCreate.svelte" + import ListCreate from "src/app/views/ListCreate.svelte" + import ListDetail from "src/app/views/ListDetail.svelte" + import ListEdit from "src/app/views/ListEdit.svelte" + import ListList from "src/app/views/ListList.svelte" + import ListSelect from "src/app/views/ListSelect.svelte" + import ListingDelete from "src/app/views/ListingDelete.svelte" + import ListingEdit from "src/app/views/ListingEdit.svelte" + import Login from "src/app/views/Login.svelte" + import LoginBunker from "src/app/views/LoginBunker.svelte" + import LoginConnect from "src/app/views/LoginConnect.svelte" + import LoginPrivKey from "src/app/views/LoginPrivKey.svelte" + import LoginPubKey from "src/app/views/LoginPubKey.svelte" + import Logout from "src/app/views/Logout.svelte" + import Market from "src/app/views/Market.svelte" + import MediaDetail from "src/app/views/MediaDetail.svelte" + import NoteCreate from "src/app/views/NoteCreate.svelte" + import NoteDelete from "src/app/views/NoteDelete.svelte" + import NoteDetail from "src/app/views/NoteDetail.svelte" + import Notifications from "src/app/views/Notifications.svelte" + import Onboarding from "src/app/views/Onboarding.svelte" + import PersonDetail from "src/app/views/PersonDetail.svelte" + import PersonFollowers from "src/app/views/PersonFollowers.svelte" + import PersonFollows from "src/app/views/PersonFollows.svelte" + import PersonInfo from "src/app/views/PersonInfo.svelte" + import PersonList from "src/app/shared/PersonList.svelte" + import Publishes from "src/app/views/Publishes.svelte" + import QRCode from "src/app/views/QRCode.svelte" + import RelayDetail from "src/app/views/RelayDetail.svelte" + import RelayList from "src/app/views/RelayList.svelte" + import RelayReview from "src/app/views/RelayReview.svelte" + import ReportCreate from "src/app/views/ReportCreate.svelte" + import Search from "src/app/views/Search.svelte" + import ThreadDetail from "src/app/views/ThreadDetail.svelte" + import UserContent from "src/app/views/UserContent.svelte" + import UserData from "src/app/views/UserData.svelte" + import UserKeys from "src/app/views/UserKeys.svelte" + import UserProfile from "src/app/views/UserProfile.svelte" + import UserSettings from "src/app/views/UserSettings.svelte" + import Zap from "src/app/views/Zap.svelte" import {isNil} from "ramda" import {onMount} from "svelte" import {logUsage} from "src/app/state" @@ -39,61 +103,63 @@ asEntity, } from "src/app/util/router" + const {session, pubkey} = app + // Routes - router.register("/about", import("src/app/views/About.svelte")) - router.register("/search", import("src/app/views/Search.svelte")) - router.register("/events", import("src/app/views/Calendar.svelte")) + router.register("/about", About) + router.register("/search", Search) + router.register("/events", Calendar) - router.register("/channels", import("src/app/views/ChannelsList.svelte"), { + router.register("/channels", ChannelsList, { requireSigner: true, }) - router.register("/channels/create", import("src/app/views/ChannelCreate.svelte"), { + router.register("/channels/create", ChannelCreate, { requireSigner: true, }) - router.register("/channels/requests", import("src/app/views/ChannelsList.svelte"), { + router.register("/channels/requests", ChannelsList, { requireSigner: true, }) - router.register("/channels/:channelId", import("src/app/views/ChannelsDetail.svelte"), { + router.register("/channels/:channelId", ChannelsDetail, { requireSigner: true, serializers: { channelId: asChannelId, }, }) - router.register("/events/:address", import("src/app/views/EventDetail.svelte"), { + router.register("/events/:address", EventDetail, { serializers: { address: asNaddr("address"), }, }) - router.register("/events/:address/edit", import("src/app/views/EventEdit.svelte"), { + router.register("/events/:address/edit", EventEdit, { serializers: { address: asNaddr("address"), }, }) - router.register("/events/:address/delete", import("src/app/views/EventDelete.svelte"), { + router.register("/events/:address/delete", EventDelete, { serializers: { address: asNaddr("address"), }, }) - router.register("/groups", import("src/app/views/GroupList.svelte")) - router.register("/groups/new", import("src/app/views/GroupCreate.svelte"), { + router.register("/groups", GroupList) + router.register("/groups/new", GroupCreate, { requireSigner: true, }) - router.register("/groups/:address/edit", import("src/app/views/GroupEdit.svelte"), { + router.register("/groups/:address/edit", GroupEdit, { requireSigner: true, serializers: { address: asNaddr("address"), }, }) - router.register("/groups/:address/delete", import("src/app/views/GroupDelete.svelte"), { + router.register("/groups/:address/delete", GroupDelete, { requireSigner: true, serializers: { address: asNaddr("address"), }, }) - router.register("/groups/:address/info", import("src/app/views/GroupInfo.svelte"), { + router.register("/groups/:address/info", GroupInfo, { serializers: { address: asNaddr("address"), }, @@ -107,7 +173,7 @@ }, }, ) - router.register("/groups/:address/rotate", import("src/app/views/GroupRotate.svelte"), { + router.register("/groups/:address/rotate", GroupRotate, { requireSigner: true, serializers: { address: asNaddr("address"), @@ -115,94 +181,94 @@ removeMembers: asCsv("removeMembers"), }, }) - router.register("/groups/:address/:activeTab", import("src/app/views/GroupDetail.svelte"), { + router.register("/groups/:address/:activeTab", GroupDetail, { serializers: { address: asNaddr("address"), claim: asString("claim"), }, }) - router.register("/groups/:address", import("src/app/views/GroupDetail.svelte"), { + router.register("/groups/:address", GroupDetail, { serializers: { address: asNaddr("address"), claim: asString("claim"), }, }) - router.register("/help/:topic", import("src/app/views/Help.svelte")) + router.register("/help/:topic", Help) - router.register("/invite", import("src/app/views/InviteAccept.svelte"), { + router.register("/invite", InviteAccept, { serializers: { people: asCsv("people"), relays: asCsv("relays"), groups: asCsv("groups"), }, }) - router.register("/invite/create", import("src/app/views/InviteCreate.svelte"), { + router.register("/invite/create", InviteCreate, { serializers: { initialPubkey: asUrlComponent("initialPubkey"), initialGroupAddress: asUrlComponent("initialGroupAddress"), }, }) - router.register("/feeds", import("src/app/views/FeedList.svelte")) - router.register("/feeds/create", import("src/app/views/FeedCreate.svelte")) - router.register("/feeds/:address", import("src/app/views/FeedEdit.svelte"), { + router.register("/feeds", FeedList) + router.register("/feeds/create", FeedCreate) + router.register("/feeds/:address", FeedEdit, { serializers: { address: asNaddr("address"), }, }) - router.register("/lists", import("src/app/views/ListList.svelte")) - router.register("/lists/create", import("src/app/views/ListCreate.svelte")) - router.register("/lists/:address", import("src/app/views/ListDetail.svelte"), { + router.register("/lists", ListList) + router.register("/lists/create", ListCreate) + router.register("/lists/:address", ListDetail, { serializers: { address: asNaddr("address"), }, }) - router.register("/lists/:address/edit", import("src/app/views/ListEdit.svelte"), { + router.register("/lists/:address/edit", ListEdit, { serializers: { address: asNaddr("address"), }, }) - router.register("/lists/select", import("src/app/views/ListSelect.svelte"), { + router.register("/lists/select", ListSelect, { serializers: { type: asString("type"), value: asString("value"), }, }) - router.register("/login", import("src/app/views/Login.svelte")) - router.register("/login/bunker", import("src/app/views/LoginBunker.svelte")) - router.register("/login/privkey", import("src/app/views/LoginPrivKey.svelte")) - router.register("/login/pubkey", import("src/app/views/LoginPubKey.svelte")) - router.register("/login/connect", import("src/app/views/LoginConnect.svelte"), { + router.register("/login", Login) + router.register("/login/bunker", LoginBunker) + router.register("/login/privkey", LoginPrivKey) + router.register("/login/pubkey", LoginPubKey) + router.register("/login/connect", LoginConnect, { requireUser: true, }) - router.register("/logout", import("src/app/views/Logout.svelte")) + router.register("/logout", Logout) - router.register("/listings", import("src/app/views/Market.svelte")) - router.register("/listings/:address/edit", import("src/app/views/ListingEdit.svelte"), { + router.register("/listings", Market) + router.register("/listings/:address/edit", ListingEdit, { requireSigner: true, serializers: { address: asNaddr("address"), }, }) - router.register("/listings/:address/delete", import("src/app/views/ListingDelete.svelte"), { + router.register("/listings/:address/delete", ListingDelete, { requireSigner: true, serializers: { address: asNaddr("address"), }, }) - router.register("/media/:url", import("src/app/views/MediaDetail.svelte"), { + router.register("/media/:url", MediaDetail, { serializers: { url: asUrlComponent("url"), }, }) - router.register("/", import("src/app/views/Home.svelte")) - router.register("/notes", import("src/app/views/Home.svelte")) - router.register("/notes/create", import("src/app/views/NoteCreate.svelte"), { + router.register("/", Home) + router.register("/notes", Home) + router.register("/notes/create", NoteCreate, { requireSigner: true, serializers: { pubkey: asPerson, @@ -210,132 +276,130 @@ type: asString("type"), }, }) - router.register("/notes/:entity", import("src/app/views/NoteDetail.svelte"), { + router.register("/notes/:entity", NoteDetail, { serializers: { entity: asNote, }, }) - router.register("/notes/:entity/label", import("src/app/views/LabelCreate.svelte"), { + router.register("/notes/:entity/label", LabelCreate, { serializers: { entity: asNote, }, }) - router.register("/notes/:entity/report", import("src/app/views/ReportCreate.svelte"), { + router.register("/notes/:entity/report", ReportCreate, { serializers: { entity: asNote, }, }) - router.register("/notes/:entity/thread", import("src/app/views/ThreadDetail.svelte"), { + router.register("/notes/:entity/thread", ThreadDetail, { serializers: { entity: asNote, }, }) - router.register("/notes/:entity/delete", import("src/app/views/NoteDelete.svelte"), { + router.register("/notes/:entity/delete", NoteDelete, { serializers: { entity: asNote, kind: asString("kind"), }, }) - router.register("/notifications", import("src/app/views/Notifications.svelte"), { + router.register("/notifications", Notifications, { requireUser: true, }) - router.register("/notifications/:activeTab", import("src/app/views/Notifications.svelte"), { + router.register("/notifications/:activeTab", Notifications, { requireUser: true, }) - router.register("/signup", import("src/app/views/Onboarding.svelte")) + router.register("/signup", Onboarding) - router.register("/people/list", import("src/app/shared/PersonList.svelte"), { + router.register("/people/list", PersonList, { serializers: { pubkeys: asCsv("pubkeys"), }, }) - router.register("/people/:entity", import("src/app/views/PersonDetail.svelte"), { + router.register("/people/:entity", PersonDetail, { required: ["pubkey"], serializers: { entity: asPerson, }, }) - router.register("/people/:entity/followers", import("src/app/views/PersonFollowers.svelte"), { + router.register("/people/:entity/followers", PersonFollowers, { required: ["pubkey"], serializers: { entity: asPerson, }, }) - router.register("/people/:entity/follows", import("src/app/views/PersonFollows.svelte"), { + router.register("/people/:entity/follows", PersonFollows, { required: ["pubkey"], serializers: { entity: asPerson, }, }) - router.register("/people/:entity/info", import("src/app/views/PersonInfo.svelte"), { + router.register("/people/:entity/info", PersonInfo, { required: ["pubkey"], serializers: { entity: asPerson, }, }) - router.register("/qrcode/:code", import("src/app/views/QRCode.svelte"), { + router.register("/qrcode/:code", QRCode, { serializers: { code: asUrlComponent("code"), }, }) - router.register("/publishes", import("src/app/views/Publishes.svelte")) + router.register("/publishes", Publishes) - router.register("/relays/:entity", import("src/app/views/RelayDetail.svelte"), { + router.register("/relays/:entity", RelayDetail, { serializers: { entity: asRelay, }, }) - router.register("/relays/:entity/review", import("src/app/views/RelayReview.svelte"), { + router.register("/relays/:entity/review", RelayReview, { serializers: { entity: asRelay, }, }) - router.register("/settings", import("src/app/views/UserSettings.svelte"), { + router.register("/settings", UserSettings, { requireUser: true, }) - router.register("/settings/content", import("src/app/views/UserContent.svelte"), { + router.register("/settings/content", UserContent, { requireUser: true, }) - router.register("/settings/data", import("src/app/views/UserData.svelte"), { + router.register("/settings/data", UserData, { requireUser: true, }) - router.register("/settings/data/export", import("src/app/views/DataExport.svelte"), { + router.register("/settings/data/export", DataExport, { requireUser: true, }) - router.register("/settings/data/import", import("src/app/views/DataImport.svelte"), { + router.register("/settings/data/import", DataImport, { requireUser: true, }) - router.register("/settings/keys", import("src/app/views/UserKeys.svelte"), { + router.register("/settings/keys", UserKeys, { requireUser: true, }) - router.register("/settings/profile", import("src/app/views/UserProfile.svelte"), { + router.register("/settings/profile", UserProfile, { requireUser: true, }) - router.register("/settings/relays", import("src/app/views/RelayList.svelte")) - - router.register("/topics/:topic", import("src/app/views/TopicFeed.svelte")) + router.register("/settings/relays", RelayList) - router.register("/zap", import("src/app/views/Zap.svelte"), { + router.register("/zap", Zap, { required: ["splits"], serializers: { - eid: asNote, + id: asNote, amount: asJson("amount"), splits: asJson("splits"), anonymous: asJson("anonymous"), }, }) - router.register("/:entity", import("src/app/views/Bech32Entity.svelte"), { + router.register("/:entity", Bech32Entity, { serializers: { entity: asEntity, }, }) - router.register("/:entity/*", import("src/app/views/Bech32Entity.svelte"), { + router.register("/:entity/*", Bech32Entity, { serializers: { entity: asEntity, }, @@ -356,6 +420,7 @@ network, util, lib, + app, } // Theme @@ -415,7 +480,6 @@ unsubModal() unsubRouter() unsubHistory() - storage.close() } }) @@ -434,9 +498,14 @@ // pass } + lib.ctx.net.pool.on("init", connection => { + app.loadRelay(connection.url) + app.trackRelayStats(connection) + }) + // App data boostrap and relay meta fetching - storage.ready.then(async () => { + ready.then(async () => { // Our stores are throttled by 300, so wait until they're populated // before loading app data await lib.sleep(350) @@ -449,68 +518,27 @@ const interval1 = setInterval(() => { slowConnections.set( - engine - .getPubkeyRelayPolicies(engine.pubkey.get()) - .filter(r => engine.hints.options.getRelayQuality(r.url) < 0.5), + app.getPubkeyRelays($pubkey).filter(url => app.getRelayQuality(url) < 0.5), ) - // Prune connections we haven't used in a while. Clear errors periodically - for (const [url, connection] of network.NetworkContext.pool.data.entries()) { + // Prune connections we haven't used in a while + for (const [_, connection] of lib.ctx.net.pool.data.entries()) { const {lastOpen, lastPublish, lastRequest, lastFault} = connection.meta const lastActivity = lib.max([lastOpen, lastPublish, lastRequest, lastFault]) - if (lastFault) { - relays.key(url).update($r => ({ - ...$r, - faults: lib.uniq(($r.faults || []).concat(lastFault)).slice(-10), - })) - } - - if (lastActivity < Date.now() - 60_000) { + if (lastActivity < Date.now() - 30_000) { connection.disconnect() } } }, 5_000) - const interval2 = setInterval(async () => { - if (!getSetting("dufflepud_url")) { - return - } - - // Find relays with old/missing metadata and refresh them. Only pick a - // few so we're not asking for too much data at once - const staleRelays = relays - .get() - .filter(r => (r.last_checked || 0) < lib.now() - seconds(7, "day")) - .slice(0, 20) - - if (staleRelays.length > 0) { - misc.tryFetch(async () => { - const result = await Fetch.fetchJson(dufflepud("relay/info"), { - method: "POST", - body: JSON.stringify({urls: pluck("url", staleRelays)}), - headers: { - "Content-Type": "application/json", - }, - }) - - for (const {url: rawUrl, info} of result.data) { - const url = util.normalizeRelayUrl(rawUrl) - - relays.key(url).merge({...info, url, last_checked: lib.now()}) - } - }) - } - }, 30_000) - return () => { clearInterval(interval1) - clearInterval(interval2) } }) -{#await storage.ready} +{#await ready} {:then}
diff --git a/src/app/MenuDesktop.svelte b/src/app/MenuDesktop.svelte index 428173858..233be83bb 100644 --- a/src/app/MenuDesktop.svelte +++ b/src/app/MenuDesktop.svelte @@ -1,8 +1,15 @@
@@ -79,7 +77,7 @@ : import.meta.env.VITE_APP_WORDMARK_LIGHT} /> Feeds - {#if !$env.FORCE_GROUP && $env.PLATFORM_RELAYS.length === 0} + {#if !env.FORCE_GROUP && env.PLATFORM_RELAYS.length === 0}
Relays @@ -113,11 +111,11 @@ Calendar - {#if $env.ENABLE_MARKET} + {#if env.ENABLE_MARKET} Market {/if} - {#if !$env.FORCE_GROUP} + {#if !env.FORCE_GROUP} Groups {/if} diff --git a/src/app/MenuMobile.svelte b/src/app/MenuMobile.svelte index 3e932339b..2383f4c5c 100644 --- a/src/app/MenuMobile.svelte +++ b/src/app/MenuMobile.svelte @@ -1,5 +1,6 @@
@@ -115,11 +111,12 @@
-
-
+ {#if $listMenu.enabled} diff --git a/src/app/shared/FeedForm.svelte b/src/app/shared/FeedForm.svelte index 75475a36a..c29527054 100644 --- a/src/app/shared/FeedForm.svelte +++ b/src/app/shared/FeedForm.svelte @@ -1,5 +1,6 @@ @@ -143,9 +128,12 @@ {#if !showSave} -
+
+ {/if} {/if} diff --git a/src/app/shared/FeedFormFilters.svelte b/src/app/shared/FeedFormFilters.svelte index 2c2883b39..310873cca 100644 --- a/src/app/shared/FeedFormFilters.svelte +++ b/src/app/shared/FeedFormFilters.svelte @@ -108,11 +108,12 @@ {/if} {#if i > 0} -
onSubFeedRemove(idx)}> -
+ {/if} {/if} diff --git a/src/app/shared/FeedFormSectionList.svelte b/src/app/shared/FeedFormSectionList.svelte index 718affcba..8d478eea7 100644 --- a/src/app/shared/FeedFormSectionList.svelte +++ b/src/app/shared/FeedFormSectionList.svelte @@ -1,8 +1,9 @@ -
+
+ {#if showClaim} diff --git a/src/app/shared/GroupActionsOpen.svelte b/src/app/shared/GroupActionsOpen.svelte index 79729b60a..d193e83bc 100644 --- a/src/app/shared/GroupActionsOpen.svelte +++ b/src/app/shared/GroupActionsOpen.svelte @@ -1,11 +1,10 @@ -
+
+ diff --git a/src/app/shared/GroupDetailsForm.svelte b/src/app/shared/GroupDetailsForm.svelte index bac8bac44..13de3c758 100644 --- a/src/app/shared/GroupDetailsForm.svelte +++ b/src/app/shared/GroupDetailsForm.svelte @@ -1,7 +1,9 @@ diff --git a/src/app/shared/GroupNotes.svelte b/src/app/shared/GroupNotes.svelte index 34289818e..be57bef97 100644 --- a/src/app/shared/GroupNotes.svelte +++ b/src/app/shared/GroupNotes.svelte @@ -1,15 +1,16 @@ diff --git a/src/app/shared/GroupRestrictAccess.svelte b/src/app/shared/GroupRestrictAccess.svelte index 74e730d84..b65cbe432 100644 --- a/src/app/shared/GroupRestrictAccess.svelte +++ b/src/app/shared/GroupRestrictAccess.svelte @@ -1,6 +1,7 @@
diff --git a/src/app/shared/ListCard.svelte b/src/app/shared/ListCard.svelte index 5472dbddd..4c5976cdc 100644 --- a/src/app/shared/ListCard.svelte +++ b/src/app/shared/ListCard.svelte @@ -3,6 +3,7 @@ import {first} from "@welshman/lib" import {Tags, toNostrURI, Address} from "@welshman/util" import {defaultTagFeedMappings} from "@welshman/feeds" + import {repository} from "@welshman/app" import {slide} from "src/util/transition" import {boolCtrl} from "src/partials/utils" import FlexColumn from "src/partials/FlexColumn.svelte" @@ -12,7 +13,6 @@ import CopyValueSimple from "src/partials/CopyValueSimple.svelte" import PersonBadgeSmall from "src/app/shared/PersonBadgeSmall.svelte" import {readList, displayList, mapListToFeed} from "src/domain" - import {repository} from "src/engine" import {router} from "src/app/util" export let address @@ -27,7 +27,10 @@ const loadFeed = () => { if (!inert) { - router.at("notes").cx({feed: mapListToFeed(list)}).push() + router + .at("notes") + .cx({feed: mapListToFeed(list)}) + .push() } } diff --git a/src/app/shared/ListForm.svelte b/src/app/shared/ListForm.svelte index 39720b730..31597dac8 100644 --- a/src/app/shared/ListForm.svelte +++ b/src/app/shared/ListForm.svelte @@ -1,6 +1,14 @@ {#if ready} @@ -302,6 +286,7 @@
diff --git a/src/app/shared/NoteActions.svelte b/src/app/shared/NoteActions.svelte index 028cb469f..1a24dd222 100644 --- a/src/app/shared/NoteActions.svelte +++ b/src/app/shared/NoteActions.svelte @@ -3,8 +3,8 @@ import {nip19} from "nostr-tools" import {onMount} from "svelte" import {derived} from "svelte/store" - import {last, sortBy} from "@welshman/lib" - import {custom} from "@welshman/store" + import {ctx, remove, last, sortBy} from "@welshman/lib" + import {repository, signer, trackerStore} from "@welshman/app" import type {TrustedEvent, SignedEvent} from "@welshman/util" import { LOCAL_RELAY_URL, @@ -42,15 +42,10 @@ import { env, groups, - signer, - session, publish, - mention, - tracker, - hints, makeZapSplit, + mention, mentionEvent, - repository, unmuteNote, muteNote, deriveHandlersForKind, @@ -61,6 +56,7 @@ loadPubkeys, getReactionTags, getClientTags, + sessionWithMeta, } from "src/engine" import {getHandlerKey, readHandlers, displayHandler} from "src/domain" @@ -78,7 +74,7 @@ const signedEvent = asSignedEvent(note as any) const address = contextAddress || tags.context().values().first() const addresses = [address].filter(identity) - const nevent = nip19.neventEncode({id: note.id, relays: hints.Event(note).getUrls()}) + const nevent = nip19.neventEncode({id: note.id, relays: ctx.app.router.Event(note).getUrls()}) const interpolate = (a, b) => t => a + Math.round((b - a) * t) const mentions = tags.values("p").valueOf() const likesCount = tweened(0, {interpolate}) @@ -87,19 +83,10 @@ const kindHandlers = deriveHandlersForKind(note.kind) const handlerId = tags.get("client")?.nth(2) const handlerEvent = handlerId ? repository.getEvent(handlerId) : null - - const seenOn = custom(set => { - const update = () => - set(Array.from(tracker.getRelays(note.id)).filter(url => url !== LOCAL_RELAY_URL)) - - update() - - tracker.on("update", update) - - return () => { - tracker.off("update", update) - } - }) + const noteActions = getSetting("note_actions") + const seenOn = derived(trackerStore, $t => + remove(LOCAL_RELAY_URL, Array.from($t.getRelays(note.id))), + ) const setView = v => { view = v @@ -125,7 +112,7 @@ const react = async content => { if (isSignedEvent(note)) { - publish({event: note, relays: hints.PublishEvent(note).getUrls()}) + publish({event: note, relays: ctx.app.router.PublishEvent(note).getUrls()}) } const tags = [...getReactionTags(note), ...getClientTags()] @@ -169,7 +156,7 @@ .at("zap") .qp({ splits, - eid: note.id, + id: note.id, anonymous: Boolean(note.wrap), }) .cx({callback: addToContext}) @@ -179,7 +166,7 @@ const broadcast = () => { publish({ event: asSignedEvent(note as SignedEvent), - relays: hints.WriteRelays().getUrls(), + relays: ctx.app.router.WriteRelays().getUrls(), }) showInfo("Note has been re-published!") @@ -200,15 +187,15 @@ const entity = last(templateTag) === "note" ? nip19.noteEncode(note.id) - : nip19.neventEncode({id: note.id, relays: hints.Event(note).getUrls()}) + : nip19.neventEncode({id: note.id, relays: ctx.app.router.Event(note).getUrls()}) window.open(templateTag[1].replace("", entity)) } - const groupOptions = derived(session, $session => { + const groupOptions = derived(sessionWithMeta, $sessionWithMeta => { const options = [] - for (const addr of Object.keys($session?.groups || {})) { + for (const addr of Object.keys($sessionWithMeta?.groups || {})) { const group = groups.key(addr).get() const isMember = $userIsGroupMember(addr) @@ -226,12 +213,12 @@ $: disableActions = !$signer || (muted && !showMuted) || (note.wrap && address && !$userIsGroupMember(address)) - $: like = likes.find(e => e.pubkey === $session?.pubkey) + $: like = likes.find(e => e.pubkey === $sessionWithMeta?.pubkey) $: $likesCount = likes.length - $: zap = zaps.find(e => e.request.pubkey === $session?.pubkey) + $: zap = zaps.find(e => e.request.pubkey === $sessionWithMeta?.pubkey) $: $zapsTotal = sum(pluck("invoiceAmount", zaps)) / 1000 - $: canZap = zapper && note.pubkey !== $session?.pubkey - $: reply = replies.find(e => e.pubkey === $session?.pubkey) + $: canZap = zapper?.allowsNostr && note.pubkey !== $sessionWithMeta?.pubkey + $: reply = replies.find(e => e.pubkey === $sessionWithMeta?.pubkey) $: $repliesCount = replies.length $: handlers = $kindHandlers.filter( h => @@ -247,7 +234,7 @@ if ($signer) { actions.push({label: "Quote", icon: "quote-left", onClick: quote}) - if (isSignedEvent(note) && !$env.FORCE_GROUP && ($groupOptions.length > 0 || address)) { + if (isSignedEvent(note) && !env.FORCE_GROUP && ($groupOptions.length > 0 || address)) { actions.push({label: "Cross-post", icon: "shuffle", onClick: () => setView("cross-post")}) } @@ -262,11 +249,11 @@ actions.push({label: "Report", icon: "triangle-exclamation", onClick: report}) } - if (!$env.FORCE_GROUP && $env.PLATFORM_RELAYS.length === 0 && isSignedEvent(note)) { + if (!env.FORCE_GROUP && env.PLATFORM_RELAYS.length === 0 && isSignedEvent(note)) { actions.push({label: "Broadcast", icon: "rss", onClick: broadcast}) } - if (note.pubkey === $session?.pubkey) { + if (note.pubkey === $sessionWithMeta?.pubkey) { actions.push({ label: "Delete", icon: "trash", @@ -286,7 +273,11 @@ }) -
+ - {#if $env.ENABLE_ZAPS} + {#if env.ENABLE_ZAPS && noteActions.includes("zaps")}
@@ -364,7 +356,7 @@
{/if} - {#if $seenOn?.length > 0 && ($env.PLATFORM_RELAYS.length === 0 || $env.PLATFORM_RELAYS.length > 1)} + {#if $seenOn?.length > 0 && (env.PLATFORM_RELAYS.length === 0 || env.PLATFORM_RELAYS.length > 1)} -
+ {#if view} setView(null)}> @@ -399,7 +391,7 @@ {/each}
{/if} - {#if $seenOn?.length > 0 && ($env.PLATFORM_RELAYS.length === 0 || $env.PLATFORM_RELAYS.length > 1)} + {#if $seenOn?.length > 0 && (env.PLATFORM_RELAYS.length === 0 || env.PLATFORM_RELAYS.length > 1)}

Relays

This note was found on {quantify($seenOn.length, "relay")} below.

diff --git a/src/app/shared/NoteContent.svelte b/src/app/shared/NoteContent.svelte index 34798e5a2..042752d4e 100644 --- a/src/app/shared/NoteContent.svelte +++ b/src/app/shared/NoteContent.svelte @@ -8,6 +8,7 @@ import NoteContentKind1808 from "src/app/shared/NoteContentKind1808.svelte" import NoteContentKind1985 from "src/app/shared/NoteContentKind1985.svelte" import NoteContentKind1986 from "src/app/shared/NoteContentKind1986.svelte" + import NoteContentKind9735 from "src/app/shared/NoteContentKind9735.svelte" import NoteContentKind9802 from "src/app/shared/NoteContentKind9802.svelte" import NoteContentKind1063 from "src/app/shared/NoteContentKind1063.svelte" import NoteContentKind10002 from "src/app/shared/NoteContentKind10002.svelte" @@ -38,7 +39,7 @@ } -
+
{#if warning}
@@ -57,6 +58,8 @@ {:else if note.kind === 1985} + {:else if note.kind === 9735} + {:else if note.kind === 1986} {:else if note.kind === 9802} diff --git a/src/app/shared/NoteContentKind0.svelte b/src/app/shared/NoteContentKind0.svelte index 957ae76bd..63dfc58cf 100644 --- a/src/app/shared/NoteContentKind0.svelte +++ b/src/app/shared/NoteContentKind0.svelte @@ -1,11 +1,12 @@ diff --git a/src/app/shared/NoteContentKind3.svelte b/src/app/shared/NoteContentKind3.svelte index 090d4a8f3..957ae75e9 100644 --- a/src/app/shared/NoteContentKind3.svelte +++ b/src/app/shared/NoteContentKind3.svelte @@ -1,10 +1,8 @@ diff --git a/src/app/shared/NoteContentKind30023.svelte b/src/app/shared/NoteContentKind30023.svelte index b0a7f42d8..2c0ec7501 100644 --- a/src/app/shared/NoteContentKind30023.svelte +++ b/src/app/shared/NoteContentKind30023.svelte @@ -7,12 +7,12 @@ import {switcherFn} from "hurdak" import {urlIsMedia} from "@welshman/content" import {fromNostrURI, Tags} from "@welshman/util" + import {displayProfileByPubkey} from "@welshman/app" import {warn} from "src/util/logger" import Chip from "src/partials/Chip.svelte" import Anchor from "src/partials/Anchor.svelte" import NoteContentLink from "src/app/shared/NoteContentLink.svelte" import {router} from "src/app/util/router" - import {displayProfileByPubkey} from "src/engine" export let note, showEntire export let showMedia = false diff --git a/src/app/shared/NoteContentKind30311.svelte b/src/app/shared/NoteContentKind30311.svelte index 22dcf2e0e..e03b10efe 100644 --- a/src/app/shared/NoteContentKind30311.svelte +++ b/src/app/shared/NoteContentKind30311.svelte @@ -2,6 +2,7 @@ import {fromPairs} from "ramda" import {Address} from "@welshman/util" import {urlIsMedia} from "@welshman/content" + import {ctx} from "@welshman/lib" import Card from "src/partials/Card.svelte" import Chip from "src/partials/Chip.svelte" import Anchor from "src/partials/Anchor.svelte" @@ -9,12 +10,11 @@ import NoteContentLink from "src/app/shared/NoteContentLink.svelte" import NoteContentTopics from "src/app/shared/NoteContentTopics.svelte" import PersonBadge from "src/app/shared/PersonBadge.svelte" - import {hints} from "src/engine" export let note export let showMedia = false - const address = Address.fromEvent(note, hints.Event(note).redundancy(3).getUrls()) + const address = Address.fromEvent(note, ctx.app.router.Event(note).redundancy(3).getUrls()) const {title, summary, image, status, p} = fromPairs(note.tags) as Record diff --git a/src/app/shared/NoteContentKind30402.svelte b/src/app/shared/NoteContentKind30402.svelte index f3d324561..02b6ba01f 100644 --- a/src/app/shared/NoteContentKind30402.svelte +++ b/src/app/shared/NoteContentKind30402.svelte @@ -1,7 +1,9 @@ + +{#if zap} +
+
+ zapped + {formatSats(zap.invoiceAmount / 1000)} sats! +
+ + {#if url} + + {/if} +
+{/if} diff --git a/src/app/shared/NoteContentKind9802.svelte b/src/app/shared/NoteContentKind9802.svelte index 0e2b0a566..92c0e226e 100644 --- a/src/app/shared/NoteContentKind9802.svelte +++ b/src/app/shared/NoteContentKind9802.svelte @@ -1,20 +1,27 @@ -
-
- +
+ {#if meta.comment} + + {/if} +
+
+ +
+ {#if meta.r} +
+ + +
+ {/if}
- -{#if ref} - -{/if} diff --git a/src/app/shared/NoteContentQuote.svelte b/src/app/shared/NoteContentQuote.svelte index 217fd3c86..1e56a561e 100644 --- a/src/app/shared/NoteContentQuote.svelte +++ b/src/app/shared/NoteContentQuote.svelte @@ -1,34 +1,34 @@
- {#if loading} + {#if muted && !showMuted} +

+ You have hidden this note. + Show +

+ {:else if $quote} + {#if !isGroup} +
+ + +

{$profileDisplay}

+
+
+ {/if} + + {:else}
- {:else if quote} - {#if muted} -

- You have hidden this note. - Show -

- {:else} - {#if !isGroup} -
- - -

{profileDisplay}

-
-
- {/if} - - {/if} - {:else} -

- Unable to load a preview for quoted event -

{/if}
diff --git a/src/app/shared/NoteContentRating.svelte b/src/app/shared/NoteContentRating.svelte index 726deed64..da4d7e98b 100644 --- a/src/app/shared/NoteContentRating.svelte +++ b/src/app/shared/NoteContentRating.svelte @@ -1,11 +1,11 @@ - + #{value} diff --git a/src/app/shared/NoteCreateInline.svelte b/src/app/shared/NoteCreateInline.svelte index 8dbf02bce..17d0269f4 100644 --- a/src/app/shared/NoteCreateInline.svelte +++ b/src/app/shared/NoteCreateInline.svelte @@ -1,7 +1,9 @@ -{#if !$session.onboarding_tasks_completed.includes(task)} +{#if !$sessionWithMeta.onboarding_tasks_completed.includes(task)}
diff --git a/src/app/shared/OnboardingTasks.svelte b/src/app/shared/OnboardingTasks.svelte index 3954932b1..b025a9123 100644 --- a/src/app/shared/OnboardingTasks.svelte +++ b/src/app/shared/OnboardingTasks.svelte @@ -26,7 +26,7 @@

You can find your keys by clicking on your profile picture, then the "Keys" menu item.

-{#if $env.ENABLE_ZAPS} +{#if env.ENABLE_ZAPS}

Get paid diff --git a/src/app/shared/PersonAbout.svelte b/src/app/shared/PersonAbout.svelte index b40b53506..e6af988ed 100644 --- a/src/app/shared/PersonAbout.svelte +++ b/src/app/shared/PersonAbout.svelte @@ -1,6 +1,6 @@ {#if inert} diff --git a/src/app/shared/PersonBadgeMedium.svelte b/src/app/shared/PersonBadgeMedium.svelte new file mode 100644 index 000000000..26a05376c --- /dev/null +++ b/src/app/shared/PersonBadgeMedium.svelte @@ -0,0 +1,12 @@ + + + + + + diff --git a/src/app/shared/PersonBadgeSmall.svelte b/src/app/shared/PersonBadgeSmall.svelte index 7ff7b3ad5..3977c84c6 100644 --- a/src/app/shared/PersonBadgeSmall.svelte +++ b/src/app/shared/PersonBadgeSmall.svelte @@ -1,9 +1,9 @@ {#if $handle} diff --git a/src/app/shared/PersonLink.svelte b/src/app/shared/PersonLink.svelte index 0747e24f5..d6b330fc3 100644 --- a/src/app/shared/PersonLink.svelte +++ b/src/app/shared/PersonLink.svelte @@ -1,16 +1,16 @@ - @{$display} + @{$display} diff --git a/src/app/shared/PersonList.svelte b/src/app/shared/PersonList.svelte index f8393277a..7c5a2180b 100644 --- a/src/app/shared/PersonList.svelte +++ b/src/app/shared/PersonList.svelte @@ -1,11 +1,12 @@ {#each results as pubkey (pubkey)} - + + + {/each} diff --git a/src/app/shared/PersonName.svelte b/src/app/shared/PersonName.svelte index 899bcb13e..8f3d05f43 100644 --- a/src/app/shared/PersonName.svelte +++ b/src/app/shared/PersonName.svelte @@ -14,17 +14,22 @@ -

- Below are the relays this user publishes to. Join one or more to make sure you never miss their - updates. -

+

Below are the relays this user publishes to. {appName} will automatically select some of these relays when loading notes from this person.

{#if urls.length === 0}
No relays found
{:else} - {#each urls as url (url)} + {#each uniq(urls) as url (url)} {/each} diff --git a/src/app/shared/PersonSelect.svelte b/src/app/shared/PersonSelect.svelte index 855653a52..b3e016eab 100644 --- a/src/app/shared/PersonSelect.svelte +++ b/src/app/shared/PersonSelect.svelte @@ -2,11 +2,10 @@ import {derived} from "svelte/store" import {uniq} from "@welshman/lib" import {parseAnything} from "src/util/nostr" - import Anchor from "src/partials/Anchor.svelte" import SearchSelect from "src/partials/SearchSelect.svelte" import PersonBadge from "src/app/shared/PersonBadge.svelte" - import {router} from "src/app/util/router" - import {profileSearch, loadPubkeyProfiles, createPeopleLoader} from "src/engine" + import PersonLink from "src/app/shared/PersonLink.svelte" + import {profileSearch, createPeopleLoader} from "src/engine" export let value export let multiple = false @@ -23,14 +22,12 @@ parseAnything(term).then(result => { if (result?.type === "npub") { - loadPubkeyProfiles([result.data]) value = uniq(value.concat(result.data)) input.clearTerm() onChange?.(value) } if (result?.type === "nprofile") { - loadPubkeyProfiles([result.data.pubkey]) value = uniq(value.concat(result.data.pubkey)) input.clearTerm() onChange?.(value) @@ -51,11 +48,9 @@ bind:this={input} loading={$loading}>
-
+
{#if context === "value"} - - {$profileSearch.displayValue(item)} - + {:else} {/if} diff --git a/src/app/shared/PersonStats.svelte b/src/app/shared/PersonStats.svelte index 850434070..deb3bace1 100644 --- a/src/app/shared/PersonStats.svelte +++ b/src/app/shared/PersonStats.svelte @@ -1,21 +1,29 @@
diff --git a/src/app/shared/PersonSummary.svelte b/src/app/shared/PersonSummary.svelte index 60967dc9c..7f7c20867 100644 --- a/src/app/shared/PersonSummary.svelte +++ b/src/app/shared/PersonSummary.svelte @@ -7,15 +7,12 @@ import PersonActions from "src/app/shared/PersonActions.svelte" import PersonHandle from "src/app/shared/PersonHandle.svelte" import {router} from "src/app/util/router" - import {loadPubkeys} from 'src/engine' export let pubkey export let inert = false export let hideActions = false const showDetail = () => router.at("people").of(pubkey).open() - - loadPubkeys([pubkey])
diff --git a/src/app/shared/RelayActions.svelte b/src/app/shared/RelayActions.svelte index f2ae6dfd0..313550465 100644 --- a/src/app/shared/RelayActions.svelte +++ b/src/app/shared/RelayActions.svelte @@ -1,29 +1,42 @@ @@ -82,28 +97,29 @@
{#if !hideDescription} - {#if $relay.description} -

{$relay.description}

+ {#if $relay?.profile?.description} +

{$relay?.profile.description}

{/if}
- {#if !isNil($relay.count)} + {#if $relay?.stats} - {#if $relay.contact} - {displayUrl($relay.contact)} + {#if $relay?.profile?.contact} + {displayUrl($relay.profile.contact)} • {/if} - {#if $relay.supported_nips} + {#if $relay?.profile?.supported_nips} - {$relay.supported_nips.length} NIPs + {$relay.profile.supported_nips.length} NIPs - NIPs supported: {$relay.supported_nips.join(", ")} + NIPs supported: {$relay.profile.supported_nips.join(", ")} • {/if} - Seen {quantify($relay.count || 0, "time")} + Connected {quantify($relay.stats.connect_count, "time")} {/if} {/if} @@ -114,26 +130,31 @@
+ class={cx("cursor-pointer transition-opacity", { + "opacity-50": !$readRelayUrls.includes(url), + })} + on:click={policySetter("read")}> Read
- Notes intended for you will {$policy.read ? "" : "not"} be delivered to this relay. + Notes intended for you will {$readRelayUrls.includes(url) ? "" : "not"} be delivered to this + relay.
+ class={cx("cursor-pointer transition-opacity", { + "opacity-50": !$writeRelayUrls.includes(url), + })} + on:click={policySetter("write")}> Write
- Notes you publish will {$policy.write ? "" : "not"} be sent to this relay. + Notes you publish will {$writeRelayUrls.includes(url) ? "" : "not"} be sent to this relay.
{#if $signer} @@ -141,13 +162,16 @@
+ class={cx("cursor-pointer transition-opacity", { + "opacity-50": !$inboxRelayUrls.includes(url), + })} + on:click={policySetter("inbox")}> Inbox
- Encrypted messages will {$policy.inbox ? "" : "not"} be delivered to this relay. + Encrypted messages will {$inboxRelayUrls.includes(url) ? "" : "not"} be delivered to this + relay.
{/if} diff --git a/src/app/shared/RelayCardActions.svelte b/src/app/shared/RelayCardActions.svelte index 5b03cd478..134edcc8b 100644 --- a/src/app/shared/RelayCardActions.svelte +++ b/src/app/shared/RelayCardActions.svelte @@ -1,24 +1,34 @@ -{#if !$joined} +{#if !userRelayUrls.includes(url)} -{:else if $userRelayPolicies.length > 1} +{:else if userRelayUrls.length > 1} diff --git a/src/app/shared/RelayStatus.svelte b/src/app/shared/RelayStatus.svelte index af10802bf..c708a2d77 100644 --- a/src/app/shared/RelayStatus.svelte +++ b/src/app/shared/RelayStatus.svelte @@ -1,7 +1,7 @@ - - diff --git a/src/app/state.ts b/src/app/state.ts index a9a1fa2cf..d281bb42c 100644 --- a/src/app/state.ts +++ b/src/app/state.ts @@ -1,21 +1,35 @@ import Bugsnag from "@bugsnag/js" import {writable} from "svelte/store" -import {router} from "src/app/util/router" +import {uniq} from "@welshman/lib" +import {COMMUNITIES, FEEDS, APP_DATA} from "@welshman/util" import { - env, pubkey, session, + loadZapper, + loadHandle, + loadRelaySelections, + getRelayUrls, + loadProfile, + loadFollows, + loadMutes, +} from "@welshman/app" +import {appDataKeys} from "src/util/nostr" +import {router} from "src/app/util/router" +import { + env, + load, + loadPubkeys, loadSeen, loadGroups, loadDeletes, loadHandlers, loadGiftWraps, - loadPubkeyUserData, loadLegacyMessages, loadGroupMessages, loadNotifications, loadFeedsAndLists, listenForNotifications, + getFollows, getSetting, } from "src/engine" @@ -74,14 +88,41 @@ export const slowConnections = writable([]) export const loadAppData = () => { // If we have a group, load that - if (env.get().FORCE_GROUP) { - loadGroups([env.get().FORCE_GROUP]) + if (env.FORCE_GROUP) { + loadGroups([env.FORCE_GROUP]) } } -export const loadUserData = async () => { - // Refresh our user's data - await loadPubkeyUserData([pubkey.get()]) +export const loadUserData = async (hints: string[] = []) => { + // Load relays, then load everything else so we have a better chance of finding it + const $pubkey = pubkey.get() + const relaySelections = await loadRelaySelections($pubkey, {relays: hints}) + const relays = uniq([...hints, ...getRelayUrls(relaySelections)]) + + // Load crucial user data + await Promise.all([ + loadProfile($pubkey, {relays}), + loadFollows($pubkey, {relays}), + loadMutes($pubkey, {relays}), + ]) + + // Load less important user data + loadZapper($pubkey) + loadHandle($pubkey) + load({ + relays, + filters: [ + {authors: [$pubkey], kinds: [COMMUNITIES, FEEDS]}, + { + authors: [$pubkey], + kinds: [APP_DATA], + "#d": Object.values(appDataKeys), + }, + ], + }) + + // Load enough to figure out web of trust + loadPubkeys(getFollows($pubkey)) // Load anything they might need to be notified about loadSeen() diff --git a/src/app/util/feeds.ts b/src/app/util/feeds.ts index dfaf46477..6b56f0f6a 100644 --- a/src/app/util/feeds.ts +++ b/src/app/util/feeds.ts @@ -1,7 +1,7 @@ import {partition, prop, uniqBy} from "ramda" import {batch, tryFunc, seconds} from "hurdak" import {get, writable, derived} from "svelte/store" -import {inc, assoc, pushToMapKey, now} from "@welshman/lib" +import {ctx, inc, assoc, pushToMapKey, now} from "@welshman/lib" import type {TrustedEvent} from "@welshman/util" import { Tags, @@ -17,6 +17,7 @@ import { import {Tracker} from "@welshman/net" import type {Feed, RequestItem} from "@welshman/feeds" import {walkFeed, FeedLoader as CoreFeedLoader} from "@welshman/feeds" +import {repository, tracker, getFilterSelections} from "@welshman/app" import {noteKinds, isLike, reactionKinds, repostKinds} from "src/util/nostr" import {isAddressFeed} from "src/domain" import type {DisplayEvent} from "src/engine" @@ -25,12 +26,8 @@ import { sortEventsDesc, unwrapRepost, isEventMuted, - repository, - hints, addRepostFilters, - getFilterSelections, subscribe, - tracker, load, } from "src/engine" @@ -66,11 +63,7 @@ function* getRequestItems({relays, filters}: RequestItem, opts: FeedOpts) { if (relays?.length > 0) { yield {filters, relays} } else if (!opts.skipNetwork) { - const selections = getFilterSelections(filters) - - for (const {relay, filters} of selections) { - yield {filters, relays: [relay]} - } + yield* getFilterSelections(filters) } } @@ -82,10 +75,18 @@ const createFeedLoader = (opts: FeedOpts, signal) => const tracker = new Tracker() const forceRelays = relays?.length > 0 const forcePlatform = opts.forcePlatform && !forceRelays + const requestItems = Array.from(getRequestItems({relays, filters}, opts)) await Promise.all( - Array.from(getRequestItems({relays, filters}, opts)).map(opts => - load({...opts, onEvent, tracker, signal, skipCache: true, forcePlatform}), + requestItems.map(opts => + load({ + ...opts, + onEvent, + tracker, + signal, + skipCache: true, + forcePlatform, + }), ), ) @@ -302,7 +303,9 @@ export const createFeed = (opts: FeedOpts) => { return true }) - const selections = hints.merge(notesWithParent.map(hints.EventParents)).getSelections() + const selections = ctx.app.router + .merge(notesWithParent.map(ctx.app.router.EventParents)) + .getSelections() for (const {relay, values} of selections) { load({ @@ -375,4 +378,4 @@ export const createFeed = (opts: FeedOpts) => { subscribe: f => store.subscribe(f), loadMore: (limit: number) => loader?.(limit), } -} \ No newline at end of file +} diff --git a/src/app/util/router.ts b/src/app/util/router.ts index 2218c1df2..d0ad5774d 100644 --- a/src/app/util/router.ts +++ b/src/app/util/router.ts @@ -1,10 +1,11 @@ import {last, identity} from "ramda" import {Address, fromNostrURI} from "@welshman/util" +import {ctx} from "@welshman/lib" import {nip19} from "nostr-tools" import {Router} from "src/util/router" import {parseJson} from "src/util/misc" import {parseAnythingSync} from "src/util/nostr" -import {decodeEvent, getChannelId, hints} from "src/engine" +import {decodeEvent, getChannelId} from "src/engine" // Decoders @@ -56,7 +57,7 @@ export const asPerson = { return { pubkey, - relays: hints.FromPubkeys([pubkey]).getUrls(), + relays: ctx.app.router.FromPubkeys([pubkey]).getUrls(), } } @@ -65,7 +66,9 @@ export const asPerson = { return { pubkey, - relays: hints.merge([hints.fromRelays(relays), hints.FromPubkeys([pubkey])]).getUrls(), + relays: ctx.app.router + .merge([ctx.app.router.fromRelays(relays), ctx.app.router.FromPubkeys([pubkey])]) + .getUrls(), } } @@ -127,7 +130,7 @@ router.extend("notes", (id, {relays = []} = {}) => { router.extend("people", (pubkey, {relays = []} = {}) => { if (relays.length < 3) { relays = relays.concat( - hints + ctx.app.router .FromPubkeys([pubkey]) .limit(3 - relays.length) .getUrls(), diff --git a/src/app/views/About.svelte b/src/app/views/About.svelte index edefeddbb..3867f2ca3 100644 --- a/src/app/views/About.svelte +++ b/src/app/views/About.svelte @@ -11,9 +11,9 @@ const nprofile = "nprofile1qqsf03c2gsmx5ef4c9zmxvlew04gdh7u94afnknp33qvv3c94kvwxgspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz9rhwden5te0wfjkcctev93xcefwdaexwtcpzdmhxue69uhhqatjwpkx2urpvuhx2ue0vamm57" const hodlbodPubkey = "97c70a44366a6535c145b333f973ea86dfdc2d7a99da618c40c64705ad98e322" - const splits = [makeZapSplit($env.PLATFORM_PUBKEY)] + const splits = [makeZapSplit(env.PLATFORM_PUBKEY)] - loadPubkeys([$env.PLATFORM_PUBKEY]) + loadPubkeys([env.PLATFORM_PUBKEY]) document.title = "About" diff --git a/src/app/views/Bech32Entity.svelte b/src/app/views/Bech32Entity.svelte index 4f07383b7..ae96ce505 100644 --- a/src/app/views/Bech32Entity.svelte +++ b/src/app/views/Bech32Entity.svelte @@ -11,9 +11,9 @@ {#if type === "nevent"} - + {:else if type === "note"} - + {:else if type === "naddr"} {@const address = new Address(data.kind, data.pubkey, data.identifier).toString()} {#if [35834, 34550].includes(data.kind)} @@ -21,7 +21,7 @@ {:else if data.kind === 31923} {:else} - + {/if} {:else if type === "nrelay"} diff --git a/src/app/views/Calendar.svelte b/src/app/views/Calendar.svelte index 134ca2d52..4776d2ebe 100644 --- a/src/app/views/Calendar.svelte +++ b/src/app/views/Calendar.svelte @@ -1,14 +1,15 @@ diff --git a/src/app/views/ChannelCreate.svelte b/src/app/views/ChannelCreate.svelte index c90442428..d297f9c6d 100644 --- a/src/app/views/ChannelCreate.svelte +++ b/src/app/views/ChannelCreate.svelte @@ -1,19 +1,23 @@ diff --git a/src/app/views/ChannelsDetail.svelte b/src/app/views/ChannelsDetail.svelte index 001b2e94b..839c07990 100644 --- a/src/app/views/ChannelsDetail.svelte +++ b/src/app/views/ChannelsDetail.svelte @@ -1,28 +1,21 @@ diff --git a/src/app/views/DataExport.svelte b/src/app/views/DataExport.svelte index 95b295536..e416c44b5 100644 --- a/src/app/views/DataExport.svelte +++ b/src/app/views/DataExport.svelte @@ -1,10 +1,10 @@ {#if loading} diff --git a/src/app/views/FeedEdit.svelte b/src/app/views/FeedEdit.svelte index 8631b445c..af1478b47 100644 --- a/src/app/views/FeedEdit.svelte +++ b/src/app/views/FeedEdit.svelte @@ -1,10 +1,10 @@ -{#if $env.FORCE_GROUP} - +{#if env.FORCE_GROUP} + {:else} {/if} diff --git a/src/app/views/InviteAccept.svelte b/src/app/views/InviteAccept.svelte index 9e5ad5ae8..ec0d9c856 100644 --- a/src/app/views/InviteAccept.svelte +++ b/src/app/views/InviteAccept.svelte @@ -1,6 +1,7 @@ {#if loading} diff --git a/src/app/views/Login.svelte b/src/app/views/Login.svelte index 79a3585f7..191a052dd 100644 --- a/src/app/views/Login.svelte +++ b/src/app/views/Login.svelte @@ -4,6 +4,7 @@ import {last, prop, objOf} from "ramda" import {HANDLER_INFORMATION, NOSTR_CONNECT} from "@welshman/util" import {getNip07, Nip07Signer} from "@welshman/signer" + import {loadHandle} from "@welshman/app" import {parseJson} from "src/util/misc" import {showWarning} from "src/partials/Toast.svelte" import Anchor from "src/partials/Anchor.svelte" @@ -12,7 +13,7 @@ import SearchSelect from "src/partials/SearchSelect.svelte" import FlexColumn from "src/partials/FlexColumn.svelte" import Heading from "src/partials/Heading.svelte" - import {load, hints, loadHandle, loginWithExtension, loginWithNostrConnect} from "src/engine" + import {load, loginWithExtension, loginWithNostrConnect} from "src/engine" import {router} from "src/app/util/router" import {boot} from "src/app/state" @@ -92,7 +93,6 @@ onMount(() => { load({ - relays: hints.ReadRelays().getUrls(), filters: [ { kinds: [HANDLER_INFORMATION], @@ -107,15 +107,15 @@ } const domain = last(content.nip05.split("@")) - const {pubkey, ...handle} = (await loadHandle(`_@${domain}`)) || {} - const relays = handle.nip46 || handle.relays || [] + const handle = await loadHandle(`_@${domain}`) + const relays = handle?.nip46 || handle?.relays || [] if (handlers.some(h => h.domain === domain)) { return } - if (pubkey === e.pubkey) { - handlers = handlers.concat({pubkey, domain, relays}) + if (handle?.pubkey === e.pubkey) { + handlers = handlers.concat({pubkey: e.pubkey, domain, relays}) } }, }) diff --git a/src/app/views/LoginConnect.svelte b/src/app/views/LoginConnect.svelte index ba6eb1977..ac23b875c 100644 --- a/src/app/views/LoginConnect.svelte +++ b/src/app/views/LoginConnect.svelte @@ -9,6 +9,7 @@ isShareableRelayUrl, } from "@welshman/util" import {deriveEvents} from "@welshman/store" + import {session, repository} from "@welshman/app" import {showWarning} from "src/partials/Toast.svelte" import Modal from "src/partials/Modal.svelte" import Field from "src/partials/Field.svelte" @@ -18,8 +19,8 @@ import Subheading from "src/partials/Subheading.svelte" import Anchor from "src/partials/Anchor.svelte" import {router} from "src/app/util/router" + import {env} from "src/engine" import {loadUserData} from "src/app/state" - import {env, loadPubkeyUserData, repository, session} from "src/engine" const t = Date.now() @@ -32,9 +33,9 @@ const searchRelays = async relays => { failed = false - loadPubkeyUserData([$session.pubkey], {relays}) + loadUserData(relays) - await sleep(3000) + await sleep(5000) if (!found) { failed = true @@ -55,7 +56,7 @@ const tryDefaultRelays = () => { // Pull out all the stops to try to find the user's profile - searchRelays([LOCAL_RELAY_URL, ...env.get().DEFAULT_RELAYS, ...env.get().PLATFORM_RELAYS]) + searchRelays([LOCAL_RELAY_URL, ...env.DEFAULT_RELAYS, ...env.PLATFORM_RELAYS]) } const openModal = m => { diff --git a/src/app/views/Logout.svelte b/src/app/views/Logout.svelte index 170b53099..1dce7092f 100644 --- a/src/app/views/Logout.svelte +++ b/src/app/views/Logout.svelte @@ -1,10 +1,11 @@ diff --git a/src/app/views/NoteCreate.svelte b/src/app/views/NoteCreate.svelte index 4a4399e68..18ecfd005 100644 --- a/src/app/views/NoteCreate.svelte +++ b/src/app/views/NoteCreate.svelte @@ -5,8 +5,9 @@ import {join, whereEq, identity} from "ramda" import {throttle, commaFormat, toTitle, switcherFn} from "hurdak" import {writable} from "svelte/store" - import {now} from "@welshman/lib" + import {ctx, now} from "@welshman/lib" import {createEvent} from "@welshman/util" + import {session} from "@welshman/app" import {currencyOptions} from "src/util/i18n" import {dateToSeconds} from "src/util/misc" import {showWarning, showPublishInfo} from "src/partials/Toast.svelte" @@ -30,14 +31,7 @@ import NoteImages from "src/app/shared/NoteImages.svelte" import {publish, mention} from "src/engine" import {router} from "src/app/util/router" - import { - env, - hints, - session, - getClientTags, - tagsFromContent, - publishToZeroOrMoreGroups, - } from "src/engine" + import {env, getClientTags, tagsFromContent, publishToZeroOrMoreGroups} from "src/engine" export let type = "note" export let quote = null @@ -45,7 +39,7 @@ export let group = null export let initialValues = {} - const defaultGroups = $env.FORCE_GROUP ? [$env.FORCE_GROUP] : [group].filter(identity) + const defaultGroups = env.FORCE_GROUP ? [env.FORCE_GROUP] : [group].filter(identity) let images, compose let charCount = 0 @@ -127,7 +121,7 @@ // Re-broadcast the note we're quoting if (!opts.groups.length) { - publish({event: quote, relays: hints.WriteRelays().getUrls()}) + publish({event: quote, relays: ctx.app.router.WriteRelays().getUrls()}) } } @@ -191,7 +185,7 @@ if (quote) { const nevent = nip19.neventEncode({ id: quote.id, - relays: hints.Event(quote).getUrls(), + relays: ctx.app.router.Event(quote).getUrls(), }) compose.nevent("nostr:" + nevent) @@ -280,9 +274,9 @@ {commaFormat(wordCount)} words • - +
@@ -290,16 +284,17 @@ Send images?.addImage(e.detail)} />
- {#if !$env.FORCE_GROUP} - options.setView("settings")}> 0}> {opts.groups.length} {opts.warning || 0} - + {/if} diff --git a/src/app/views/NoteDelete.svelte b/src/app/views/NoteDelete.svelte index a50e9e126..0de8058ea 100644 --- a/src/app/views/NoteDelete.svelte +++ b/src/app/views/NoteDelete.svelte @@ -4,13 +4,13 @@ import {router} from "src/app/util/router" import {publishDeletion} from "src/engine" - export let eid + export let id export let kind const onCancel = () => router.pop() const onConfirm = () => { - publishDeletion({kind, id: eid}) + publishDeletion({kind, id}) router.pop() } diff --git a/src/app/views/NoteDetail.svelte b/src/app/views/NoteDetail.svelte index 5ba13ddf2..d789b1677 100644 --- a/src/app/views/NoteDetail.svelte +++ b/src/app/views/NoteDetail.svelte @@ -1,32 +1,23 @@ -{#await promise} +{#if $event} +
+ +
+{:else} -{:then note} - {#if note} -
- -
- {:else} -

Failed to load note.

- {/if} -{/await} +{/if} diff --git a/src/app/views/NotificationMention.svelte b/src/app/views/NotificationMention.svelte index f64fb0edc..0f4c294ef 100644 --- a/src/app/views/NotificationMention.svelte +++ b/src/app/views/NotificationMention.svelte @@ -1,27 +1,23 @@
@@ -29,9 +25,9 @@ {formatTimestamp(timestamp)}
- {#await promise} + {#if $event} + + {:else} - {:then note} - - {/await} + {/if}
diff --git a/src/app/views/NotificationReactions.svelte b/src/app/views/NotificationReactions.svelte index e8dea5c60..b4d089d31 100644 --- a/src/app/views/NotificationReactions.svelte +++ b/src/app/views/NotificationReactions.svelte @@ -1,13 +1,13 @@ - + diff --git a/src/app/views/PersonInfo.svelte b/src/app/views/PersonInfo.svelte index df57d66ae..8a312f93c 100644 --- a/src/app/views/PersonInfo.svelte +++ b/src/app/views/PersonInfo.svelte @@ -1,15 +1,15 @@ diff --git a/src/app/views/RelayDetail.svelte b/src/app/views/RelayDetail.svelte index 0c45f45af..ace431da7 100644 --- a/src/app/views/RelayDetail.svelte +++ b/src/app/views/RelayDetail.svelte @@ -1,14 +1,15 @@
diff --git a/src/app/views/ThreadDetail.svelte b/src/app/views/ThreadDetail.svelte index 39e2c5ee0..6100f9d76 100644 --- a/src/app/views/ThreadDetail.svelte +++ b/src/app/views/ThreadDetail.svelte @@ -1,36 +1,34 @@ {#if loading} @@ -52,5 +50,5 @@ {/if} - + {/if} diff --git a/src/app/views/TopicFeed.svelte b/src/app/views/TopicFeed.svelte deleted file mode 100644 index 36c8b21d2..000000000 --- a/src/app/views/TopicFeed.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - -
- #{topic} -
- -
-
- diff --git a/src/app/views/UserContent.svelte b/src/app/views/UserContent.svelte index e5548f090..ec8a97a56 100644 --- a/src/app/views/UserContent.svelte +++ b/src/app/views/UserContent.svelte @@ -1,8 +1,8 @@ @@ -55,13 +50,13 @@

Control who and what you see on {appName}.

- - + +

- Show how many likes and reactions a note received. Disabling this can reduce how much data {appName} - uses. + Controls which icons appear at the bottom of any given note. Disabling these can reduce how + much data {appName} uses.

-
+

@@ -93,7 +88,7 @@

Notes containing these words will be hidden by default.

diff --git a/src/app/views/UserData.svelte b/src/app/views/UserData.svelte index 42091673e..748276835 100644 --- a/src/app/views/UserData.svelte +++ b/src/app/views/UserData.svelte @@ -1,7 +1,8 @@ - -
diff --git a/src/partials/CopyValue.svelte b/src/partials/CopyValue.svelte index 562aa17ba..42c9add34 100644 --- a/src/partials/CopyValue.svelte +++ b/src/partials/CopyValue.svelte @@ -1,6 +1,6 @@
-
+
+
{#if value} -
-
+ {/if}
diff --git a/src/partials/DateTimeInput.svelte b/src/partials/DateTimeInput.svelte index b01d2a179..9d0e3e3ba 100644 --- a/src/partials/DateTimeInput.svelte +++ b/src/partials/DateTimeInput.svelte @@ -24,17 +24,18 @@
-
+
+
{#if value} -
-
+ {/if}
diff --git a/src/partials/ListItem.svelte b/src/partials/ListItem.svelte index d9206d879..77c6f2665 100644 --- a/src/partials/ListItem.svelte +++ b/src/partials/ListItem.svelte @@ -6,7 +6,7 @@ const onRemove = () => dispatch('remove') -
+
+ diff --git a/src/partials/Media.svelte b/src/partials/Media.svelte index 36951303a..114002bc5 100644 --- a/src/partials/Media.svelte +++ b/src/partials/Media.svelte @@ -1,7 +1,6 @@
- +
{displayOption(option)} diff --git a/src/partials/SelectList.svelte b/src/partials/SelectList.svelte index 095ddb892..8b385264a 100644 --- a/src/partials/SelectList.svelte +++ b/src/partials/SelectList.svelte @@ -19,7 +19,8 @@ } -
{/each} -
+ diff --git a/src/partials/WotScore.svelte b/src/partials/WotScore.svelte index 6151e6284..6388fd915 100644 --- a/src/partials/WotScore.svelte +++ b/src/partials/WotScore.svelte @@ -13,29 +13,33 @@ - - - +
+ + - {score} - +
diff --git a/src/util/nostr.ts b/src/util/nostr.ts index 9804c4d6a..a2ed443e2 100644 --- a/src/util/nostr.ts +++ b/src/util/nostr.ts @@ -13,7 +13,6 @@ import { ZAP_RESPONSE, Tags, Address, - isShareableRelayUrl, LIVE_CHAT_MESSAGE, } from "@welshman/util" import type {TrustedEvent} from "@welshman/util" @@ -38,7 +37,16 @@ export const isKeyValid = (key: string) => { return true } -export const noteKinds = [NOTE, LONG_FORM, HIGHLIGHT, REMIX, AUDIO, EVENT_TIME, CLASSIFIED, LIVE_CHAT_MESSAGE] +export const noteKinds = [ + NOTE, + LONG_FORM, + HIGHLIGHT, + REMIX, + AUDIO, + EVENT_TIME, + CLASSIFIED, + LIVE_CHAT_MESSAGE, +] export const replyKinds = [NOTE, HIGHLIGHT, REMIX, AUDIO] export const reactionKinds = [REACTION, ZAP_RESPONSE] as number[] export const repostKinds = [REPOST, GENERIC_REPOST] as number[] diff --git a/vite.config.js b/vite.config.js index 26efecc28..fbf2dc881 100644 --- a/vite.config.js +++ b/vite.config.js @@ -131,6 +131,9 @@ export default defineConfig(async () => { VitePWA({ registerType: "autoUpdate", injectRegister: "auto", + workbox: { + maximumFileSizeToCacheInBytes: 5 * 1024 ** 2, // 5 MB or set to something else + }, manifest: { name: process.env.VITE_APP_NAME, short_name: process.env.VITE_APP_NAME,