[READ-ONLY] Mirror of https://github.com/flo-bit/skywatched. review movies and tv shows, based on at proto skywatched.app
0

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #77 from flo-bit/alpha-v1

add crossposting, visible settings page

author
Florian
committer
GitHub
date (Dec 23, 2024, 2:30 AM +0100) commit 056adce3 parent 65d1df55
+2633 -49
+2145 -5
package-lock.json
··· 24 24 "clsx": "^2.1.1", 25 25 "dotenv": "^16.4.5", 26 26 "drizzle-orm": "^0.33.0", 27 + "imagemin": "^9.0.0", 28 + "imagemin-webp": "^8.0.0", 27 29 "plyr": "^3.7.8", 28 30 "svelte-sonner": "^0.3.28", 29 31 "tailwind-merge": "^2.5.4" ··· 39 41 "@tailwindcss/forms": "^0.5.9", 40 42 "@tailwindcss/typography": "^0.5.15", 41 43 "@types/eslint": "^9.6.0", 44 + "@types/imagemin": "^9.0.0", 45 + "@types/imagemin-webp": "^7.0.3", 42 46 "autoprefixer": "^10.4.20", 43 47 "drizzle-kit": "^0.22.0", 44 48 "eslint": "^9.7.0", ··· 2706 2710 "win32" 2707 2711 ] 2708 2712 }, 2713 + "node_modules/@sec-ant/readable-stream": { 2714 + "version": "0.4.1", 2715 + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", 2716 + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==" 2717 + }, 2709 2718 "node_modules/@shuding/opentype.js": { 2710 2719 "version": "1.4.0-beta.0", 2711 2720 "resolved": "https://registry.npmjs.org/@shuding/opentype.js/-/opentype.js-1.4.0-beta.0.tgz", ··· 2719 2728 }, 2720 2729 "engines": { 2721 2730 "node": ">= 8.0.0" 2731 + } 2732 + }, 2733 + "node_modules/@sindresorhus/is": { 2734 + "version": "6.3.1", 2735 + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-6.3.1.tgz", 2736 + "integrity": "sha512-FX4MfcifwJyFOI2lPoX7PQxCqx8BG1HCho7WdiXwpEQx1Ycij0JxkfYtGK7yqNScrZGSlt6RE6sw8QYoH7eKnQ==", 2737 + "engines": { 2738 + "node": ">=16" 2739 + }, 2740 + "funding": { 2741 + "url": "https://github.com/sindresorhus/is?sponsor=1" 2742 + } 2743 + }, 2744 + "node_modules/@sindresorhus/merge-streams": { 2745 + "version": "2.3.0", 2746 + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", 2747 + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", 2748 + "engines": { 2749 + "node": ">=18" 2750 + }, 2751 + "funding": { 2752 + "url": "https://github.com/sponsors/sindresorhus" 2722 2753 } 2723 2754 }, 2724 2755 "node_modules/@sveltejs/adapter-auto": { ··· 2871 2902 "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20" 2872 2903 } 2873 2904 }, 2905 + "node_modules/@tokenizer/token": { 2906 + "version": "0.3.0", 2907 + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", 2908 + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" 2909 + }, 2874 2910 "node_modules/@ts-morph/common": { 2875 2911 "version": "0.17.0", 2876 2912 "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.17.0.tgz", ··· 2940 2976 "version": "1.0.6", 2941 2977 "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 2942 2978 "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" 2979 + }, 2980 + "node_modules/@types/imagemin": { 2981 + "version": "9.0.0", 2982 + "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-9.0.0.tgz", 2983 + "integrity": "sha512-4IaT+BdPUAFf/AAy3XlFAbqGk4RawhdidxWO5XTe+PJAYAr4d7m2FHiqyEPXbDpwS+IaLIJq5AIjLE9HcwMGBg==", 2984 + "dev": true, 2985 + "dependencies": { 2986 + "@types/node": "*" 2987 + } 2988 + }, 2989 + "node_modules/@types/imagemin-webp": { 2990 + "version": "7.0.3", 2991 + "resolved": "https://registry.npmjs.org/@types/imagemin-webp/-/imagemin-webp-7.0.3.tgz", 2992 + "integrity": "sha512-C2/EMohS4bzsvY5VJvdzHFdcfmnZoui54DmM/9bFtK57/CgGmKkc+p6n49euPGmMFDDvwm4yVl60nwxcZOmH5A==", 2993 + "dev": true, 2994 + "dependencies": { 2995 + "@types/imagemin": "*" 2996 + } 2943 2997 }, 2944 2998 "node_modules/@types/json-schema": { 2945 2999 "version": "7.0.15", ··· 3336 3390 "url": "https://github.com/sponsors/jonschlinkert" 3337 3391 } 3338 3392 }, 3393 + "node_modules/arch": { 3394 + "version": "2.2.0", 3395 + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", 3396 + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", 3397 + "funding": [ 3398 + { 3399 + "type": "github", 3400 + "url": "https://github.com/sponsors/feross" 3401 + }, 3402 + { 3403 + "type": "patreon", 3404 + "url": "https://www.patreon.com/feross" 3405 + }, 3406 + { 3407 + "type": "consulting", 3408 + "url": "https://feross.org/support" 3409 + } 3410 + ] 3411 + }, 3412 + "node_modules/archive-type": { 3413 + "version": "4.0.0", 3414 + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", 3415 + "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==", 3416 + "dependencies": { 3417 + "file-type": "^4.2.0" 3418 + }, 3419 + "engines": { 3420 + "node": ">=4" 3421 + } 3422 + }, 3423 + "node_modules/archive-type/node_modules/file-type": { 3424 + "version": "4.4.0", 3425 + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", 3426 + "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==", 3427 + "engines": { 3428 + "node": ">=4" 3429 + } 3430 + }, 3339 3431 "node_modules/arg": { 3340 3432 "version": "5.0.2", 3341 3433 "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", ··· 3454 3546 } 3455 3547 ] 3456 3548 }, 3549 + "node_modules/bin-build": { 3550 + "version": "3.0.0", 3551 + "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz", 3552 + "integrity": "sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==", 3553 + "dependencies": { 3554 + "decompress": "^4.0.0", 3555 + "download": "^6.2.2", 3556 + "execa": "^0.7.0", 3557 + "p-map-series": "^1.0.0", 3558 + "tempfile": "^2.0.0" 3559 + }, 3560 + "engines": { 3561 + "node": ">=4" 3562 + } 3563 + }, 3564 + "node_modules/bin-check": { 3565 + "version": "4.1.0", 3566 + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", 3567 + "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", 3568 + "dependencies": { 3569 + "execa": "^0.7.0", 3570 + "executable": "^4.1.0" 3571 + }, 3572 + "engines": { 3573 + "node": ">=4" 3574 + } 3575 + }, 3576 + "node_modules/bin-version": { 3577 + "version": "3.1.0", 3578 + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz", 3579 + "integrity": "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==", 3580 + "dependencies": { 3581 + "execa": "^1.0.0", 3582 + "find-versions": "^3.0.0" 3583 + }, 3584 + "engines": { 3585 + "node": ">=6" 3586 + } 3587 + }, 3588 + "node_modules/bin-version-check": { 3589 + "version": "4.0.0", 3590 + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz", 3591 + "integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==", 3592 + "dependencies": { 3593 + "bin-version": "^3.0.0", 3594 + "semver": "^5.6.0", 3595 + "semver-truncate": "^1.1.2" 3596 + }, 3597 + "engines": { 3598 + "node": ">=6" 3599 + } 3600 + }, 3601 + "node_modules/bin-version-check/node_modules/semver": { 3602 + "version": "5.7.2", 3603 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", 3604 + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 3605 + "bin": { 3606 + "semver": "bin/semver" 3607 + } 3608 + }, 3609 + "node_modules/bin-version/node_modules/cross-spawn": { 3610 + "version": "6.0.6", 3611 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", 3612 + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", 3613 + "dependencies": { 3614 + "nice-try": "^1.0.4", 3615 + "path-key": "^2.0.1", 3616 + "semver": "^5.5.0", 3617 + "shebang-command": "^1.2.0", 3618 + "which": "^1.2.9" 3619 + }, 3620 + "engines": { 3621 + "node": ">=4.8" 3622 + } 3623 + }, 3624 + "node_modules/bin-version/node_modules/execa": { 3625 + "version": "1.0.0", 3626 + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", 3627 + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", 3628 + "dependencies": { 3629 + "cross-spawn": "^6.0.0", 3630 + "get-stream": "^4.0.0", 3631 + "is-stream": "^1.1.0", 3632 + "npm-run-path": "^2.0.0", 3633 + "p-finally": "^1.0.0", 3634 + "signal-exit": "^3.0.0", 3635 + "strip-eof": "^1.0.0" 3636 + }, 3637 + "engines": { 3638 + "node": ">=6" 3639 + } 3640 + }, 3641 + "node_modules/bin-version/node_modules/get-stream": { 3642 + "version": "4.1.0", 3643 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 3644 + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 3645 + "dependencies": { 3646 + "pump": "^3.0.0" 3647 + }, 3648 + "engines": { 3649 + "node": ">=6" 3650 + } 3651 + }, 3652 + "node_modules/bin-version/node_modules/is-stream": { 3653 + "version": "1.1.0", 3654 + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 3655 + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", 3656 + "engines": { 3657 + "node": ">=0.10.0" 3658 + } 3659 + }, 3660 + "node_modules/bin-version/node_modules/path-key": { 3661 + "version": "2.0.1", 3662 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 3663 + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", 3664 + "engines": { 3665 + "node": ">=4" 3666 + } 3667 + }, 3668 + "node_modules/bin-version/node_modules/semver": { 3669 + "version": "5.7.2", 3670 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", 3671 + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 3672 + "bin": { 3673 + "semver": "bin/semver" 3674 + } 3675 + }, 3676 + "node_modules/bin-version/node_modules/shebang-command": { 3677 + "version": "1.2.0", 3678 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 3679 + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", 3680 + "dependencies": { 3681 + "shebang-regex": "^1.0.0" 3682 + }, 3683 + "engines": { 3684 + "node": ">=0.10.0" 3685 + } 3686 + }, 3687 + "node_modules/bin-version/node_modules/shebang-regex": { 3688 + "version": "1.0.0", 3689 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 3690 + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", 3691 + "engines": { 3692 + "node": ">=0.10.0" 3693 + } 3694 + }, 3695 + "node_modules/bin-version/node_modules/signal-exit": { 3696 + "version": "3.0.7", 3697 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3698 + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 3699 + }, 3700 + "node_modules/bin-version/node_modules/which": { 3701 + "version": "1.3.1", 3702 + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 3703 + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 3704 + "dependencies": { 3705 + "isexe": "^2.0.0" 3706 + }, 3707 + "bin": { 3708 + "which": "bin/which" 3709 + } 3710 + }, 3711 + "node_modules/bin-wrapper": { 3712 + "version": "4.1.0", 3713 + "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", 3714 + "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", 3715 + "dependencies": { 3716 + "bin-check": "^4.1.0", 3717 + "bin-version-check": "^4.0.0", 3718 + "download": "^7.1.0", 3719 + "import-lazy": "^3.1.0", 3720 + "os-filter-obj": "^2.0.0", 3721 + "pify": "^4.0.1" 3722 + }, 3723 + "engines": { 3724 + "node": ">=6" 3725 + } 3726 + }, 3727 + "node_modules/bin-wrapper/node_modules/@sindresorhus/is": { 3728 + "version": "0.7.0", 3729 + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", 3730 + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", 3731 + "engines": { 3732 + "node": ">=4" 3733 + } 3734 + }, 3735 + "node_modules/bin-wrapper/node_modules/download": { 3736 + "version": "7.1.0", 3737 + "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", 3738 + "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", 3739 + "dependencies": { 3740 + "archive-type": "^4.0.0", 3741 + "caw": "^2.0.1", 3742 + "content-disposition": "^0.5.2", 3743 + "decompress": "^4.2.0", 3744 + "ext-name": "^5.0.0", 3745 + "file-type": "^8.1.0", 3746 + "filenamify": "^2.0.0", 3747 + "get-stream": "^3.0.0", 3748 + "got": "^8.3.1", 3749 + "make-dir": "^1.2.0", 3750 + "p-event": "^2.1.0", 3751 + "pify": "^3.0.0" 3752 + }, 3753 + "engines": { 3754 + "node": ">=6" 3755 + } 3756 + }, 3757 + "node_modules/bin-wrapper/node_modules/download/node_modules/pify": { 3758 + "version": "3.0.0", 3759 + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 3760 + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", 3761 + "engines": { 3762 + "node": ">=4" 3763 + } 3764 + }, 3765 + "node_modules/bin-wrapper/node_modules/file-type": { 3766 + "version": "8.1.0", 3767 + "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", 3768 + "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", 3769 + "engines": { 3770 + "node": ">=6" 3771 + } 3772 + }, 3773 + "node_modules/bin-wrapper/node_modules/get-stream": { 3774 + "version": "3.0.0", 3775 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 3776 + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", 3777 + "engines": { 3778 + "node": ">=4" 3779 + } 3780 + }, 3781 + "node_modules/bin-wrapper/node_modules/got": { 3782 + "version": "8.3.2", 3783 + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", 3784 + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", 3785 + "dependencies": { 3786 + "@sindresorhus/is": "^0.7.0", 3787 + "cacheable-request": "^2.1.1", 3788 + "decompress-response": "^3.3.0", 3789 + "duplexer3": "^0.1.4", 3790 + "get-stream": "^3.0.0", 3791 + "into-stream": "^3.1.0", 3792 + "is-retry-allowed": "^1.1.0", 3793 + "isurl": "^1.0.0-alpha5", 3794 + "lowercase-keys": "^1.0.0", 3795 + "mimic-response": "^1.0.0", 3796 + "p-cancelable": "^0.4.0", 3797 + "p-timeout": "^2.0.1", 3798 + "pify": "^3.0.0", 3799 + "safe-buffer": "^5.1.1", 3800 + "timed-out": "^4.0.1", 3801 + "url-parse-lax": "^3.0.0", 3802 + "url-to-options": "^1.0.1" 3803 + }, 3804 + "engines": { 3805 + "node": ">=4" 3806 + } 3807 + }, 3808 + "node_modules/bin-wrapper/node_modules/got/node_modules/pify": { 3809 + "version": "3.0.0", 3810 + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 3811 + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", 3812 + "engines": { 3813 + "node": ">=4" 3814 + } 3815 + }, 3816 + "node_modules/bin-wrapper/node_modules/p-cancelable": { 3817 + "version": "0.4.1", 3818 + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", 3819 + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", 3820 + "engines": { 3821 + "node": ">=4" 3822 + } 3823 + }, 3824 + "node_modules/bin-wrapper/node_modules/p-event": { 3825 + "version": "2.3.1", 3826 + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", 3827 + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", 3828 + "dependencies": { 3829 + "p-timeout": "^2.0.1" 3830 + }, 3831 + "engines": { 3832 + "node": ">=6" 3833 + } 3834 + }, 3835 + "node_modules/bin-wrapper/node_modules/p-timeout": { 3836 + "version": "2.0.1", 3837 + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", 3838 + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", 3839 + "dependencies": { 3840 + "p-finally": "^1.0.0" 3841 + }, 3842 + "engines": { 3843 + "node": ">=4" 3844 + } 3845 + }, 3846 + "node_modules/bin-wrapper/node_modules/pify": { 3847 + "version": "4.0.1", 3848 + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 3849 + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 3850 + "engines": { 3851 + "node": ">=6" 3852 + } 3853 + }, 3854 + "node_modules/bin-wrapper/node_modules/prepend-http": { 3855 + "version": "2.0.0", 3856 + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", 3857 + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", 3858 + "engines": { 3859 + "node": ">=4" 3860 + } 3861 + }, 3862 + "node_modules/bin-wrapper/node_modules/url-parse-lax": { 3863 + "version": "3.0.0", 3864 + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", 3865 + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", 3866 + "dependencies": { 3867 + "prepend-http": "^2.0.0" 3868 + }, 3869 + "engines": { 3870 + "node": ">=4" 3871 + } 3872 + }, 3457 3873 "node_modules/binary-extensions": { 3458 3874 "version": "2.3.0", 3459 3875 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", ··· 3472 3888 "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 3473 3889 "dependencies": { 3474 3890 "file-uri-to-path": "1.0.0" 3891 + } 3892 + }, 3893 + "node_modules/bl": { 3894 + "version": "1.2.3", 3895 + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", 3896 + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", 3897 + "dependencies": { 3898 + "readable-stream": "^2.3.5", 3899 + "safe-buffer": "^5.1.1" 3900 + } 3901 + }, 3902 + "node_modules/bl/node_modules/readable-stream": { 3903 + "version": "2.3.8", 3904 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 3905 + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 3906 + "dependencies": { 3907 + "core-util-is": "~1.0.0", 3908 + "inherits": "~2.0.3", 3909 + "isarray": "~1.0.0", 3910 + "process-nextick-args": "~2.0.0", 3911 + "safe-buffer": "~5.1.1", 3912 + "string_decoder": "~1.1.1", 3913 + "util-deprecate": "~1.0.1" 3914 + } 3915 + }, 3916 + "node_modules/bl/node_modules/safe-buffer": { 3917 + "version": "5.1.2", 3918 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3919 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 3920 + }, 3921 + "node_modules/bl/node_modules/string_decoder": { 3922 + "version": "1.1.1", 3923 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3924 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3925 + "dependencies": { 3926 + "safe-buffer": "~5.1.0" 3475 3927 } 3476 3928 }, 3477 3929 "node_modules/body-parser": { ··· 3585 4037 "ieee754": "^1.2.1" 3586 4038 } 3587 4039 }, 4040 + "node_modules/buffer-alloc": { 4041 + "version": "1.2.0", 4042 + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", 4043 + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", 4044 + "dependencies": { 4045 + "buffer-alloc-unsafe": "^1.1.0", 4046 + "buffer-fill": "^1.0.0" 4047 + } 4048 + }, 4049 + "node_modules/buffer-alloc-unsafe": { 4050 + "version": "1.1.0", 4051 + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", 4052 + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" 4053 + }, 4054 + "node_modules/buffer-crc32": { 4055 + "version": "0.2.13", 4056 + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 4057 + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 4058 + "engines": { 4059 + "node": "*" 4060 + } 4061 + }, 4062 + "node_modules/buffer-fill": { 4063 + "version": "1.0.0", 4064 + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", 4065 + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" 4066 + }, 3588 4067 "node_modules/buffer-from": { 3589 4068 "version": "1.1.2", 3590 4069 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", ··· 3599 4078 "node": ">= 0.8" 3600 4079 } 3601 4080 }, 4081 + "node_modules/cacheable-request": { 4082 + "version": "2.1.4", 4083 + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", 4084 + "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", 4085 + "dependencies": { 4086 + "clone-response": "1.0.2", 4087 + "get-stream": "3.0.0", 4088 + "http-cache-semantics": "3.8.1", 4089 + "keyv": "3.0.0", 4090 + "lowercase-keys": "1.0.0", 4091 + "normalize-url": "2.0.1", 4092 + "responselike": "1.0.2" 4093 + } 4094 + }, 4095 + "node_modules/cacheable-request/node_modules/get-stream": { 4096 + "version": "3.0.0", 4097 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 4098 + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", 4099 + "engines": { 4100 + "node": ">=4" 4101 + } 4102 + }, 4103 + "node_modules/cacheable-request/node_modules/json-buffer": { 4104 + "version": "3.0.0", 4105 + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", 4106 + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" 4107 + }, 4108 + "node_modules/cacheable-request/node_modules/keyv": { 4109 + "version": "3.0.0", 4110 + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", 4111 + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", 4112 + "dependencies": { 4113 + "json-buffer": "3.0.0" 4114 + } 4115 + }, 4116 + "node_modules/cacheable-request/node_modules/lowercase-keys": { 4117 + "version": "1.0.0", 4118 + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", 4119 + "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", 4120 + "engines": { 4121 + "node": ">=0.10.0" 4122 + } 4123 + }, 3602 4124 "node_modules/call-bind": { 3603 4125 "version": "1.0.8", 3604 4126 "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", ··· 3689 4211 } 3690 4212 ] 3691 4213 }, 4214 + "node_modules/caw": { 4215 + "version": "2.0.1", 4216 + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", 4217 + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", 4218 + "dependencies": { 4219 + "get-proxy": "^2.0.0", 4220 + "isurl": "^1.0.0-alpha5", 4221 + "tunnel-agent": "^0.6.0", 4222 + "url-to-options": "^1.0.1" 4223 + }, 4224 + "engines": { 4225 + "node": ">=4" 4226 + } 4227 + }, 3692 4228 "node_modules/cbor-extract": { 3693 4229 "version": "2.2.0", 3694 4230 "resolved": "https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz", ··· 3741 4277 "url": "https://github.com/chalk/chalk?sponsor=1" 3742 4278 } 3743 4279 }, 4280 + "node_modules/change-file-extension": { 4281 + "version": "0.1.1", 4282 + "resolved": "https://registry.npmjs.org/change-file-extension/-/change-file-extension-0.1.1.tgz", 4283 + "integrity": "sha512-lB0j9teu8JtDPDHRfU8pNH33w4wMu5bOaKoT4PxH+AKugBrIfpiJMTTKIm0TErNeJPkeQEgvH31YpccTwOKPRg==", 4284 + "engines": { 4285 + "node": ">=18" 4286 + }, 4287 + "funding": { 4288 + "url": "https://github.com/sponsors/sindresorhus" 4289 + } 4290 + }, 3744 4291 "node_modules/chokidar": { 3745 4292 "version": "4.0.1", 3746 4293 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", ··· 3834 4381 }, 3835 4382 "funding": { 3836 4383 "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 4384 + } 4385 + }, 4386 + "node_modules/clone-response": { 4387 + "version": "1.0.2", 4388 + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", 4389 + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", 4390 + "dependencies": { 4391 + "mimic-response": "^1.0.0" 3837 4392 } 3838 4393 }, 3839 4394 "node_modules/clsx": { ··· 3884 4439 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 3885 4440 "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 3886 4441 }, 4442 + "node_modules/config-chain": { 4443 + "version": "1.1.13", 4444 + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", 4445 + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", 4446 + "dependencies": { 4447 + "ini": "^1.3.4", 4448 + "proto-list": "~1.2.1" 4449 + } 4450 + }, 3887 4451 "node_modules/consola": { 3888 4452 "version": "3.2.3", 3889 4453 "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", ··· 3911 4475 "node": ">= 0.6" 3912 4476 } 3913 4477 }, 4478 + "node_modules/convert-hrtime": { 4479 + "version": "5.0.0", 4480 + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", 4481 + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", 4482 + "engines": { 4483 + "node": ">=12" 4484 + }, 4485 + "funding": { 4486 + "url": "https://github.com/sponsors/sindresorhus" 4487 + } 4488 + }, 3914 4489 "node_modules/cookie": { 3915 4490 "version": "0.6.0", 3916 4491 "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", ··· 3933 4508 "type": "opencollective", 3934 4509 "url": "https://opencollective.com/core-js" 3935 4510 } 4511 + }, 4512 + "node_modules/core-util-is": { 4513 + "version": "1.0.3", 4514 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 4515 + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" 3936 4516 }, 3937 4517 "node_modules/cross-spawn": { 3938 4518 "version": "7.0.6", ··· 3992 4572 "resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz", 3993 4573 "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==" 3994 4574 }, 4575 + "node_modules/cwebp-bin": { 4576 + "version": "8.0.0", 4577 + "resolved": "https://registry.npmjs.org/cwebp-bin/-/cwebp-bin-8.0.0.tgz", 4578 + "integrity": "sha512-j2s6jA84aG20lB0i/FBwqZGc8nHx4VASUK8OTDxy3xoUHoX/+pP6T15/TnWwhMcD0pZ05y5GgRPkurufOC8tnQ==", 4579 + "hasInstallScript": true, 4580 + "dependencies": { 4581 + "bin-build": "^3.0.0", 4582 + "bin-wrapper": "^4.0.1" 4583 + }, 4584 + "bin": { 4585 + "cwebp": "cli.js" 4586 + }, 4587 + "engines": { 4588 + "node": "^14.13.1 || >=16.0.0" 4589 + }, 4590 + "funding": { 4591 + "url": "https://github.com/imagemin/cwebp-bin?sponsor=1" 4592 + } 4593 + }, 3995 4594 "node_modules/data-uri-to-buffer": { 3996 4595 "version": "4.0.1", 3997 4596 "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", ··· 4016 4615 } 4017 4616 } 4018 4617 }, 4618 + "node_modules/decode-uri-component": { 4619 + "version": "0.2.2", 4620 + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", 4621 + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", 4622 + "engines": { 4623 + "node": ">=0.10" 4624 + } 4625 + }, 4626 + "node_modules/decompress": { 4627 + "version": "4.2.1", 4628 + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", 4629 + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", 4630 + "dependencies": { 4631 + "decompress-tar": "^4.0.0", 4632 + "decompress-tarbz2": "^4.0.0", 4633 + "decompress-targz": "^4.0.0", 4634 + "decompress-unzip": "^4.0.1", 4635 + "graceful-fs": "^4.1.10", 4636 + "make-dir": "^1.0.0", 4637 + "pify": "^2.3.0", 4638 + "strip-dirs": "^2.0.0" 4639 + }, 4640 + "engines": { 4641 + "node": ">=4" 4642 + } 4643 + }, 4644 + "node_modules/decompress-response": { 4645 + "version": "3.3.0", 4646 + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", 4647 + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", 4648 + "dependencies": { 4649 + "mimic-response": "^1.0.0" 4650 + }, 4651 + "engines": { 4652 + "node": ">=4" 4653 + } 4654 + }, 4655 + "node_modules/decompress-tar": { 4656 + "version": "4.1.1", 4657 + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", 4658 + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", 4659 + "dependencies": { 4660 + "file-type": "^5.2.0", 4661 + "is-stream": "^1.1.0", 4662 + "tar-stream": "^1.5.2" 4663 + }, 4664 + "engines": { 4665 + "node": ">=4" 4666 + } 4667 + }, 4668 + "node_modules/decompress-tar/node_modules/file-type": { 4669 + "version": "5.2.0", 4670 + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", 4671 + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", 4672 + "engines": { 4673 + "node": ">=4" 4674 + } 4675 + }, 4676 + "node_modules/decompress-tar/node_modules/is-stream": { 4677 + "version": "1.1.0", 4678 + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 4679 + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", 4680 + "engines": { 4681 + "node": ">=0.10.0" 4682 + } 4683 + }, 4684 + "node_modules/decompress-tarbz2": { 4685 + "version": "4.1.1", 4686 + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", 4687 + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", 4688 + "dependencies": { 4689 + "decompress-tar": "^4.1.0", 4690 + "file-type": "^6.1.0", 4691 + "is-stream": "^1.1.0", 4692 + "seek-bzip": "^1.0.5", 4693 + "unbzip2-stream": "^1.0.9" 4694 + }, 4695 + "engines": { 4696 + "node": ">=4" 4697 + } 4698 + }, 4699 + "node_modules/decompress-tarbz2/node_modules/file-type": { 4700 + "version": "6.2.0", 4701 + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", 4702 + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", 4703 + "engines": { 4704 + "node": ">=4" 4705 + } 4706 + }, 4707 + "node_modules/decompress-tarbz2/node_modules/is-stream": { 4708 + "version": "1.1.0", 4709 + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 4710 + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", 4711 + "engines": { 4712 + "node": ">=0.10.0" 4713 + } 4714 + }, 4715 + "node_modules/decompress-targz": { 4716 + "version": "4.1.1", 4717 + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", 4718 + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", 4719 + "dependencies": { 4720 + "decompress-tar": "^4.1.1", 4721 + "file-type": "^5.2.0", 4722 + "is-stream": "^1.1.0" 4723 + }, 4724 + "engines": { 4725 + "node": ">=4" 4726 + } 4727 + }, 4728 + "node_modules/decompress-targz/node_modules/file-type": { 4729 + "version": "5.2.0", 4730 + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", 4731 + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", 4732 + "engines": { 4733 + "node": ">=4" 4734 + } 4735 + }, 4736 + "node_modules/decompress-targz/node_modules/is-stream": { 4737 + "version": "1.1.0", 4738 + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 4739 + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", 4740 + "engines": { 4741 + "node": ">=0.10.0" 4742 + } 4743 + }, 4744 + "node_modules/decompress-unzip": { 4745 + "version": "4.0.1", 4746 + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", 4747 + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", 4748 + "dependencies": { 4749 + "file-type": "^3.8.0", 4750 + "get-stream": "^2.2.0", 4751 + "pify": "^2.3.0", 4752 + "yauzl": "^2.4.2" 4753 + }, 4754 + "engines": { 4755 + "node": ">=4" 4756 + } 4757 + }, 4758 + "node_modules/decompress-unzip/node_modules/file-type": { 4759 + "version": "3.9.0", 4760 + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", 4761 + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", 4762 + "engines": { 4763 + "node": ">=0.10.0" 4764 + } 4765 + }, 4766 + "node_modules/decompress-unzip/node_modules/get-stream": { 4767 + "version": "2.3.1", 4768 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", 4769 + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", 4770 + "dependencies": { 4771 + "object-assign": "^4.0.1", 4772 + "pinkie-promise": "^2.0.0" 4773 + }, 4774 + "engines": { 4775 + "node": ">=0.10.0" 4776 + } 4777 + }, 4019 4778 "node_modules/deep-is": { 4020 4779 "version": "0.1.4", 4021 4780 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", ··· 4106 4865 "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 4107 4866 "dev": true 4108 4867 }, 4868 + "node_modules/dot-prop": { 4869 + "version": "8.0.2", 4870 + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-8.0.2.tgz", 4871 + "integrity": "sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==", 4872 + "dependencies": { 4873 + "type-fest": "^3.8.0" 4874 + }, 4875 + "engines": { 4876 + "node": ">=16" 4877 + }, 4878 + "funding": { 4879 + "url": "https://github.com/sponsors/sindresorhus" 4880 + } 4881 + }, 4109 4882 "node_modules/dotenv": { 4110 4883 "version": "16.4.7", 4111 4884 "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", ··· 4117 4890 "url": "https://dotenvx.com" 4118 4891 } 4119 4892 }, 4893 + "node_modules/download": { 4894 + "version": "6.2.5", 4895 + "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", 4896 + "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", 4897 + "dependencies": { 4898 + "caw": "^2.0.0", 4899 + "content-disposition": "^0.5.2", 4900 + "decompress": "^4.0.0", 4901 + "ext-name": "^5.0.0", 4902 + "file-type": "5.2.0", 4903 + "filenamify": "^2.0.0", 4904 + "get-stream": "^3.0.0", 4905 + "got": "^7.0.0", 4906 + "make-dir": "^1.0.0", 4907 + "p-event": "^1.0.0", 4908 + "pify": "^3.0.0" 4909 + }, 4910 + "engines": { 4911 + "node": ">=4" 4912 + } 4913 + }, 4914 + "node_modules/download/node_modules/file-type": { 4915 + "version": "5.2.0", 4916 + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", 4917 + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", 4918 + "engines": { 4919 + "node": ">=4" 4920 + } 4921 + }, 4922 + "node_modules/download/node_modules/get-stream": { 4923 + "version": "3.0.0", 4924 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 4925 + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", 4926 + "engines": { 4927 + "node": ">=4" 4928 + } 4929 + }, 4930 + "node_modules/download/node_modules/pify": { 4931 + "version": "3.0.0", 4932 + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 4933 + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", 4934 + "engines": { 4935 + "node": ">=4" 4936 + } 4937 + }, 4120 4938 "node_modules/drizzle-kit": { 4121 4939 "version": "0.22.8", 4122 4940 "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.22.8.tgz", ··· 4670 5488 "node": ">= 0.4" 4671 5489 } 4672 5490 }, 5491 + "node_modules/duplexer3": { 5492 + "version": "0.1.5", 5493 + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", 5494 + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" 5495 + }, 4673 5496 "node_modules/eastasianwidth": { 4674 5497 "version": "0.2.0", 4675 5498 "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", ··· 4712 5535 "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", 4713 5536 "engines": { 4714 5537 "node": ">= 0.8" 5538 + } 5539 + }, 5540 + "node_modules/end-of-stream": { 5541 + "version": "1.4.4", 5542 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 5543 + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 5544 + "dependencies": { 5545 + "once": "^1.4.0" 5546 + } 5547 + }, 5548 + "node_modules/environment": { 5549 + "version": "1.1.0", 5550 + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", 5551 + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", 5552 + "engines": { 5553 + "node": ">=18" 5554 + }, 5555 + "funding": { 5556 + "url": "https://github.com/sponsors/sindresorhus" 4715 5557 } 4716 5558 }, 4717 5559 "node_modules/es-define-property": { ··· 5079 5921 "node": ">=0.8.x" 5080 5922 } 5081 5923 }, 5924 + "node_modules/exec-buffer": { 5925 + "version": "3.2.0", 5926 + "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", 5927 + "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", 5928 + "dependencies": { 5929 + "execa": "^0.7.0", 5930 + "p-finally": "^1.0.0", 5931 + "pify": "^3.0.0", 5932 + "rimraf": "^2.5.4", 5933 + "tempfile": "^2.0.0" 5934 + }, 5935 + "engines": { 5936 + "node": ">=4" 5937 + } 5938 + }, 5939 + "node_modules/exec-buffer/node_modules/pify": { 5940 + "version": "3.0.0", 5941 + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 5942 + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", 5943 + "engines": { 5944 + "node": ">=4" 5945 + } 5946 + }, 5947 + "node_modules/exec-buffer/node_modules/rimraf": { 5948 + "version": "2.7.1", 5949 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 5950 + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 5951 + "deprecated": "Rimraf versions prior to v4 are no longer supported", 5952 + "dependencies": { 5953 + "glob": "^7.1.3" 5954 + }, 5955 + "bin": { 5956 + "rimraf": "bin.js" 5957 + } 5958 + }, 5959 + "node_modules/execa": { 5960 + "version": "0.7.0", 5961 + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", 5962 + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", 5963 + "dependencies": { 5964 + "cross-spawn": "^5.0.1", 5965 + "get-stream": "^3.0.0", 5966 + "is-stream": "^1.1.0", 5967 + "npm-run-path": "^2.0.0", 5968 + "p-finally": "^1.0.0", 5969 + "signal-exit": "^3.0.0", 5970 + "strip-eof": "^1.0.0" 5971 + }, 5972 + "engines": { 5973 + "node": ">=4" 5974 + } 5975 + }, 5976 + "node_modules/execa/node_modules/cross-spawn": { 5977 + "version": "5.1.0", 5978 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 5979 + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", 5980 + "dependencies": { 5981 + "lru-cache": "^4.0.1", 5982 + "shebang-command": "^1.2.0", 5983 + "which": "^1.2.9" 5984 + } 5985 + }, 5986 + "node_modules/execa/node_modules/get-stream": { 5987 + "version": "3.0.0", 5988 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 5989 + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", 5990 + "engines": { 5991 + "node": ">=4" 5992 + } 5993 + }, 5994 + "node_modules/execa/node_modules/is-stream": { 5995 + "version": "1.1.0", 5996 + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 5997 + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", 5998 + "engines": { 5999 + "node": ">=0.10.0" 6000 + } 6001 + }, 6002 + "node_modules/execa/node_modules/lru-cache": { 6003 + "version": "4.1.5", 6004 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 6005 + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 6006 + "dependencies": { 6007 + "pseudomap": "^1.0.2", 6008 + "yallist": "^2.1.2" 6009 + } 6010 + }, 6011 + "node_modules/execa/node_modules/shebang-command": { 6012 + "version": "1.2.0", 6013 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 6014 + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", 6015 + "dependencies": { 6016 + "shebang-regex": "^1.0.0" 6017 + }, 6018 + "engines": { 6019 + "node": ">=0.10.0" 6020 + } 6021 + }, 6022 + "node_modules/execa/node_modules/shebang-regex": { 6023 + "version": "1.0.0", 6024 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 6025 + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", 6026 + "engines": { 6027 + "node": ">=0.10.0" 6028 + } 6029 + }, 6030 + "node_modules/execa/node_modules/signal-exit": { 6031 + "version": "3.0.7", 6032 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 6033 + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 6034 + }, 6035 + "node_modules/execa/node_modules/which": { 6036 + "version": "1.3.1", 6037 + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 6038 + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 6039 + "dependencies": { 6040 + "isexe": "^2.0.0" 6041 + }, 6042 + "bin": { 6043 + "which": "bin/which" 6044 + } 6045 + }, 6046 + "node_modules/execa/node_modules/yallist": { 6047 + "version": "2.1.2", 6048 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 6049 + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" 6050 + }, 6051 + "node_modules/executable": { 6052 + "version": "4.1.1", 6053 + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", 6054 + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", 6055 + "dependencies": { 6056 + "pify": "^2.2.0" 6057 + }, 6058 + "engines": { 6059 + "node": ">=4" 6060 + } 6061 + }, 5082 6062 "node_modules/express": { 5083 6063 "version": "4.21.2", 5084 6064 "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", ··· 5145 6125 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 5146 6126 "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 5147 6127 }, 6128 + "node_modules/ext-list": { 6129 + "version": "2.2.2", 6130 + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", 6131 + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", 6132 + "dependencies": { 6133 + "mime-db": "^1.28.0" 6134 + }, 6135 + "engines": { 6136 + "node": ">=0.10.0" 6137 + } 6138 + }, 6139 + "node_modules/ext-name": { 6140 + "version": "5.0.0", 6141 + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", 6142 + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", 6143 + "dependencies": { 6144 + "ext-list": "^2.0.0", 6145 + "sort-keys-length": "^1.0.0" 6146 + }, 6147 + "engines": { 6148 + "node": ">=4" 6149 + } 6150 + }, 5148 6151 "node_modules/fast-deep-equal": { 5149 6152 "version": "3.1.3", 5150 6153 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 5151 6154 "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 5152 6155 "dev": true 5153 6156 }, 6157 + "node_modules/fast-equals": { 6158 + "version": "5.0.1", 6159 + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", 6160 + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", 6161 + "engines": { 6162 + "node": ">=6.0.0" 6163 + } 6164 + }, 5154 6165 "node_modules/fast-glob": { 5155 6166 "version": "3.3.2", 5156 6167 "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", ··· 5205 6216 "reusify": "^1.0.4" 5206 6217 } 5207 6218 }, 6219 + "node_modules/fd-slicer": { 6220 + "version": "1.1.0", 6221 + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 6222 + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 6223 + "dependencies": { 6224 + "pend": "~1.2.0" 6225 + } 6226 + }, 5208 6227 "node_modules/fdir": { 5209 6228 "version": "6.4.2", 5210 6229 "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", ··· 5257 6276 "node": ">=16.0.0" 5258 6277 } 5259 6278 }, 6279 + "node_modules/file-type": { 6280 + "version": "19.6.0", 6281 + "resolved": "https://registry.npmjs.org/file-type/-/file-type-19.6.0.tgz", 6282 + "integrity": "sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==", 6283 + "dependencies": { 6284 + "get-stream": "^9.0.1", 6285 + "strtok3": "^9.0.1", 6286 + "token-types": "^6.0.0", 6287 + "uint8array-extras": "^1.3.0" 6288 + }, 6289 + "engines": { 6290 + "node": ">=18" 6291 + }, 6292 + "funding": { 6293 + "url": "https://github.com/sindresorhus/file-type?sponsor=1" 6294 + } 6295 + }, 5260 6296 "node_modules/file-uri-to-path": { 5261 6297 "version": "1.0.0", 5262 6298 "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", ··· 5292 6328 "node": ">=10" 5293 6329 } 5294 6330 }, 6331 + "node_modules/filename-reserved-regex": { 6332 + "version": "2.0.0", 6333 + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", 6334 + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", 6335 + "engines": { 6336 + "node": ">=4" 6337 + } 6338 + }, 6339 + "node_modules/filenamify": { 6340 + "version": "2.1.0", 6341 + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", 6342 + "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", 6343 + "dependencies": { 6344 + "filename-reserved-regex": "^2.0.0", 6345 + "strip-outer": "^1.0.0", 6346 + "trim-repeated": "^1.0.0" 6347 + }, 6348 + "engines": { 6349 + "node": ">=4" 6350 + } 6351 + }, 5295 6352 "node_modules/fill-range": { 5296 6353 "version": "7.1.1", 5297 6354 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", ··· 5349 6406 "url": "https://github.com/sponsors/sindresorhus" 5350 6407 } 5351 6408 }, 6409 + "node_modules/find-versions": { 6410 + "version": "3.2.0", 6411 + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", 6412 + "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", 6413 + "dependencies": { 6414 + "semver-regex": "^2.0.0" 6415 + }, 6416 + "engines": { 6417 + "node": ">=6" 6418 + } 6419 + }, 5352 6420 "node_modules/flat-cache": { 5353 6421 "version": "4.0.1", 5354 6422 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", ··· 5432 6500 "node": ">= 0.6" 5433 6501 } 5434 6502 }, 6503 + "node_modules/from2": { 6504 + "version": "2.3.0", 6505 + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", 6506 + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", 6507 + "dependencies": { 6508 + "inherits": "^2.0.1", 6509 + "readable-stream": "^2.0.0" 6510 + } 6511 + }, 6512 + "node_modules/from2/node_modules/readable-stream": { 6513 + "version": "2.3.8", 6514 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 6515 + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 6516 + "dependencies": { 6517 + "core-util-is": "~1.0.0", 6518 + "inherits": "~2.0.3", 6519 + "isarray": "~1.0.0", 6520 + "process-nextick-args": "~2.0.0", 6521 + "safe-buffer": "~5.1.1", 6522 + "string_decoder": "~1.1.1", 6523 + "util-deprecate": "~1.0.1" 6524 + } 6525 + }, 6526 + "node_modules/from2/node_modules/safe-buffer": { 6527 + "version": "5.1.2", 6528 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 6529 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 6530 + }, 6531 + "node_modules/from2/node_modules/string_decoder": { 6532 + "version": "1.1.1", 6533 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 6534 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 6535 + "dependencies": { 6536 + "safe-buffer": "~5.1.0" 6537 + } 6538 + }, 6539 + "node_modules/fs-constants": { 6540 + "version": "1.0.0", 6541 + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 6542 + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 6543 + }, 5435 6544 "node_modules/fs.realpath": { 5436 6545 "version": "1.0.0", 5437 6546 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", ··· 5458 6567 "url": "https://github.com/sponsors/ljharb" 5459 6568 } 5460 6569 }, 6570 + "node_modules/function-timeout": { 6571 + "version": "1.0.2", 6572 + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", 6573 + "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", 6574 + "engines": { 6575 + "node": ">=18" 6576 + }, 6577 + "funding": { 6578 + "url": "https://github.com/sponsors/sindresorhus" 6579 + } 6580 + }, 5461 6581 "node_modules/get-caller-file": { 5462 6582 "version": "2.0.5", 5463 6583 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", ··· 5490 6610 "url": "https://github.com/sponsors/ljharb" 5491 6611 } 5492 6612 }, 6613 + "node_modules/get-proxy": { 6614 + "version": "2.1.0", 6615 + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", 6616 + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", 6617 + "dependencies": { 6618 + "npm-conf": "^1.1.0" 6619 + }, 6620 + "engines": { 6621 + "node": ">=4" 6622 + } 6623 + }, 6624 + "node_modules/get-stream": { 6625 + "version": "9.0.1", 6626 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", 6627 + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", 6628 + "dependencies": { 6629 + "@sec-ant/readable-stream": "^0.4.1", 6630 + "is-stream": "^4.0.1" 6631 + }, 6632 + "engines": { 6633 + "node": ">=18" 6634 + }, 6635 + "funding": { 6636 + "url": "https://github.com/sponsors/sindresorhus" 6637 + } 6638 + }, 5493 6639 "node_modules/get-tsconfig": { 5494 6640 "version": "4.8.1", 5495 6641 "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", ··· 5551 6697 "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", 5552 6698 "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" 5553 6699 }, 6700 + "node_modules/globby": { 6701 + "version": "14.0.2", 6702 + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", 6703 + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", 6704 + "dependencies": { 6705 + "@sindresorhus/merge-streams": "^2.1.0", 6706 + "fast-glob": "^3.3.2", 6707 + "ignore": "^5.2.4", 6708 + "path-type": "^5.0.0", 6709 + "slash": "^5.1.0", 6710 + "unicorn-magic": "^0.1.0" 6711 + }, 6712 + "engines": { 6713 + "node": ">=18" 6714 + }, 6715 + "funding": { 6716 + "url": "https://github.com/sponsors/sindresorhus" 6717 + } 6718 + }, 5554 6719 "node_modules/globrex": { 5555 6720 "version": "0.1.2", 5556 6721 "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", ··· 5567 6732 "url": "https://github.com/sponsors/ljharb" 5568 6733 } 5569 6734 }, 6735 + "node_modules/got": { 6736 + "version": "7.1.0", 6737 + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", 6738 + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", 6739 + "dependencies": { 6740 + "decompress-response": "^3.2.0", 6741 + "duplexer3": "^0.1.4", 6742 + "get-stream": "^3.0.0", 6743 + "is-plain-obj": "^1.1.0", 6744 + "is-retry-allowed": "^1.0.0", 6745 + "is-stream": "^1.0.0", 6746 + "isurl": "^1.0.0-alpha5", 6747 + "lowercase-keys": "^1.0.0", 6748 + "p-cancelable": "^0.3.0", 6749 + "p-timeout": "^1.1.1", 6750 + "safe-buffer": "^5.0.1", 6751 + "timed-out": "^4.0.0", 6752 + "url-parse-lax": "^1.0.0", 6753 + "url-to-options": "^1.0.1" 6754 + }, 6755 + "engines": { 6756 + "node": ">=4" 6757 + } 6758 + }, 6759 + "node_modules/got/node_modules/get-stream": { 6760 + "version": "3.0.0", 6761 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 6762 + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", 6763 + "engines": { 6764 + "node": ">=4" 6765 + } 6766 + }, 6767 + "node_modules/got/node_modules/is-stream": { 6768 + "version": "1.1.0", 6769 + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 6770 + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", 6771 + "engines": { 6772 + "node": ">=0.10.0" 6773 + } 6774 + }, 5570 6775 "node_modules/graceful-fs": { 5571 6776 "version": "4.2.11", 5572 6777 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", ··· 5596 6801 "url": "https://github.com/sponsors/ljharb" 5597 6802 } 5598 6803 }, 6804 + "node_modules/has-symbol-support-x": { 6805 + "version": "1.4.2", 6806 + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", 6807 + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", 6808 + "engines": { 6809 + "node": "*" 6810 + } 6811 + }, 5599 6812 "node_modules/has-symbols": { 5600 6813 "version": "1.1.0", 5601 6814 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", ··· 5607 6820 "url": "https://github.com/sponsors/ljharb" 5608 6821 } 5609 6822 }, 6823 + "node_modules/has-to-string-tag-x": { 6824 + "version": "1.4.1", 6825 + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", 6826 + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", 6827 + "dependencies": { 6828 + "has-symbol-support-x": "^1.4.1" 6829 + }, 6830 + "engines": { 6831 + "node": "*" 6832 + } 6833 + }, 5610 6834 "node_modules/hasown": { 5611 6835 "version": "2.0.2", 5612 6836 "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", ··· 5629 6853 "url": "https://github.com/sponsors/sindresorhus" 5630 6854 } 5631 6855 }, 6856 + "node_modules/http-cache-semantics": { 6857 + "version": "3.8.1", 6858 + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", 6859 + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" 6860 + }, 5632 6861 "node_modules/http-errors": { 5633 6862 "version": "2.0.0", 5634 6863 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", ··· 5667 6896 "node": ">=0.10.0" 5668 6897 } 5669 6898 }, 6899 + "node_modules/identifier-regex": { 6900 + "version": "1.0.0", 6901 + "resolved": "https://registry.npmjs.org/identifier-regex/-/identifier-regex-1.0.0.tgz", 6902 + "integrity": "sha512-Rcy5cjBOM9iTR+Vwy0Llyip9u0cA99T1yiWOhDW/+PDaTQhyski0tMovsipQ/FRNDkudjLWusJ/IMVIlG5WZnQ==", 6903 + "dependencies": { 6904 + "reserved-identifiers": "^1.0.0" 6905 + }, 6906 + "engines": { 6907 + "node": ">=18" 6908 + }, 6909 + "funding": { 6910 + "url": "https://github.com/sponsors/sindresorhus" 6911 + } 6912 + }, 5670 6913 "node_modules/ieee754": { 5671 6914 "version": "1.2.1", 5672 6915 "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", ··· 5690 6933 "version": "5.3.2", 5691 6934 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", 5692 6935 "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", 5693 - "dev": true, 5694 6936 "engines": { 5695 6937 "node": ">= 4" 5696 6938 } 5697 6939 }, 6940 + "node_modules/imagemin": { 6941 + "version": "9.0.0", 6942 + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-9.0.0.tgz", 6943 + "integrity": "sha512-oFlmioXTIrDCNYiKUVPjzUzm8M/7X74WEO6v8NFjn3ZtxjArdVJiRRdbPpq/OG4BdwaHMUz8ej9Fp4AcaDzMnA==", 6944 + "dependencies": { 6945 + "change-file-extension": "^0.1.1", 6946 + "environment": "^1.0.0", 6947 + "file-type": "^19.0.0", 6948 + "globby": "^14.0.1", 6949 + "junk": "^4.0.1", 6950 + "ow": "^2.0.0", 6951 + "p-pipe": "^4.0.0", 6952 + "slash": "^5.1.0", 6953 + "uint8array-extras": "^1.1.0" 6954 + }, 6955 + "engines": { 6956 + "node": ">=18" 6957 + }, 6958 + "funding": { 6959 + "url": "https://github.com/sponsors/sindresorhus" 6960 + } 6961 + }, 6962 + "node_modules/imagemin-webp": { 6963 + "version": "8.0.0", 6964 + "resolved": "https://registry.npmjs.org/imagemin-webp/-/imagemin-webp-8.0.0.tgz", 6965 + "integrity": "sha512-yN6kNKir6T/U3AtP3uLHrLn9XYafk2m49EbUqLCQ3GPRRLRs+4pUQxxaHz+lnTDM+LQpkSjGQaFVcSgYqvW3dQ==", 6966 + "dependencies": { 6967 + "cwebp-bin": "^8.0.0", 6968 + "exec-buffer": "^3.2.0", 6969 + "is-cwebp-readable": "^3.0.0" 6970 + }, 6971 + "engines": { 6972 + "node": ">=14.16" 6973 + } 6974 + }, 5698 6975 "node_modules/import-fresh": { 5699 6976 "version": "3.3.0", 5700 6977 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", ··· 5720 6997 "node": ">=4" 5721 6998 } 5722 6999 }, 7000 + "node_modules/import-lazy": { 7001 + "version": "3.1.0", 7002 + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", 7003 + "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", 7004 + "engines": { 7005 + "node": ">=6" 7006 + } 7007 + }, 5723 7008 "node_modules/import-meta-resolve": { 5724 7009 "version": "4.1.0", 5725 7010 "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", ··· 5753 7038 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 5754 7039 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 5755 7040 }, 7041 + "node_modules/ini": { 7042 + "version": "1.3.8", 7043 + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 7044 + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" 7045 + }, 7046 + "node_modules/into-stream": { 7047 + "version": "3.1.0", 7048 + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", 7049 + "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==", 7050 + "dependencies": { 7051 + "from2": "^2.1.1", 7052 + "p-is-promise": "^1.1.0" 7053 + }, 7054 + "engines": { 7055 + "node": ">=4" 7056 + } 7057 + }, 5756 7058 "node_modules/ipaddr.js": { 5757 7059 "version": "2.2.0", 5758 7060 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", ··· 5787 7089 "url": "https://github.com/sponsors/ljharb" 5788 7090 } 5789 7091 }, 7092 + "node_modules/is-cwebp-readable": { 7093 + "version": "3.0.0", 7094 + "resolved": "https://registry.npmjs.org/is-cwebp-readable/-/is-cwebp-readable-3.0.0.tgz", 7095 + "integrity": "sha512-bpELc7/Q1/U5MWHn4NdHI44R3jxk0h9ew9ljzabiRl70/UIjL/ZAqRMb52F5+eke/VC8yTiv4Ewryo1fPWidvA==", 7096 + "dependencies": { 7097 + "file-type": "^10.5.0" 7098 + } 7099 + }, 7100 + "node_modules/is-cwebp-readable/node_modules/file-type": { 7101 + "version": "10.11.0", 7102 + "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", 7103 + "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", 7104 + "engines": { 7105 + "node": ">=6" 7106 + } 7107 + }, 5790 7108 "node_modules/is-extglob": { 5791 7109 "version": "2.1.1", 5792 7110 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", ··· 5814 7132 "node": ">=0.10.0" 5815 7133 } 5816 7134 }, 7135 + "node_modules/is-identifier": { 7136 + "version": "1.0.1", 7137 + "resolved": "https://registry.npmjs.org/is-identifier/-/is-identifier-1.0.1.tgz", 7138 + "integrity": "sha512-HQ5v4rEJ7REUV54bCd2l5FaD299SGDEn2UPoVXaTHAyGviLq2menVUD2udi3trQ32uvB6LdAh/0ck2EuizrtpA==", 7139 + "dependencies": { 7140 + "identifier-regex": "^1.0.0", 7141 + "super-regex": "^1.0.0" 7142 + }, 7143 + "engines": { 7144 + "node": ">=18" 7145 + }, 7146 + "funding": { 7147 + "url": "https://github.com/sponsors/sindresorhus" 7148 + } 7149 + }, 5817 7150 "node_modules/is-module": { 5818 7151 "version": "1.0.0", 5819 7152 "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 5820 7153 "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" 5821 7154 }, 7155 + "node_modules/is-natural-number": { 7156 + "version": "4.0.1", 7157 + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", 7158 + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" 7159 + }, 5822 7160 "node_modules/is-number": { 5823 7161 "version": "7.0.0", 5824 7162 "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", ··· 5827 7165 "node": ">=0.12.0" 5828 7166 } 5829 7167 }, 7168 + "node_modules/is-object": { 7169 + "version": "1.0.2", 7170 + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", 7171 + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", 7172 + "funding": { 7173 + "url": "https://github.com/sponsors/ljharb" 7174 + } 7175 + }, 7176 + "node_modules/is-plain-obj": { 7177 + "version": "1.1.0", 7178 + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 7179 + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", 7180 + "engines": { 7181 + "node": ">=0.10.0" 7182 + } 7183 + }, 5830 7184 "node_modules/is-reference": { 5831 7185 "version": "3.0.3", 5832 7186 "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", ··· 5835 7189 "@types/estree": "^1.0.6" 5836 7190 } 5837 7191 }, 7192 + "node_modules/is-retry-allowed": { 7193 + "version": "1.2.0", 7194 + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", 7195 + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", 7196 + "engines": { 7197 + "node": ">=0.10.0" 7198 + } 7199 + }, 7200 + "node_modules/is-stream": { 7201 + "version": "4.0.1", 7202 + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", 7203 + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", 7204 + "engines": { 7205 + "node": ">=18" 7206 + }, 7207 + "funding": { 7208 + "url": "https://github.com/sponsors/sindresorhus" 7209 + } 7210 + }, 7211 + "node_modules/isarray": { 7212 + "version": "1.0.0", 7213 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 7214 + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" 7215 + }, 5838 7216 "node_modules/isexe": { 5839 7217 "version": "2.0.0", 5840 7218 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", ··· 5844 7222 "version": "2.2.2", 5845 7223 "resolved": "https://registry.npmjs.org/iso-datestring-validator/-/iso-datestring-validator-2.2.2.tgz", 5846 7224 "integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==" 7225 + }, 7226 + "node_modules/isurl": { 7227 + "version": "1.0.0", 7228 + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", 7229 + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", 7230 + "dependencies": { 7231 + "has-to-string-tag-x": "^1.2.0", 7232 + "is-object": "^1.0.1" 7233 + }, 7234 + "engines": { 7235 + "node": ">= 4" 7236 + } 5847 7237 }, 5848 7238 "node_modules/jackspeak": { 5849 7239 "version": "3.4.3", ··· 5928 7318 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 5929 7319 "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 5930 7320 "dev": true 7321 + }, 7322 + "node_modules/junk": { 7323 + "version": "4.0.1", 7324 + "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", 7325 + "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", 7326 + "engines": { 7327 + "node": ">=12.20" 7328 + }, 7329 + "funding": { 7330 + "url": "https://github.com/sponsors/sindresorhus" 7331 + } 5931 7332 }, 5932 7333 "node_modules/keyv": { 5933 7334 "version": "4.5.4", ··· 6076 7477 "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 6077 7478 "dev": true 6078 7479 }, 7480 + "node_modules/lowercase-keys": { 7481 + "version": "1.0.1", 7482 + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 7483 + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", 7484 + "engines": { 7485 + "node": ">=0.10.0" 7486 + } 7487 + }, 6079 7488 "node_modules/lru-cache": { 6080 7489 "version": "10.4.3", 6081 7490 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", ··· 6089 7498 "@jridgewell/sourcemap-codec": "^1.5.0" 6090 7499 } 6091 7500 }, 7501 + "node_modules/make-dir": { 7502 + "version": "1.3.0", 7503 + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", 7504 + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", 7505 + "dependencies": { 7506 + "pify": "^3.0.0" 7507 + }, 7508 + "engines": { 7509 + "node": ">=4" 7510 + } 7511 + }, 7512 + "node_modules/make-dir/node_modules/pify": { 7513 + "version": "3.0.0", 7514 + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 7515 + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", 7516 + "engines": { 7517 + "node": ">=4" 7518 + } 7519 + }, 6092 7520 "node_modules/math-intrinsics": { 6093 7521 "version": "1.0.0", 6094 7522 "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.0.0.tgz", ··· 6180 7608 }, 6181 7609 "engines": { 6182 7610 "node": ">= 0.6" 7611 + } 7612 + }, 7613 + "node_modules/mimic-response": { 7614 + "version": "1.0.1", 7615 + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 7616 + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 7617 + "engines": { 7618 + "node": ">=4" 6183 7619 } 6184 7620 }, 6185 7621 "node_modules/mini-svg-data-uri": { ··· 6304 7740 "node": ">= 0.6" 6305 7741 } 6306 7742 }, 7743 + "node_modules/nice-try": { 7744 + "version": "1.0.5", 7745 + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 7746 + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" 7747 + }, 6307 7748 "node_modules/node-domexception": { 6308 7749 "version": "1.0.0", 6309 7750 "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", ··· 6401 7842 "node": ">=0.10.0" 6402 7843 } 6403 7844 }, 7845 + "node_modules/normalize-url": { 7846 + "version": "2.0.1", 7847 + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", 7848 + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", 7849 + "dependencies": { 7850 + "prepend-http": "^2.0.0", 7851 + "query-string": "^5.0.1", 7852 + "sort-keys": "^2.0.0" 7853 + }, 7854 + "engines": { 7855 + "node": ">=4" 7856 + } 7857 + }, 7858 + "node_modules/normalize-url/node_modules/prepend-http": { 7859 + "version": "2.0.0", 7860 + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", 7861 + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", 7862 + "engines": { 7863 + "node": ">=4" 7864 + } 7865 + }, 7866 + "node_modules/normalize-url/node_modules/sort-keys": { 7867 + "version": "2.0.0", 7868 + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", 7869 + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", 7870 + "dependencies": { 7871 + "is-plain-obj": "^1.0.0" 7872 + }, 7873 + "engines": { 7874 + "node": ">=4" 7875 + } 7876 + }, 7877 + "node_modules/npm-conf": { 7878 + "version": "1.1.3", 7879 + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", 7880 + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", 7881 + "dependencies": { 7882 + "config-chain": "^1.1.11", 7883 + "pify": "^3.0.0" 7884 + }, 7885 + "engines": { 7886 + "node": ">=4" 7887 + } 7888 + }, 7889 + "node_modules/npm-conf/node_modules/pify": { 7890 + "version": "3.0.0", 7891 + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 7892 + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", 7893 + "engines": { 7894 + "node": ">=4" 7895 + } 7896 + }, 7897 + "node_modules/npm-run-path": { 7898 + "version": "2.0.2", 7899 + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 7900 + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", 7901 + "dependencies": { 7902 + "path-key": "^2.0.0" 7903 + }, 7904 + "engines": { 7905 + "node": ">=4" 7906 + } 7907 + }, 7908 + "node_modules/npm-run-path/node_modules/path-key": { 7909 + "version": "2.0.1", 7910 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 7911 + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", 7912 + "engines": { 7913 + "node": ">=4" 7914 + } 7915 + }, 6404 7916 "node_modules/object-assign": { 6405 7917 "version": "4.1.1", 6406 7918 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 6407 7919 "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 6408 - "dev": true, 6409 7920 "engines": { 6410 7921 "node": ">=0.10.0" 6411 7922 } ··· 6474 7985 "node": ">= 0.8.0" 6475 7986 } 6476 7987 }, 7988 + "node_modules/os-filter-obj": { 7989 + "version": "2.0.0", 7990 + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", 7991 + "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", 7992 + "dependencies": { 7993 + "arch": "^2.1.0" 7994 + }, 7995 + "engines": { 7996 + "node": ">=4" 7997 + } 7998 + }, 7999 + "node_modules/ow": { 8000 + "version": "2.0.0", 8001 + "resolved": "https://registry.npmjs.org/ow/-/ow-2.0.0.tgz", 8002 + "integrity": "sha512-ESUigmGrdhUZ2nQSFNkeKSl6ZRPupXzprMs3yF9DYlNVpJ8XAjM/fI9RUZxA7PI1K9HQDCCvBo1jr/GEIo9joQ==", 8003 + "dependencies": { 8004 + "@sindresorhus/is": "^6.3.0", 8005 + "callsites": "^4.1.0", 8006 + "dot-prop": "^8.0.2", 8007 + "environment": "^1.0.0", 8008 + "fast-equals": "^5.0.1", 8009 + "is-identifier": "^1.0.0" 8010 + }, 8011 + "engines": { 8012 + "node": ">=18" 8013 + }, 8014 + "funding": { 8015 + "url": "https://github.com/sponsors/sindresorhus" 8016 + } 8017 + }, 8018 + "node_modules/ow/node_modules/callsites": { 8019 + "version": "4.2.0", 8020 + "resolved": "https://registry.npmjs.org/callsites/-/callsites-4.2.0.tgz", 8021 + "integrity": "sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ==", 8022 + "engines": { 8023 + "node": ">=12.20" 8024 + }, 8025 + "funding": { 8026 + "url": "https://github.com/sponsors/sindresorhus" 8027 + } 8028 + }, 8029 + "node_modules/p-cancelable": { 8030 + "version": "0.3.0", 8031 + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", 8032 + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", 8033 + "engines": { 8034 + "node": ">=4" 8035 + } 8036 + }, 8037 + "node_modules/p-event": { 8038 + "version": "1.3.0", 8039 + "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", 8040 + "integrity": "sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==", 8041 + "dependencies": { 8042 + "p-timeout": "^1.1.1" 8043 + }, 8044 + "engines": { 8045 + "node": ">=4" 8046 + } 8047 + }, 8048 + "node_modules/p-finally": { 8049 + "version": "1.0.0", 8050 + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 8051 + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", 8052 + "engines": { 8053 + "node": ">=4" 8054 + } 8055 + }, 8056 + "node_modules/p-is-promise": { 8057 + "version": "1.1.0", 8058 + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", 8059 + "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==", 8060 + "engines": { 8061 + "node": ">=4" 8062 + } 8063 + }, 6477 8064 "node_modules/p-limit": { 6478 8065 "version": "3.1.0", 6479 8066 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", ··· 6504 8091 "url": "https://github.com/sponsors/sindresorhus" 6505 8092 } 6506 8093 }, 8094 + "node_modules/p-map-series": { 8095 + "version": "1.0.0", 8096 + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", 8097 + "integrity": "sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==", 8098 + "dependencies": { 8099 + "p-reduce": "^1.0.0" 8100 + }, 8101 + "engines": { 8102 + "node": ">=4" 8103 + } 8104 + }, 8105 + "node_modules/p-pipe": { 8106 + "version": "4.0.0", 8107 + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-4.0.0.tgz", 8108 + "integrity": "sha512-HkPfFklpZQPUKBFXzKFB6ihLriIHxnmuQdK9WmLDwe4hf2PdhhfWT/FJa+pc3bA1ywvKXtedxIRmd4Y7BTXE4w==", 8109 + "engines": { 8110 + "node": ">=12" 8111 + }, 8112 + "funding": { 8113 + "url": "https://github.com/sponsors/sindresorhus" 8114 + } 8115 + }, 8116 + "node_modules/p-reduce": { 8117 + "version": "1.0.0", 8118 + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", 8119 + "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==", 8120 + "engines": { 8121 + "node": ">=4" 8122 + } 8123 + }, 8124 + "node_modules/p-timeout": { 8125 + "version": "1.2.1", 8126 + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", 8127 + "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", 8128 + "dependencies": { 8129 + "p-finally": "^1.0.0" 8130 + }, 8131 + "engines": { 8132 + "node": ">=4" 8133 + } 8134 + }, 6507 8135 "node_modules/package-json-from-dist": { 6508 8136 "version": "1.0.1", 6509 8137 "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", ··· 6598 8226 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", 6599 8227 "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" 6600 8228 }, 8229 + "node_modules/path-type": { 8230 + "version": "5.0.0", 8231 + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", 8232 + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", 8233 + "engines": { 8234 + "node": ">=12" 8235 + }, 8236 + "funding": { 8237 + "url": "https://github.com/sponsors/sindresorhus" 8238 + } 8239 + }, 8240 + "node_modules/peek-readable": { 8241 + "version": "5.3.1", 8242 + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.3.1.tgz", 8243 + "integrity": "sha512-GVlENSDW6KHaXcd9zkZltB7tCLosKB/4Hg0fqBJkAoBgYG2Tn1xtMgXtSUuMU9AK/gCm/tTdT8mgAeF4YNeeqw==", 8244 + "engines": { 8245 + "node": ">=14.16" 8246 + }, 8247 + "funding": { 8248 + "type": "github", 8249 + "url": "https://github.com/sponsors/Borewit" 8250 + } 8251 + }, 8252 + "node_modules/pend": { 8253 + "version": "1.2.0", 8254 + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 8255 + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" 8256 + }, 6601 8257 "node_modules/picocolors": { 6602 8258 "version": "1.1.1", 6603 8259 "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", ··· 6618 8274 "version": "2.3.0", 6619 8275 "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 6620 8276 "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 6621 - "dev": true, 8277 + "engines": { 8278 + "node": ">=0.10.0" 8279 + } 8280 + }, 8281 + "node_modules/pinkie": { 8282 + "version": "2.0.4", 8283 + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 8284 + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", 8285 + "engines": { 8286 + "node": ">=0.10.0" 8287 + } 8288 + }, 8289 + "node_modules/pinkie-promise": { 8290 + "version": "2.0.1", 8291 + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 8292 + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", 8293 + "dependencies": { 8294 + "pinkie": "^2.0.0" 8295 + }, 6622 8296 "engines": { 6623 8297 "node": ">=0.10.0" 6624 8298 } ··· 6878 8552 "node": ">= 0.8.0" 6879 8553 } 6880 8554 }, 8555 + "node_modules/prepend-http": { 8556 + "version": "1.0.4", 8557 + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", 8558 + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", 8559 + "engines": { 8560 + "node": ">=0.10.0" 8561 + } 8562 + }, 6881 8563 "node_modules/prettier": { 6882 8564 "version": "3.4.2", 6883 8565 "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", ··· 6988 8670 "node": ">= 0.6.0" 6989 8671 } 6990 8672 }, 8673 + "node_modules/process-nextick-args": { 8674 + "version": "2.0.1", 8675 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 8676 + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 8677 + }, 6991 8678 "node_modules/process-warning": { 6992 8679 "version": "3.0.0", 6993 8680 "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", ··· 6998 8685 "resolved": "https://registry.npmjs.org/promise-limit/-/promise-limit-2.7.0.tgz", 6999 8686 "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==" 7000 8687 }, 8688 + "node_modules/proto-list": { 8689 + "version": "1.2.4", 8690 + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", 8691 + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" 8692 + }, 7001 8693 "node_modules/proxy-addr": { 7002 8694 "version": "2.0.7", 7003 8695 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", ··· 7018 8710 "node": ">= 0.10" 7019 8711 } 7020 8712 }, 8713 + "node_modules/pseudomap": { 8714 + "version": "1.0.2", 8715 + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 8716 + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" 8717 + }, 7021 8718 "node_modules/psl": { 7022 8719 "version": "1.15.0", 7023 8720 "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", ··· 7027 8724 }, 7028 8725 "funding": { 7029 8726 "url": "https://github.com/sponsors/lupomontero" 8727 + } 8728 + }, 8729 + "node_modules/pump": { 8730 + "version": "3.0.2", 8731 + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", 8732 + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", 8733 + "dependencies": { 8734 + "end-of-stream": "^1.1.0", 8735 + "once": "^1.3.1" 7030 8736 } 7031 8737 }, 7032 8738 "node_modules/punycode": { ··· 7051 8757 "url": "https://github.com/sponsors/ljharb" 7052 8758 } 7053 8759 }, 8760 + "node_modules/query-string": { 8761 + "version": "5.1.1", 8762 + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", 8763 + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", 8764 + "dependencies": { 8765 + "decode-uri-component": "^0.2.0", 8766 + "object-assign": "^4.1.0", 8767 + "strict-uri-encode": "^1.0.0" 8768 + }, 8769 + "engines": { 8770 + "node": ">=0.10.0" 8771 + } 8772 + }, 7054 8773 "node_modules/queue-microtask": { 7055 8774 "version": "1.2.3", 7056 8775 "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", ··· 7161 8880 "node": ">=0.10.0" 7162 8881 } 7163 8882 }, 8883 + "node_modules/reserved-identifiers": { 8884 + "version": "1.0.0", 8885 + "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.0.0.tgz", 8886 + "integrity": "sha512-h0bP2Katmvf3hv4Z3WtDl4+6xt/OglQ2Xa6TnhZ/Rm9/7IH1crXQqMwD4J2ngKBonVv+fB55zfGgNDAmsevLVQ==", 8887 + "engines": { 8888 + "node": ">=18" 8889 + }, 8890 + "funding": { 8891 + "url": "https://github.com/sponsors/sindresorhus" 8892 + } 8893 + }, 7164 8894 "node_modules/resolve": { 7165 8895 "version": "1.22.8", 7166 8896 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", ··· 7192 8922 "dev": true, 7193 8923 "funding": { 7194 8924 "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" 8925 + } 8926 + }, 8927 + "node_modules/responselike": { 8928 + "version": "1.0.2", 8929 + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", 8930 + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", 8931 + "dependencies": { 8932 + "lowercase-keys": "^1.0.0" 7195 8933 } 7196 8934 }, 7197 8935 "node_modules/reusify": { ··· 7385 9123 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", 7386 9124 "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" 7387 9125 }, 9126 + "node_modules/seek-bzip": { 9127 + "version": "1.0.6", 9128 + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", 9129 + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", 9130 + "dependencies": { 9131 + "commander": "^2.8.1" 9132 + }, 9133 + "bin": { 9134 + "seek-bunzip": "bin/seek-bunzip", 9135 + "seek-table": "bin/seek-bzip-table" 9136 + } 9137 + }, 9138 + "node_modules/seek-bzip/node_modules/commander": { 9139 + "version": "2.20.3", 9140 + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 9141 + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 9142 + }, 7388 9143 "node_modules/semver": { 7389 9144 "version": "7.6.3", 7390 9145 "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", ··· 7394 9149 }, 7395 9150 "engines": { 7396 9151 "node": ">=10" 9152 + } 9153 + }, 9154 + "node_modules/semver-regex": { 9155 + "version": "2.0.0", 9156 + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", 9157 + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", 9158 + "engines": { 9159 + "node": ">=6" 9160 + } 9161 + }, 9162 + "node_modules/semver-truncate": { 9163 + "version": "1.1.2", 9164 + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", 9165 + "integrity": "sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==", 9166 + "dependencies": { 9167 + "semver": "^5.3.0" 9168 + }, 9169 + "engines": { 9170 + "node": ">=0.10.0" 9171 + } 9172 + }, 9173 + "node_modules/semver-truncate/node_modules/semver": { 9174 + "version": "5.7.2", 9175 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", 9176 + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 9177 + "bin": { 9178 + "semver": "bin/semver" 7397 9179 } 7398 9180 }, 7399 9181 "node_modules/send": { ··· 7603 9385 "node": ">=18" 7604 9386 } 7605 9387 }, 9388 + "node_modules/slash": { 9389 + "version": "5.1.0", 9390 + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", 9391 + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", 9392 + "engines": { 9393 + "node": ">=14.16" 9394 + }, 9395 + "funding": { 9396 + "url": "https://github.com/sponsors/sindresorhus" 9397 + } 9398 + }, 7606 9399 "node_modules/sonic-boom": { 7607 9400 "version": "3.8.1", 7608 9401 "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz", ··· 7611 9404 "atomic-sleep": "^1.0.0" 7612 9405 } 7613 9406 }, 9407 + "node_modules/sort-keys": { 9408 + "version": "1.1.2", 9409 + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", 9410 + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", 9411 + "dependencies": { 9412 + "is-plain-obj": "^1.0.0" 9413 + }, 9414 + "engines": { 9415 + "node": ">=0.10.0" 9416 + } 9417 + }, 9418 + "node_modules/sort-keys-length": { 9419 + "version": "1.0.1", 9420 + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", 9421 + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", 9422 + "dependencies": { 9423 + "sort-keys": "^1.0.0" 9424 + }, 9425 + "engines": { 9426 + "node": ">=0.10.0" 9427 + } 9428 + }, 7614 9429 "node_modules/source-map": { 7615 9430 "version": "0.6.1", 7616 9431 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", ··· 7652 9467 "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 7653 9468 "engines": { 7654 9469 "node": ">= 0.8" 9470 + } 9471 + }, 9472 + "node_modules/strict-uri-encode": { 9473 + "version": "1.1.0", 9474 + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", 9475 + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", 9476 + "engines": { 9477 + "node": ">=0.10.0" 7655 9478 } 7656 9479 }, 7657 9480 "node_modules/string_decoder": { ··· 7755 9578 "node": ">=8" 7756 9579 } 7757 9580 }, 9581 + "node_modules/strip-dirs": { 9582 + "version": "2.1.0", 9583 + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", 9584 + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", 9585 + "dependencies": { 9586 + "is-natural-number": "^4.0.1" 9587 + } 9588 + }, 9589 + "node_modules/strip-eof": { 9590 + "version": "1.0.0", 9591 + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 9592 + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", 9593 + "engines": { 9594 + "node": ">=0.10.0" 9595 + } 9596 + }, 7758 9597 "node_modules/strip-json-comments": { 7759 9598 "version": "3.1.1", 7760 9599 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", ··· 7767 9606 "url": "https://github.com/sponsors/sindresorhus" 7768 9607 } 7769 9608 }, 9609 + "node_modules/strip-outer": { 9610 + "version": "1.0.1", 9611 + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", 9612 + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", 9613 + "dependencies": { 9614 + "escape-string-regexp": "^1.0.2" 9615 + }, 9616 + "engines": { 9617 + "node": ">=0.10.0" 9618 + } 9619 + }, 9620 + "node_modules/strip-outer/node_modules/escape-string-regexp": { 9621 + "version": "1.0.5", 9622 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 9623 + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 9624 + "engines": { 9625 + "node": ">=0.8.0" 9626 + } 9627 + }, 9628 + "node_modules/strtok3": { 9629 + "version": "9.1.1", 9630 + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-9.1.1.tgz", 9631 + "integrity": "sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==", 9632 + "dependencies": { 9633 + "@tokenizer/token": "^0.3.0", 9634 + "peek-readable": "^5.3.1" 9635 + }, 9636 + "engines": { 9637 + "node": ">=16" 9638 + }, 9639 + "funding": { 9640 + "type": "github", 9641 + "url": "https://github.com/sponsors/Borewit" 9642 + } 9643 + }, 7770 9644 "node_modules/sucrase": { 7771 9645 "version": "3.35.0", 7772 9646 "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", ··· 7833 9707 "url": "https://github.com/sponsors/isaacs" 7834 9708 } 7835 9709 }, 9710 + "node_modules/super-regex": { 9711 + "version": "1.0.0", 9712 + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", 9713 + "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", 9714 + "dependencies": { 9715 + "function-timeout": "^1.0.1", 9716 + "time-span": "^5.1.0" 9717 + }, 9718 + "engines": { 9719 + "node": ">=18" 9720 + }, 9721 + "funding": { 9722 + "url": "https://github.com/sponsors/sindresorhus" 9723 + } 9724 + }, 7836 9725 "node_modules/supports-color": { 7837 9726 "version": "7.2.0", 7838 9727 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", ··· 8181 10070 "node": ">=18" 8182 10071 } 8183 10072 }, 10073 + "node_modules/tar-stream": { 10074 + "version": "1.6.2", 10075 + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", 10076 + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", 10077 + "dependencies": { 10078 + "bl": "^1.0.0", 10079 + "buffer-alloc": "^1.2.0", 10080 + "end-of-stream": "^1.0.0", 10081 + "fs-constants": "^1.0.0", 10082 + "readable-stream": "^2.3.0", 10083 + "to-buffer": "^1.1.1", 10084 + "xtend": "^4.0.0" 10085 + }, 10086 + "engines": { 10087 + "node": ">= 0.8.0" 10088 + } 10089 + }, 10090 + "node_modules/tar-stream/node_modules/readable-stream": { 10091 + "version": "2.3.8", 10092 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 10093 + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 10094 + "dependencies": { 10095 + "core-util-is": "~1.0.0", 10096 + "inherits": "~2.0.3", 10097 + "isarray": "~1.0.0", 10098 + "process-nextick-args": "~2.0.0", 10099 + "safe-buffer": "~5.1.1", 10100 + "string_decoder": "~1.1.1", 10101 + "util-deprecate": "~1.0.1" 10102 + } 10103 + }, 10104 + "node_modules/tar-stream/node_modules/safe-buffer": { 10105 + "version": "5.1.2", 10106 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 10107 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 10108 + }, 10109 + "node_modules/tar-stream/node_modules/string_decoder": { 10110 + "version": "1.1.1", 10111 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 10112 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 10113 + "dependencies": { 10114 + "safe-buffer": "~5.1.0" 10115 + } 10116 + }, 10117 + "node_modules/temp-dir": { 10118 + "version": "1.0.0", 10119 + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", 10120 + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", 10121 + "engines": { 10122 + "node": ">=4" 10123 + } 10124 + }, 10125 + "node_modules/tempfile": { 10126 + "version": "2.0.0", 10127 + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", 10128 + "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==", 10129 + "dependencies": { 10130 + "temp-dir": "^1.0.0", 10131 + "uuid": "^3.0.1" 10132 + }, 10133 + "engines": { 10134 + "node": ">=4" 10135 + } 10136 + }, 8184 10137 "node_modules/thenify": { 8185 10138 "version": "3.3.1", 8186 10139 "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", ··· 8208 10161 "integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==", 8209 10162 "dependencies": { 8210 10163 "real-require": "^0.2.0" 10164 + } 10165 + }, 10166 + "node_modules/through": { 10167 + "version": "2.3.8", 10168 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 10169 + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 10170 + }, 10171 + "node_modules/time-span": { 10172 + "version": "5.1.0", 10173 + "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", 10174 + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", 10175 + "dependencies": { 10176 + "convert-hrtime": "^5.0.0" 10177 + }, 10178 + "engines": { 10179 + "node": ">=12" 10180 + }, 10181 + "funding": { 10182 + "url": "https://github.com/sponsors/sindresorhus" 10183 + } 10184 + }, 10185 + "node_modules/timed-out": { 10186 + "version": "4.0.1", 10187 + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", 10188 + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", 10189 + "engines": { 10190 + "node": ">=0.10.0" 8211 10191 } 8212 10192 }, 8213 10193 "node_modules/tiny-glob": { ··· 8232 10212 "tlds": "bin.js" 8233 10213 } 8234 10214 }, 10215 + "node_modules/to-buffer": { 10216 + "version": "1.1.1", 10217 + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", 10218 + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" 10219 + }, 8235 10220 "node_modules/to-regex-range": { 8236 10221 "version": "5.0.1", 8237 10222 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", ··· 8251 10236 "node": ">=0.6" 8252 10237 } 8253 10238 }, 10239 + "node_modules/token-types": { 10240 + "version": "6.0.0", 10241 + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.0.0.tgz", 10242 + "integrity": "sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==", 10243 + "dependencies": { 10244 + "@tokenizer/token": "^0.3.0", 10245 + "ieee754": "^1.2.1" 10246 + }, 10247 + "engines": { 10248 + "node": ">=14.16" 10249 + }, 10250 + "funding": { 10251 + "type": "github", 10252 + "url": "https://github.com/sponsors/Borewit" 10253 + } 10254 + }, 8254 10255 "node_modules/totalist": { 8255 10256 "version": "3.0.1", 8256 10257 "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", ··· 8264 10265 "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 8265 10266 "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 8266 10267 }, 10268 + "node_modules/trim-repeated": { 10269 + "version": "1.0.0", 10270 + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", 10271 + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", 10272 + "dependencies": { 10273 + "escape-string-regexp": "^1.0.2" 10274 + }, 10275 + "engines": { 10276 + "node": ">=0.10.0" 10277 + } 10278 + }, 10279 + "node_modules/trim-repeated/node_modules/escape-string-regexp": { 10280 + "version": "1.0.5", 10281 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 10282 + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 10283 + "engines": { 10284 + "node": ">=0.8.0" 10285 + } 10286 + }, 8267 10287 "node_modules/ts-api-utils": { 8268 10288 "version": "1.4.3", 8269 10289 "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", ··· 8297 10317 "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", 8298 10318 "devOptional": true 8299 10319 }, 10320 + "node_modules/tunnel-agent": { 10321 + "version": "0.6.0", 10322 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 10323 + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 10324 + "dependencies": { 10325 + "safe-buffer": "^5.0.1" 10326 + }, 10327 + "engines": { 10328 + "node": "*" 10329 + } 10330 + }, 8300 10331 "node_modules/type-check": { 8301 10332 "version": "0.4.0", 8302 10333 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", ··· 8309 10340 "node": ">= 0.8.0" 8310 10341 } 8311 10342 }, 10343 + "node_modules/type-fest": { 10344 + "version": "3.13.1", 10345 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", 10346 + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", 10347 + "engines": { 10348 + "node": ">=14.16" 10349 + }, 10350 + "funding": { 10351 + "url": "https://github.com/sponsors/sindresorhus" 10352 + } 10353 + }, 8312 10354 "node_modules/type-is": { 8313 10355 "version": "1.6.18", 8314 10356 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", ··· 8356 10398 "typescript": ">=4.8.4 <5.8.0" 8357 10399 } 8358 10400 }, 10401 + "node_modules/uint8array-extras": { 10402 + "version": "1.4.0", 10403 + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz", 10404 + "integrity": "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==", 10405 + "engines": { 10406 + "node": ">=18" 10407 + }, 10408 + "funding": { 10409 + "url": "https://github.com/sponsors/sindresorhus" 10410 + } 10411 + }, 8359 10412 "node_modules/uint8arrays": { 8360 10413 "version": "3.0.0", 8361 10414 "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", ··· 8364 10417 "multiformats": "^9.4.2" 8365 10418 } 8366 10419 }, 10420 + "node_modules/unbzip2-stream": { 10421 + "version": "1.4.3", 10422 + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 10423 + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 10424 + "dependencies": { 10425 + "buffer": "^5.2.1", 10426 + "through": "^2.3.8" 10427 + } 10428 + }, 10429 + "node_modules/unbzip2-stream/node_modules/buffer": { 10430 + "version": "5.7.1", 10431 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 10432 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 10433 + "funding": [ 10434 + { 10435 + "type": "github", 10436 + "url": "https://github.com/sponsors/feross" 10437 + }, 10438 + { 10439 + "type": "patreon", 10440 + "url": "https://www.patreon.com/feross" 10441 + }, 10442 + { 10443 + "type": "consulting", 10444 + "url": "https://feross.org/support" 10445 + } 10446 + ], 10447 + "dependencies": { 10448 + "base64-js": "^1.3.1", 10449 + "ieee754": "^1.1.13" 10450 + } 10451 + }, 8367 10452 "node_modules/undici": { 8368 10453 "version": "6.21.0", 8369 10454 "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", ··· 8384 10469 "dependencies": { 8385 10470 "pako": "^0.2.5", 8386 10471 "tiny-inflate": "^1.0.0" 10472 + } 10473 + }, 10474 + "node_modules/unicorn-magic": { 10475 + "version": "0.1.0", 10476 + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", 10477 + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", 10478 + "engines": { 10479 + "node": ">=18" 10480 + }, 10481 + "funding": { 10482 + "url": "https://github.com/sponsors/sindresorhus" 8387 10483 } 8388 10484 }, 8389 10485 "node_modules/unpipe": { ··· 8433 10529 "punycode": "^2.1.0" 8434 10530 } 8435 10531 }, 10532 + "node_modules/url-parse-lax": { 10533 + "version": "1.0.0", 10534 + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", 10535 + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", 10536 + "dependencies": { 10537 + "prepend-http": "^1.0.1" 10538 + }, 10539 + "engines": { 10540 + "node": ">=0.10.0" 10541 + } 10542 + }, 8436 10543 "node_modules/url-polyfill": { 8437 10544 "version": "1.1.12", 8438 10545 "resolved": "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.1.12.tgz", 8439 10546 "integrity": "sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A==" 8440 10547 }, 10548 + "node_modules/url-to-options": { 10549 + "version": "1.0.1", 10550 + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", 10551 + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", 10552 + "engines": { 10553 + "node": ">= 4" 10554 + } 10555 + }, 8441 10556 "node_modules/util-deprecate": { 8442 10557 "version": "1.0.2", 8443 10558 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 8444 - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 8445 - "dev": true 10559 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 8446 10560 }, 8447 10561 "node_modules/utils-merge": { 8448 10562 "version": "1.0.1", ··· 8450 10564 "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 8451 10565 "engines": { 8452 10566 "node": ">= 0.4.0" 10567 + } 10568 + }, 10569 + "node_modules/uuid": { 10570 + "version": "3.4.0", 10571 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 10572 + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 10573 + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", 10574 + "bin": { 10575 + "uuid": "bin/uuid" 8453 10576 } 8454 10577 }, 8455 10578 "node_modules/vary": { ··· 9064 11187 } 9065 11188 } 9066 11189 }, 11190 + "node_modules/xtend": { 11191 + "version": "4.0.2", 11192 + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 11193 + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 11194 + "engines": { 11195 + "node": ">=0.4" 11196 + } 11197 + }, 9067 11198 "node_modules/y18n": { 9068 11199 "version": "5.0.8", 9069 11200 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", ··· 9156 11287 }, 9157 11288 "engines": { 9158 11289 "node": ">=8" 11290 + } 11291 + }, 11292 + "node_modules/yauzl": { 11293 + "version": "2.10.0", 11294 + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 11295 + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 11296 + "dependencies": { 11297 + "buffer-crc32": "~0.2.3", 11298 + "fd-slicer": "~1.1.0" 9159 11299 } 9160 11300 }, 9161 11301 "node_modules/yesno": {
+4
package.json
··· 26 26 "@tailwindcss/forms": "^0.5.9", 27 27 "@tailwindcss/typography": "^0.5.15", 28 28 "@types/eslint": "^9.6.0", 29 + "@types/imagemin": "^9.0.0", 30 + "@types/imagemin-webp": "^7.0.3", 29 31 "autoprefixer": "^10.4.20", 30 32 "drizzle-kit": "^0.22.0", 31 33 "eslint": "^9.7.0", ··· 59 61 "clsx": "^2.1.1", 60 62 "dotenv": "^16.4.5", 61 63 "drizzle-orm": "^0.33.0", 64 + "imagemin": "^9.0.0", 65 + "imagemin-webp": "^8.0.0", 62 66 "plyr": "^3.7.8", 63 67 "svelte-sonner": "^0.3.28", 64 68 "tailwind-merge": "^2.5.4"
+3 -3
src/lib/Components/BaseHeadTags.svelte
··· 1 1 <svelte:head> 2 - <meta name="description" content="review movies and shows with your bluesky friends." /> 2 + <meta name="description" content="review movies and shows with your friends from bluesky." /> 3 3 4 4 <meta property="og:url" content="https://skywatched.app" /> 5 5 <meta property="og:type" content="website" /> 6 6 <meta property="og:title" content="skywatched" /> 7 - <meta property="og:description" content="review movies and shows with your bluesky friends." /> 7 + <meta property="og:description" content="review movies and shows with your friends from bluesky." /> 8 8 <meta property="og:image" content="/og.jpg" /> 9 9 10 10 <meta name="twitter:card" content="summary_large_image" /> 11 11 <meta property="twitter:domain" content="skywatched.app" /> 12 12 <meta property="twitter:url" content="https://skywatched.app" /> 13 13 <meta name="twitter:title" content="skywatched" /> 14 - <meta name="twitter:description" content="review movies and shows with your bluesky friends." /> 14 + <meta name="twitter:description" content="review movies and shows with your friends from bluesky." /> 15 15 <meta name="twitter:image" content="/og.jpg" /> 16 16 </svelte:head>
+121
src/lib/Components/CrosspostModal.svelte
··· 1 + <script lang="ts"> 2 + import { crosspostModal, user } from '$lib/state.svelte'; 3 + import { toast } from 'svelte-sonner'; 4 + 5 + let ratingText = $derived.by(() => { 6 + const ratingText = `I rated "${crosspostModal.title}" with ${crosspostModal.rating} star${crosspostModal.rating === 1 ? '' : 's'} on skywatched.app`; 7 + 8 + let text = crosspostModal.review 9 + ? `My review for "${crosspostModal.title}" on skywatched.app:<br /> <br />${crosspostModal.review}` 10 + : ratingText; 11 + 12 + if (text.length > 299) { 13 + text = text.slice(0, 295) + '...'; 14 + } 15 + 16 + return text; 17 + }); 18 + </script> 19 + 20 + {#if crosspostModal.showModal} 21 + <div class="relative z-50" aria-labelledby="modal-title" role="dialog" aria-modal="true"> 22 + <div 23 + class="fixed inset-0 bg-base-950/90 backdrop-blur-sm transition-opacity" 24 + onclick={() => (crosspostModal.showModal = false)} 25 + aria-hidden="true" 26 + ></div> 27 + <div class="pointer-events-none fixed inset-0 z-50 h-[100dvh] w-screen overflow-y-auto"> 28 + <div class="flex h-[100dvh] items-end justify-center p-4 text-center sm:items-center sm:p-0"> 29 + <div 30 + class="pointer-events-auto relative w-full transform overflow-hidden rounded-lg border border-base-800 bg-base-900 px-4 pb-4 pt-5 text-left shadow-xl transition-all sm:my-8 sm:max-w-md sm:p-6" 31 + > 32 + <button 33 + class="absolute right-2 top-2 rounded-full bg-base-800/50 p-1 hover:bg-base-800/80" 34 + onclick={() => (crosspostModal.showModal = false)} 35 + > 36 + <svg 37 + xmlns="http://www.w3.org/2000/svg" 38 + fill="none" 39 + viewBox="0 0 24 24" 40 + stroke-width="1.5" 41 + stroke="currentColor" 42 + class="size-4" 43 + > 44 + <path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" /> 45 + </svg> 46 + 47 + <span class="sr-only">close</span> 48 + </button> 49 + 50 + <div> 51 + <h3 class="text-md mb-4 font-semibold text-base-50" id="modal-title"> 52 + Crosspost to Bluesky 53 + </h3> 54 + 55 + <p class="text-sm text-base-300">Do you want to crosspost this review to Bluesky?</p> 56 + 57 + <div class="mt-4 rounded-xl border border-base-800 p-4 bg-base-950"> 58 + <div class="flex items-center gap-2"> 59 + {#if user.avatar} 60 + <img src={user.avatar} alt="user avatar" class="size-5 rounded-full" /> 61 + {/if} 62 + <div class="truncate text-sm font-medium"> 63 + {user.displayName || user.handle} 64 + </div> 65 + </div> 66 + 67 + <p class="mt-2 text-sm text-base-300"> 68 + {@html ratingText} 69 + </p> 70 + 71 + <div class="relative mt-4 aspect-2 h-auto w-full rounded-md bg-base-800 overflow-hidden border border-base-800"> 72 + 73 + <div class="absolute flex items-center justify-center inset-0 h-full w-full bg-base-950/90"> 74 + <p>Loading image...</p> 75 + </div> 76 + <img 77 + src="/review/{encodeURIComponent(crosspostModal.uri ?? '')}/og.png" 78 + alt="crosspost" 79 + class="absolute inset-0 h-full w-full object-cover" 80 + /> 81 + </div> 82 + </div> 83 + </div> 84 + <div class="mt-5 sm:mt-6"> 85 + <button 86 + onclick={async () => { 87 + crosspostModal.hide(); 88 + }} 89 + type="button" 90 + class="inline-flex w-full justify-center rounded-md border border-base-700 bg-white/5 px-3 py-2 text-sm font-semibold text-base-300 shadow-sm hover:bg-white/10 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent-600" 91 + >No thanks</button 92 + > 93 + 94 + <button 95 + onclick={async () => { 96 + crosspostModal.showModal = false; 97 + 98 + const response = await fetch(`/api/crosspost`, { 99 + method: 'POST', 100 + body: JSON.stringify({ 101 + uri: crosspostModal.uri 102 + }) 103 + }); 104 + 105 + if (!response.ok) { 106 + toast.error('Failed to crosspost'); 107 + return; 108 + } 109 + 110 + toast.success('Crossposted to Bluesky'); 111 + }} 112 + type="button" 113 + class="mt-2 inline-flex w-full justify-center rounded-md border border-accent-900 bg-accent-950/80 px-3 py-2 text-sm font-semibold text-accent-300 shadow-sm hover:bg-accent-950 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent-600" 114 + >Post to Bluesky</button 115 + > 116 + </div> 117 + </div> 118 + </div> 119 + </div> 120 + </div> 121 + {/if}
+31
src/lib/Components/Note.svelte
··· 1 + <script lang="ts"> 2 + import { cn } from "$lib/utils"; 3 + 4 + let { children, class: className }: { 5 + children: () => any; 6 + class?: string; 7 + } = $props(); 8 + </script> 9 + 10 + <div class={cn('rounded-md bg-sky-500/10 border border-sky-500/20 p-4', className)}> 11 + <div class="flex"> 12 + <div class="shrink-0"> 13 + <svg 14 + class="size-5 text-sky-500" 15 + viewBox="0 0 20 20" 16 + fill="currentColor" 17 + aria-hidden="true" 18 + data-slot="icon" 19 + > 20 + <path 21 + fill-rule="evenodd" 22 + d="M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-7-4a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9 9a.75.75 0 0 0 0 1.5h.253a.25.25 0 0 1 .244.304l-.459 2.066A1.75 1.75 0 0 0 10.747 15H11a.75.75 0 0 0 0-1.5h-.253a.25.25 0 0 1-.244-.304l.459-2.066A1.75 1.75 0 0 0 9.253 9H9Z" 23 + clip-rule="evenodd" 24 + /> 25 + </svg> 26 + </div> 27 + <div class="ml-3 flex-1 md:flex md:justify-between"> 28 + <p class="text-sm text-sky-400">{@render children()}</p> 29 + </div> 30 + </div> 31 + </div>
+20 -6
src/lib/Components/RateMovieModal.svelte
··· 1 1 <script lang="ts"> 2 - import { rateMovieModal, watchedItems } from '$lib/state.svelte'; 2 + import { crosspostModal, rateMovieModal, settings, watchedItems } from '$lib/state.svelte'; 3 3 import { toast } from 'svelte-sonner'; 4 4 import Rating from './Rating.svelte'; 5 5 import SearchCombobox from './SearchCombobox.svelte'; ··· 11 11 rating = rateMovieModal.selectedItem.currentRating ?? 0; 12 12 review = rateMovieModal.selectedItem.currentReview ?? ''; 13 13 }); 14 + 15 + let sending = $state(false); 14 16 </script> 15 17 16 18 {#if rateMovieModal.showModal} ··· 99 101 <div class="mt-5 sm:mt-6"> 100 102 <button 101 103 onclick={async () => { 102 - rateMovieModal.showModal = false; 103 - 104 - await fetch(`/api/rate`, { 104 + const response = await fetch(`/api/rate`, { 105 105 method: 'POST', 106 106 body: JSON.stringify({ 107 107 rating, ··· 111 111 }) 112 112 }); 113 113 114 + if (!response.ok) { 115 + toast.error('Failed to save rating'); 116 + 117 + return; 118 + } 119 + rateMovieModal.showModal = false; 120 + 121 + const data = await response.json(); 122 + 123 + if (settings.crosspostEnabled && review.length > 0) { 124 + crosspostModal.show(data.uri, review, rating, rateMovieModal.selectedItem.name ?? ''); 125 + } 126 + 114 127 watchedItems.addRated({ 115 128 movieId: rateMovieModal.selectedItem.movieId, 116 129 showId: rateMovieModal.selectedItem.showId, ··· 120 133 toast.success('Rating saved'); 121 134 }} 122 135 type="button" 123 - class="inline-flex w-full justify-center rounded-md border border-accent-900 bg-accent-950/80 px-3 py-2 text-sm font-semibold text-accent-300 shadow-sm hover:bg-accent-950 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent-600" 124 - >review</button 136 + disabled={sending || !rateMovieModal.selectedItem.name} 137 + class="inline-flex w-full justify-center rounded-md border border-accent-900 bg-accent-950/80 px-3 py-2 text-sm font-semibold text-accent-300 shadow-sm hover:bg-accent-950 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent-600 disabled:opacity-50 disabled:cursor-not-allowed" 138 + >{sending ? 'Sending...' : 'Review'}</button 125 139 > 126 140 </div> 127 141 </div>
+14
src/lib/Components/ReviewCard.svelte
··· 4 4 import Rating from './Rating.svelte'; 5 5 import RelativeTime from './relative-time/RelativeTime.svelte'; 6 6 import { nameToId } from '$lib/utils'; 7 + // import { crosspostModal } from '$lib/state.svelte'; 7 8 8 9 let { data, showMovieDetails = true }: { data: MainRecord; showMovieDetails?: boolean } = 9 10 $props(); ··· 68 69 <span class="sr-only">View review</span> 69 70 </a> 70 71 {/if} 72 + 73 + <!-- <button 74 + onclick={() => { 75 + crosspostModal.show( 76 + data.uri, 77 + data.record.note?.value ?? '', 78 + (data.record.rating?.value ?? 0) / 2, 79 + data.record.metadata?.title ?? '' 80 + ); 81 + }} 82 + > 83 + crosspost 84 + </button> --> 71 85 </div> 72 86 </div> 73 87 </div>
+7 -7
src/lib/Components/SearchCombobox.svelte
··· 30 30 let searching = false; 31 31 32 32 function onInput() { 33 - if ($inputValue.length < 3) { 33 + if ($inputValue.length < 2) { 34 34 results = []; 35 35 } else { 36 36 searching = true; 37 37 debounce(async () => { 38 - if ($inputValue.length < 3) return; 38 + if ($inputValue.length < 2) return; 39 39 40 40 const response = await fetch(`/api/search?q=${$inputValue}`); 41 41 const data = await response.json(); ··· 74 74 oninput={onInput} 75 75 /> 76 76 <div class="absolute right-2 top-1/2 z-10 -translate-y-1/2 text-accent-500"> 77 - {#if $open && $inputValue.length > 2} 77 + {#if $open && $inputValue.length > 1} 78 78 <svg 79 79 xmlns="http://www.w3.org/2000/svg" 80 80 fill="none" ··· 104 104 </div> 105 105 </div> 106 106 </div> 107 - {#if $open && $inputValue.length > 2} 107 + {#if $open && $inputValue.length > 1} 108 108 <ul 109 109 class=" z-50 flex max-h-[300px] flex-col overflow-hidden rounded-lg" 110 110 use:melt={$menu} ··· 121 121 value: item, 122 122 label: item.title 123 123 })} 124 - class="relative cursor-pointer scroll-my-2 px-2 py-2 data-[highlighted]:text-accent-200" 124 + class="relative w-full cursor-pointer scroll-my-2 px-2 py-2 data-[highlighted]:text-accent-200" 125 125 > 126 126 <button 127 127 onclick={() => { ··· 136 136 }; 137 137 rateMovieModal.showModal = true; 138 138 }} 139 - class="flex items-center justify-center gap-2" 139 + class="flex items-center justify-start gap-2 w-full" 140 140 > 141 141 <div 142 142 class="relative z-20 aspect-[2/3] h-12 w-auto shrink-0 overflow-hidden rounded-md border border-base-800 bg-base-900/50" ··· 156 156 > 157 157 {#if searching} 158 158 Searching... 159 - {:else if $inputValue.length > 2} 159 + {:else if $inputValue.length > 1} 160 160 No results found 161 161 {/if} 162 162 </li>
+14 -4
src/lib/Components/Sidebar.svelte
··· 42 42 showSidebar.value = false; 43 43 rateMovieModal.showEmpty(); 44 44 } 45 + }, 46 + { 47 + icon: `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6"> 48 + <path stroke-linecap="round" stroke-linejoin="round" d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z" /> 49 + <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" /> 50 + </svg>`, 51 + label: 'Settings', 52 + href: '/settings' 45 53 } 46 54 ]; 47 55 ··· 87 95 <div class="flex flex-col items-center space-y-2"> 88 96 {#if user} 89 97 {#each userMenu as item} 90 - <li class="group relative size-12"> 98 + <li class="group relative"> 91 99 <a 92 100 href={item.href} 93 101 class={'group flex items-center gap-x-3 rounded-md p-3 text-sm/6 font-semibold text-base-200 transition-colors duration-100 hover:bg-accent-950/20 hover:text-accent-400'} 94 102 onclick={(event) => { 95 - event.preventDefault(); 96 - item.onclick(); 103 + if (item.onclick) { 104 + event.preventDefault(); 105 + item.onclick(); 106 + } 97 107 }} 98 108 > 99 109 {@html item.icon} 100 110 <span 101 - class="absolute left-14 w-[6.5rem] rounded-lg backdrop-blur-md transition-opacity duration-200 group-hover:opacity-100 md:bg-accent-950/20 md:px-3 md:py-2 md:opacity-0" 111 + class="absolute left-14 whitespace-nowrap rounded-lg backdrop-blur-md transition-opacity duration-200 group-hover:opacity-100 md:bg-accent-950/20 md:px-3 md:py-2 md:opacity-0" 102 112 >{item.label}</span 103 113 > 104 114 </a>
+1 -1
src/lib/Components/User.svelte
··· 41 41 </div> 42 42 {/snippet} 43 43 44 - <div class="relative"> 44 + <div class="relative pt-4"> 45 45 {#if user} 46 46 <a href="/user/{user.handle}"> 47 47 {@render renderUser()}
+51
src/lib/state.svelte.ts
··· 86 86 } 87 87 }); 88 88 89 + export const crosspostModal: { 90 + showModal: boolean; 91 + uri: string | undefined; 92 + review: string | undefined; 93 + rating: number | undefined; 94 + title: string | undefined; 95 + 96 + show: (uri: string, review: string, rating: number, title: string) => void; 97 + hide: () => void; 98 + } = $state({ 99 + showModal: false, 100 + uri: undefined, 101 + review: undefined, 102 + rating: undefined, 103 + title: undefined, 104 + 105 + show: (uri: string, review: string, rating: number, title: string) => { 106 + crosspostModal.uri = uri; 107 + crosspostModal.review = review; 108 + crosspostModal.rating = rating; 109 + crosspostModal.title = title; 110 + crosspostModal.showModal = true; 111 + }, 112 + 113 + hide: () => { 114 + crosspostModal.showModal = false; 115 + crosspostModal.uri = undefined; 116 + crosspostModal.review = undefined; 117 + crosspostModal.rating = undefined; 118 + crosspostModal.title = undefined; 119 + } 120 + }); 121 + 122 + export const settings: { 123 + streamingRegion: string | undefined; 124 + crosspostEnabled: boolean | undefined; 125 + } = $state({ 126 + streamingRegion: undefined, 127 + crosspostEnabled: undefined 128 + }); 129 + 130 + export const user: { 131 + displayName: string | undefined; 132 + handle: string | undefined; 133 + avatar: string | undefined; 134 + } = $state({ 135 + displayName: undefined, 136 + handle: undefined, 137 + avatar: undefined 138 + }); 139 + 89 140 export const showLoginModal = $state({ 90 141 value: false, 91 142 toggle: () => {
+11 -1
src/routes/+layout.svelte
··· 3 3 4 4 import Footer from '$lib/Components/Footer.svelte'; 5 5 import { toast, Toaster } from 'svelte-sonner'; 6 - import { watchedItems } from '$lib/state.svelte'; 6 + import { settings, user, watchedItems } from '$lib/state.svelte'; 7 7 import RateMovieModal from '$lib/Components/RateMovieModal.svelte'; 8 8 9 9 import LoginModal from '$lib/Components/LoginModal.svelte'; ··· 15 15 import { navigating } from '$app/stores'; 16 16 import { slide } from 'svelte/transition'; 17 17 import { expoOut } from 'svelte/easing'; 18 + import CrosspostModal from '$lib/Components/CrosspostModal.svelte'; 18 19 19 20 let { children, data } = $props(); 20 21 ··· 85 86 // check if user is logged in 86 87 if (!data.user) return; 87 88 89 + settings.streamingRegion = data.settings?.streaming_region.code; 90 + settings.crosspostEnabled = data.settings?.crosspost_enabled; 91 + 92 + user.displayName = data.user.displayName; 93 + user.handle = data.user.handle; 94 + user.avatar = data.user.avatar; 95 + 88 96 if (useCachedRatedItems()) { 89 97 console.log('using cached rated items'); 90 98 } else { ··· 129 137 <LoginModal /> 130 138 131 139 <VideoPlayer /> 140 + 141 + <CrosspostModal /> 132 142 133 143 <div 134 144 style="background-image: url(/nnnoise.svg)"
+2 -2
src/routes/+page.svelte
··· 16 16 <Container class="relative z-10 w-full"> 17 17 <div class="max-w-8xl mx-auto flex w-full flex-col md:flex-col"> 18 18 <div class="mx-auto flex max-w-2xl grow flex-col gap-4 py-8"> 19 - <h1 class="pb-4 text-2xl font-bold">Recent reviews</h1> 19 + <h1 class="pb-4 text-2xl font-bold px-4">Recent reviews</h1> 20 20 21 21 {#if data.feed.length > 0} 22 22 <ReviewList reviews={data.feed} /> ··· 28 28 > 29 29 <h1 class="text-balance text-3xl font-semibold tracking-tight sm:text-5xl">skywatched</h1> 30 30 <p class="text-md mt-8 max-w-xs text-pretty text-center font-medium text-base-300 sm:text-lg"> 31 - review movies and shows with your bluesky friends. 31 + review movies and shows with your friends from bluesky. 32 32 </p> 33 33 {#if !data.user} 34 34 <button
+5 -5
src/routes/[kind]/[id]/+page.svelte
··· 17 17 18 18 <meta 19 19 name="description" 20 - content="rate and review {data.result.title ?? data.result.name ?? ''} on skywatched" 20 + content={`Rate and review "${data.result.title ?? data.result.name ?? ''}" on skywatched`} 21 21 /> 22 22 23 23 <meta property="og:url" content={$page.url.href} /> 24 24 <meta property="og:type" content="website" /> 25 - <meta property="og:title" content="{data.result.title ?? data.result.name ?? ''} | skywatched" /> 25 + <meta property="og:title" content="{data.result.title ?? data.result.name ?? ''} | skywatched.app" /> 26 26 <meta 27 27 property="og:description" 28 - content="rate and review {data.result.title ?? data.result.name ?? ''} on skywatched" 28 + content={`Rate and review "${data.result.title ?? data.result.name ?? ''}" on skywatched`} 29 29 /> 30 30 <meta property="og:image" content="{$page.url.href}/og.png" /> 31 31 32 32 <meta name="twitter:card" content="summary_large_image" /> 33 33 <meta property="twitter:domain" content="skywatched.app" /> 34 34 <meta property="twitter:url" content={$page.url.href} /> 35 - <meta name="twitter:title" content="{data.result.title ?? data.result.name ?? ''} | skywatched" /> 35 + <meta name="twitter:title" content="{data.result.title ?? data.result.name ?? ''} | skywatched.app" /> 36 36 <meta 37 37 name="twitter:description" 38 - content="rate and review {data.result.title ?? data.result.name ?? ''} on skywatched" 38 + content={`Rate and review "${data.result.title ?? data.result.name ?? ''}" on skywatched`} 39 39 /> 40 40 <meta name="twitter:image" content="{$page.url.href}/og.png" /> 41 41 </svelte:head>
+143
src/routes/api/crosspost/+server.ts
··· 1 + import { error, json, type RequestHandler } from '@sveltejs/kit'; 2 + import { AtpBaseClient, BlobRef } from '@atproto/api'; 3 + import { TID } from '@atproto/common'; 4 + import { getRecordByUri } from '$lib/db'; 5 + // import fs from 'fs'; 6 + 7 + import imagemin from 'imagemin'; 8 + import imageminWebp from 'imagemin-webp'; 9 + 10 + export const POST: RequestHandler = async ({ request, locals, fetch }) => { 11 + console.log('crosspost'); 12 + const user = locals.user; 13 + const agent = locals.agent; 14 + if (!user || !agent || agent instanceof AtpBaseClient) { 15 + console.log('unauthorized'); 16 + return error(401, 'Unauthorized API call'); 17 + } 18 + const body = await request.json(); 19 + const uri = body.uri; 20 + const did = user.did; 21 + 22 + // check that user did is the same as the did in the uri 23 + if (uri.replace('at://', '').split('/')[0] !== did) { 24 + return error(401, 'Unauthorized API call'); 25 + } 26 + 27 + const imgResponse = await fetch(`/review/${encodeURIComponent(uri)}/og.png`); 28 + const imgBlob = await imgResponse.blob(); 29 + 30 + const imgBuffer = await imgBlob.arrayBuffer(); 31 + 32 + // save to file, with fs for debugging 33 + // fs.writeFileSync('og.png', Buffer.from(imgBuffer)); 34 + 35 + const convertedImage = await imagemin.buffer(Buffer.from(imgBuffer), { 36 + plugins: [ 37 + imageminWebp({ 38 + quality: 100 39 + }) 40 + ] 41 + }); 42 + 43 + // turn into blob 44 + const lossyImageBlob = new Blob([convertedImage], { type: 'image/webp' }); 45 + 46 + const blobResponse = await agent.com.atproto.repo.uploadBlob(lossyImageBlob); 47 + const imgUri = blobResponse.data.blob; 48 + 49 + const reviewRecord = await getRecordByUri({ uri }); 50 + 51 + const rkey = TID.nextStr(); 52 + 53 + const rating = (reviewRecord.record.rating?.value ?? 0) / 2; 54 + 55 + const ratingText = `I rated "${reviewRecord.record.metadata?.title}" with ${rating} star${rating === 1 ? '' : 's'} on skywatched.app`; 56 + let text = reviewRecord.record.note?.value 57 + ? `My review for "${reviewRecord.record.metadata?.title}" on skywatched.app:\n\n${reviewRecord.record.note?.value}` 58 + : ratingText; 59 + 60 + if (text.length > 299) { 61 + text = text.slice(0, 295) + '...'; 62 + } 63 + 64 + // find all skywatched.app in text and add as facets with start and end indices 65 + const skywatchedFacets = text.matchAll(/skywatched\.app/g); 66 + 67 + const facets: { 68 + index: { 69 + byteStart: number; 70 + byteEnd: number; 71 + }; 72 + features: { 73 + $type: 'app.bsky.richtext.facet#link'; 74 + uri: string; 75 + }[]; 76 + }[] = []; 77 + if (skywatchedFacets) { 78 + for (const facet of skywatchedFacets) { 79 + facets.push({ 80 + index: { 81 + byteStart: facet.index, 82 + byteEnd: facet.index + 14 83 + }, 84 + features: [{ $type: 'app.bsky.richtext.facet#link', uri: 'https://skywatched.app' }] 85 + }); 86 + } 87 + } 88 + 89 + const record: { 90 + repo: string; 91 + collection: string; 92 + rkey: string; 93 + record: { 94 + $type: 'app.bsky.feed.post'; 95 + createdAt: string; 96 + text: string; 97 + embed?: { 98 + $type: 'app.bsky.embed.external'; 99 + external: { 100 + uri: string; 101 + thumb: BlobRef; 102 + title: string; 103 + description: string; 104 + }; 105 + }; 106 + facets?: { 107 + index: { 108 + byteStart: number; 109 + byteEnd: number; 110 + }; 111 + features: { 112 + $type: 'app.bsky.richtext.facet#link'; 113 + uri: string; 114 + }[]; 115 + }[]; 116 + }; 117 + } = { 118 + repo: did, 119 + collection: 'app.bsky.feed.post', 120 + rkey, 121 + record: { 122 + $type: 'app.bsky.feed.post', 123 + createdAt: new Date().toISOString(), 124 + text: text, 125 + embed: { 126 + $type: 'app.bsky.embed.external', 127 + external: { 128 + uri: `https://skywatched.app/review/${encodeURIComponent(reviewRecord.uri)}`, 129 + thumb: imgUri, 130 + title: `${reviewRecord.record.note?.value ? 'Reviewed' : 'Rated'} "${reviewRecord.record.metadata?.title ?? ''}"`, 131 + description: '' 132 + } 133 + }, 134 + facets 135 + } 136 + }; 137 + 138 + await agent.com.atproto.repo.putRecord(record); 139 + 140 + console.log('posted'); 141 + 142 + return json({ status: 'rated' }); 143 + };
+1 -1
src/routes/api/rate/+server.ts
··· 57 57 } 58 58 await agent.com.atproto.repo.putRecord(record); 59 59 60 - return json({ status: 'rated' }); 60 + return json({ status: 'rated', uri: `at://${did}/${REL_COLLECTION}/${rkey}` }); 61 61 };
+1 -1
src/routes/oauth/callback/+server.ts
··· 38 38 }); 39 39 // eslint-disable-next-line @typescript-eslint/no-unused-vars 40 40 } catch (_e) { 41 - redirect(301, '/onboarding'); 41 + redirect(301, '/settings?new'); 42 42 } 43 43 44 44 redirect(301, '/');
+8
src/routes/onboarding/+page.server.ts src/routes/settings/+page.server.ts
··· 1 1 import { error, redirect, type Actions } from '@sveltejs/kit'; 2 2 import available_regions from './available_regions.json'; 3 3 import { AtpBaseClient } from '@atproto/api'; 4 + /** @type {import('./$types').PageServerLoad} */ 5 + export async function load({ url }) { 6 + // check if search params has ?new 7 + const isNew = url.searchParams.has('new'); 4 8 9 + return { 10 + isNew 11 + }; 12 + } 5 13 export const actions: Actions = { 6 14 settings: async ({ request, locals }) => { 7 15 const agent = locals.agent;
+27 -4
src/routes/onboarding/+page.svelte src/routes/settings/+page.svelte
··· 3 3 import { fly } from 'svelte/transition'; 4 4 5 5 import availableRegions from './available_regions.json'; 6 + import { onMount } from 'svelte'; 7 + import { settings, user } from '$lib/state.svelte'; 8 + import Note from '$lib/Components/Note.svelte'; 9 + 10 + export let data; 6 11 7 12 type Region = { 8 13 iso_3166_1: string; ··· 38 43 ); 39 44 }) 40 45 : availableRegions; 46 + 47 + let crossPost = 'true'; 48 + 49 + onMount(() => { 50 + $inputValue = data.settings?.streaming_region?.name ?? ''; 51 + crossPost = (data.settings?.crosspost_enabled ?? false) ? 'true' : 'false'; 52 + }); 41 53 </script> 42 54 43 55 <div class="flex h-screen flex-col items-center justify-center"> 44 56 <form class="w-full max-w-lg px-4" action="?/settings" method="POST"> 45 - <div class="mb-12 text-2xl font-bold text-base-50">Welcome to Skywatched!</div> 57 + {#if data.isNew} 58 + <div class="mb-8 text-2xl font-bold text-base-50">Welcome to Skywatched!</div> 59 + {:else} 60 + <div class="mb-8 text-2xl font-bold text-base-50">Settings</div> 61 + {/if} 62 + 63 + <Note class="mb-4"> 64 + Please note that all information you provide is stored on bluesky and as such <span 65 + class="font-semibold">publicly visible.</span 66 + > 67 + </Note> 46 68 47 69 <div class="flex w-full flex-col gap-1"> 48 70 <!-- svelte-ignore a11y-label-has-associated-control - $label contains the 'for' attribute --> ··· 140 162 <fieldset class="mt-8"> 141 163 <legend class="text-sm/6 font-semibold text-base-50">Crossposting</legend> 142 164 <p class="mt-1 max-w-sm text-sm/6 text-base-400"> 143 - Do you want to enable crossposting reviews to bluesky? You can still change this per review 144 - later. 165 + Do you want to enable crossposting reviews to bluesky? If you choose yes, we'll still ask 166 + you to confirm for every review. 145 167 </p> 146 168 <div class="mt-6 space-y-4"> 147 169 <div class="flex items-center"> 148 170 <input 171 + bind:group={crossPost} 149 172 id="crosspost-enabled" 150 173 name="crosspost-enabled" 151 174 type="radio" 152 - checked 153 175 value="true" 154 176 class="relative size-4 appearance-none rounded-full border border-base-700 bg-white/10 before:absolute before:inset-1 before:rounded-full before:bg-white checked:border-accent-500 checked:bg-accent-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent-400 disabled:border-base-300 disabled:bg-base-100 disabled:before:bg-base-400 forced-colors:appearance-auto forced-colors:before:hidden [&:not(:checked)]:before:hidden" 155 177 /> ··· 159 181 </div> 160 182 <div class="flex items-center"> 161 183 <input 184 + bind:group={crossPost} 162 185 id="crosspost-disabled" 163 186 name="crosspost-enabled" 164 187 type="radio"
src/routes/onboarding/available_regions.json src/routes/settings/available_regions.json
+17 -6
src/routes/review/[uri]/+page.svelte
··· 56 56 <Container class="z-10 flex h-screen flex-col items-center justify-center"> 57 57 <ReviewCard data={data.record} /> 58 58 59 - <div 60 - class="z-10 rounded-lg border border-base-700 bg-base-50/5 px-3 py-2 text-xs font-medium text-base-200 transition-all duration-100 hover:bg-base-50/10" 61 - > 62 - <a href={`/user/${data.record.author.handle}`}> 63 - all reviews by {data.record.author.displayName || data.record.author.handle} 64 - </a> 59 + <div class="flex flex-wrap items-center justify-center gap-4"> 60 + <div 61 + class="z-10 rounded-lg border border-base-700 bg-base-50/5 px-3 py-2 text-xs font-medium text-base-200 transition-all duration-100 hover:bg-base-50/10" 62 + > 63 + <a 64 + href={`/${data.record.record.item.ref === 'tmdb:m' ? 'movie' : 'tv'}/${data.record.record.item.value}`} 65 + > 66 + see {data.record.record.item.ref === 'tmdb:m' ? 'movie' : 'show'} details 67 + </a> 68 + </div> 69 + <div 70 + class="z-10 rounded-lg border border-base-700 bg-base-50/5 px-3 py-2 text-xs font-medium text-base-200 transition-all duration-100 hover:bg-base-50/10" 71 + > 72 + <a href={`/user/${data.record.author.handle}`}> 73 + all reviews by {data.record.author.displayName || data.record.author.handle} 74 + </a> 75 + </div> 65 76 </div> 66 77 </Container>
+7 -3
src/routes/review/[uri]/og.png/+server.ts
··· 31 31 32 32 <span tw="flex tracking-tight mt-4">${data.record.metadata?.title}</span> 33 33 34 - <div tw="flex items-center mt-8"> 34 + ${ 35 + data.record.rating 36 + ? `<div tw="flex items-center mt-8"> 35 37 <div tw="flex items-center"> 36 38 37 39 ${new Array(5) 38 40 .fill(0) 39 41 .map( 40 42 (_, i) => `<svg 41 - tw="w-20 h-20 flex ${i * 2 < (data.record.rating?.value ?? 0) ? 'text-sky-400' : 'text-zinc-600'}" 43 + tw="w-20 h-20 flex ${i * 2 < (data.record.rating?.value ?? 0) - 1 ? 'text-sky-400' : 'text-zinc-600'}" 42 44 viewBox="0 0 24 24" 43 45 fill="currentColor"> 44 46 <path ··· 50 52 ) 51 53 .join('')} 52 54 </div> 53 - </div> 55 + </div>` 56 + : `` 57 + } 54 58 </div> 55 59 </div> 56 60