├── movie-mania ├── .gitignore ├── tailwind.config.js ├── src │ ├── input.css │ ├── index.html │ ├── data.js │ ├── index.js │ └── output.css ├── package.json ├── readme.md └── package-lock.json ├── .gitignore ├── otp-box ├── index.css ├── index.html ├── readme.md └── index.js └── README.md /movie-mania/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | node_modules 3 | -------------------------------------------------------------------------------- /movie-mania/tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ["./src/**/*.{html,js}"], 4 | theme: { 5 | extend: {}, 6 | }, 7 | plugins: [], 8 | } 9 | 10 | -------------------------------------------------------------------------------- /movie-mania/src/input.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer components { 6 | .card { 7 | background-color: rgb(230, 229, 229); 8 | border: 1px solid rgb(169, 164, 164); 9 | padding: 5px; 10 | border-radius: 10px; 11 | } 12 | } -------------------------------------------------------------------------------- /movie-mania/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "movie-mania", 3 | "version": "1.0.0", 4 | "description": "A Movie Dashboard", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [ 10 | "JavaScript", 11 | "TailwindCSS" 12 | ], 13 | "author": "Tapas Adhikary", 14 | "license": "MIT", 15 | "devDependencies": { 16 | "tailwindcss": "^3.4.4" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /otp-box/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: black; 3 | color: #ffffff; 4 | } 5 | 6 | .otp-box-container { 7 | display: flex; 8 | flex-direction: column; 9 | justify-content: center; 10 | align-items: center; 11 | } 12 | 13 | .otp-box-list { 14 | display: flex; 15 | } 16 | 17 | .otp-box-list .otp-box { 18 | width: 20px; 19 | margin-right: 5px; 20 | text-align: center; 21 | box-shadow: 1px 1px 1px 1px teal; 22 | border: none; 23 | border-radius: 5px; 24 | } 25 | 26 | .otp-validate-message { 27 | border-radius: 5px; 28 | padding: 2px; 29 | } 30 | 31 | .otp-validate-message.success { 32 | border: 1px solid #58dd10; 33 | color: green 34 | } 35 | 36 | .otp-validate-message.fail { 37 | border: 1px solid #e00d0d; 38 | color:red 39 | } -------------------------------------------------------------------------------- /movie-mania/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Movie Mania 8 | 9 | 10 | 11 |
12 | 15 |
16 |
17 |
18 |
19 |
20 |
21 |

Movie Reviews

22 | 23 |
24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /movie-mania/src/data.js: -------------------------------------------------------------------------------- 1 | const movieReviewData = [ 2 | [ 3 | { 4 | "id": '663a0a05bfe65e5778eedf58', 5 | "title": "The Avengers", 6 | "content": 'I am an Avenger fan... Big fan', 7 | "rating": 4, 8 | "by": "Peter D", 9 | "on": 1718508747000 10 | 11 | }, 12 | { 13 | "id": '663a0a05bfe65e5778eedf58', 14 | "title": "The Avengers", 15 | "content": 'Great movie! Will watch again.', 16 | "rating": 5, 17 | "by": "Kiran K", 18 | "on": 1718076747000 19 | } 20 | ], 21 | [ 22 | { 23 | "id": '664acd311387e2ad2e8be48b', 24 | "title": "Interstellar", 25 | "content": 'What a movie, super scifi', 26 | "rating": 5, 27 | "by": "Akram K", 28 | "on": 1718508775000 29 | } 30 | ] 31 | ]; 32 | 33 | export function getMovieReviewData() { 34 | return movieReviewData; 35 | } -------------------------------------------------------------------------------- /otp-box/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | OTP Box 7 | 8 | 9 | 10 | 11 |
12 |

Enter OTP

13 |
14 | 15 | 16 | 17 | 18 |
19 | 20 |

...

21 |

22 |

23 |
24 | 25 | -------------------------------------------------------------------------------- /otp-box/readme.md: -------------------------------------------------------------------------------- 1 | ## OTP BOX: How to Generate, Validate, and Expire OTP(One Time Password) 2 | 3 | A project using HTML, CSS, and Plain JavaScript. This project code has been used to teach in the [tapaScript বাংলা](https://www.youtube.com/@tapascript-bangla) YouTube channel. 4 | 5 | ## Please find the video here: 6 | 7 | main 8 | 9 | ## 🫶 Support 10 | Liked it? You can show your support with a STAR(⭐). 11 | 12 | ### Many Thanks to all the `Stargazers` who have supported this project with stars(⭐) 13 | 14 | [![Thanks to all stargazers](https://git-lister.onrender.com/api/stars/tapascript/js-projects?limit=15)](https://github.com/tapascript/js-projects/stargazers) 15 | 16 | ### Sponsor My Work 17 | 18 | I am an independent educator who creates meaningful projects to teach programming. You can support me further by [sponsoring me on GitHub](https://github.com/sponsors/atapas). 19 | 20 | 21 | ## Running the app locally with VS Code 22 | - Clone/Fork the repository 23 | - Import the `otp-box` project into the VS Code Editor 24 | - Install Live Server Extension 25 | - Open up the `index.html` and run it with Live Server. 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # js-projects 2 | 3 | A bunch of projects built with plain JavaScript, HTML, and CSS. These projects are for educational purposes and used in the videos on the [tapaScript English](https://www.youtube.com/tapasadhikary) and [tapaScript বাংলা](https://www.youtube.com/@tapascript-bangla) channels. 4 | 5 | ## 🫶 Support 6 | Liked it? You can show your support with a STAR(⭐). 7 | 8 | ### Many Thanks to all the `Stargazers` who have supported this project with stars(⭐) 9 | 10 | [![Thanks to all stargazers](https://git-lister.onrender.com/api/stars/tapascript/js-projects?limit=15)](https://github.com/tapascript/js-projects/stargazers) 11 | 12 | ### Sponsor My Work 13 | 14 | > I am an independent educator who creates meaningful projects to teach programming. You can support me further by [sponsoring me on GitHub](https://github.com/sponsors/atapas). 15 | 16 | ## TOC 17 | 18 | | Project | Video | Technology Stack | 19 | | ----------- | ----------- | ----------- | 20 | | [Generate, Validate, Expire OTP](https://github.com/tapascript/js-projects/tree/main/otp-box) | [Video Tutorial](https://www.youtube.com/watch?v=zjGwq0ep2Aw) - Bangla(বাংলা) | JavaScript, HTML, CSS | 21 | | [Movie Mania - Take One](https://github.com/tapascript/js-projects/tree/movie-mania-take-one) | [Video Tutorial](https://www.youtube.com/watch?v=zjGwq0ep2Aw) - Bangla(বাংলা) | JavaScript, HTML, TailwindCSS | 22 | | [Movie Mania - Take Two](https://github.com/tapascript/js-projects/tree/movie-mania-take-two) | [Video Tutorial](https://youtu.be/ag1LlKbz0Go) - Bangla(বাংলা) | JavaScript, HTML, TailwindCSS | 23 | -------------------------------------------------------------------------------- /movie-mania/readme.md: -------------------------------------------------------------------------------- 1 | মনে করুন আপনি একজন online ভিডিও অ্যাপের মালিক। অ্যাপের নাম মুভি ম্যানিয়া। আপনি আপনার ড্যাশবোর্ডে আপনার অ্যাপের users দের উপরের কিছু তথ্য জানতে চান। ধরে নিন আপনার backend টিম আপনার UI টিমকে এইরকম একটি API response দিয়েছে যেখানে মুভির review এবং rating সম্পর্কে ইনফর্মেশন পাওয়া যায়। 2 | 3 | ```js 4 | const movieReviewData = [ 5 | [ 6 | { 7 | "id": '663a0a05bfe65e5778eedf58', 8 | "title": "The Avengers", 9 | "content": 'I am an Avenger fan... Big fan', 10 | "rating": 4, 11 | "by": "Peter D", 12 | "on": 1718508747000 13 | 14 | }, 15 | { 16 | "id": '663a0a05bfe65e5778eedf58', 17 | "title": "The Avengers", 18 | "content": 'Great movie! Will watch again.', 19 | "rating": 5, 20 | "by": "Kiran K", 21 | "on": 1718076747000 22 | } 23 | ], 24 | [ 25 | { 26 | "id": '664acd311387e2ad2e8be48b', 27 | "title": "Interstellar", 28 | "content": 'What a movie, super scifi', 29 | "rating": 5, 30 | "by": "Akram K", 31 | "on": 1718508775000 32 | } 33 | ] 34 | ]; 35 | ``` 36 | 37 | Response একটি জাভাস্ক্রিপ্ট Array, যার elements গুলো আবার Array। প্রথম Array টি movie `The Avengers`, এবং দ্বিতীয় Array টি movie `Interstellar` এর রিভিউ আর rating এর details দেয়। 38 | 39 | এইবারে আপনি আপনার UI টিমকে বললেন এই ফিচার গুলো implement করার জন্য 40 | 41 | - টোটাল কত মুভি আছে তার একটা সংখ্যা গণনা করতে হবে। 42 | - সব মুভির গড়(average) rating গণনা করতে হবে। 43 | - টোটাল কতগুলো রিভিউ পেয়েছে সব মুভি মিলিয়ে তার একটা সংখ্যা গণনা করতে হবে। 44 | - প্রত্যেকটি মুভির যেই যেই rating পেয়েছে সেই তথ্য গণনা করতে হবে। 45 | - প্রত্যেকটি মুভির যেই যেই রিভিউ পেয়েছে সেই তথ্য গণনা করতে হবে। 46 | - সামান্য HTML, TailwindCSS, JavaScript দিয়ে একটি ড্যাশবোর্ড বানাতে হবে যেখানে উপরের সব গণনার output দেখাতে হবে। 47 | - যদি নুতুন কোন মুভির রিভিউ বা rating এর details backend API response এ এড হয়, সেই ক্ষেত্রে গণনা বা ড্যাশবোর্ডের কোড change করা চলবে না। -------------------------------------------------------------------------------- /otp-box/index.js: -------------------------------------------------------------------------------- 1 | let generatedOTP; 2 | 3 | const otpExpireElem = document.getElementById('otp-expires-id'); 4 | 5 | function expireOTP() { 6 | 7 | const totalTime = 15000; 8 | const interval = 1000; 9 | 10 | let slice = totalTime / interval; 11 | 12 | const intvId = setInterval(function() { 13 | otpExpireElem.innerText = `OTP will expire in ${slice} seconds`; 14 | slice = slice - 1; 15 | }, interval); 16 | 17 | setTimeout(function() { 18 | otpExpireElem.innerText = "OTP Expired"; 19 | clearInterval(intvId); 20 | generateOTP(); 21 | }, totalTime); 22 | 23 | } 24 | 25 | function tackleOTPBoxes() { 26 | const boxes = document.getElementById("otp-box-list-id"); 27 | boxes.addEventListener("input", function(e) { 28 | const target = e.target; 29 | const value = target.value; 30 | 31 | if(isNaN(value)) { 32 | target.value = ""; 33 | return; 34 | } 35 | 36 | const nextElement = target.nextElementSibling; 37 | 38 | if(nextElement) { 39 | nextElement.focus(); 40 | } 41 | 42 | validateOTP(); 43 | }) 44 | } 45 | 46 | function generateOTP() { 47 | generatedOTP = Math.floor(1000 + Math.random() * 9000); 48 | const otpElem = document.getElementById("geenerated-otp-id"); 49 | 50 | otpElem.innerText = `Your OTP: ${generatedOTP}`; 51 | 52 | expireOTP(); 53 | } 54 | 55 | function validateOTP() { 56 | let typedNumber = ""; 57 | const boxListElem = document.getElementById("otp-box-list-id"); 58 | [...boxListElem.children].forEach((elem) => { 59 | typedNumber = typedNumber + elem.value; 60 | }); 61 | 62 | console.log(generatedOTP, typedNumber); 63 | 64 | const result = (generatedOTP === parseInt(typedNumber, 10)); 65 | const resultElem = document.getElementById("result-id"); 66 | if (result) { 67 | resultElem.innerText = "OTP has been validate successfully"; 68 | resultElem.classList.remove("fail"); 69 | resultElem.classList.add("success"); 70 | } else { 71 | resultElem.innerText = "OTP is Invalid"; 72 | resultElem.classList.remove("success"); 73 | resultElem.classList.add("fail"); 74 | } 75 | 76 | 77 | } 78 | 79 | 80 | function init() { 81 | console.log('JavaScript initialization done!!!') 82 | tackleOTPBoxes(); 83 | setTimeout(generateOTP, 2000); 84 | } 85 | 86 | init(); -------------------------------------------------------------------------------- /movie-mania/src/index.js: -------------------------------------------------------------------------------- 1 | import { getMovieReviewData } from "./data.js"; 2 | 3 | function init() { 4 | const movieReviewData = getMovieReviewData(); 5 | paintStatistics(movieReviewData); 6 | paintMovieData(movieReviewData); 7 | } 8 | 9 | function paintStatistics(movieReviewData) { 10 | 11 | const flatReviewData = movieReviewData.flat(); 12 | 13 | const totalMovies = movieReviewData.length; 14 | const totalReviews = flatReviewData.length; 15 | const totalRating = flatReviewData.reduce((acc, item) => { 16 | return acc + item.rating; 17 | }, 0); 18 | const avgRating = (totalRating/totalReviews).toFixed(2); 19 | 20 | const totalMoviesEl = document.getElementById("tMoviesId"); 21 | addStat(totalMoviesEl, totalMovies); 22 | 23 | const avgRatingEL = document.getElementById("tAvgRatingId"); 24 | addStat(avgRatingEL, avgRating); 25 | 26 | const totalReviewsEl = document.getElementById("tReviewsId"); 27 | addStat(totalReviewsEl, totalReviews); 28 | } 29 | 30 | function addStat(elem, value) { 31 | const spanEL = document.createElement("span"); 32 | spanEL.classList.add("text-6xl") 33 | spanEL.innerText = value; 34 | elem.appendChild(spanEL); 35 | } 36 | 37 | function paintMovieData(movieReviewData) { 38 | const flatReviewData = movieReviewData.flat(); 39 | const movieListEL = document.querySelector("#movieListId UL"); 40 | 41 | console.log(movieListEL); 42 | 43 | flatReviewData.map((movie) => { 44 | console.log(movie); 45 | 46 | const liElem = document.createElement("li"); 47 | liElem.classList.add("card", "p-2", "my-2"); 48 | 49 | const titleElem = document.createElement("p"); 50 | titleElem.classList.add("text-xl", "mb-2"); 51 | titleElem.innerText = `${movie.title} - ${movie.rating}`; 52 | liElem.appendChild(titleElem); 53 | 54 | const reviewElem = document.createElement("p"); 55 | reviewElem.classList.add("mx-2", "mb-2"); 56 | reviewElem.innerText = movie.content; 57 | liElem.appendChild(reviewElem); 58 | 59 | const byEleme = document.createElement("p"); 60 | byEleme.classList.add("mx-2", "mb-2"); 61 | byEleme.innerText = `By ${movie.by} on ${new Intl.DateTimeFormat('en-IN').format(movie.on)}`; 62 | liElem.appendChild(byEleme); 63 | 64 | movieListEL.appendChild(liElem); 65 | }) 66 | } 67 | 68 | init(); 69 | 70 | -------------------------------------------------------------------------------- /movie-mania/src/output.css: -------------------------------------------------------------------------------- 1 | /* 2 | ! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com 3 | */ 4 | 5 | /* 6 | 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) 7 | 2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) 8 | */ 9 | 10 | *, 11 | ::before, 12 | ::after { 13 | box-sizing: border-box; 14 | /* 1 */ 15 | border-width: 0; 16 | /* 2 */ 17 | border-style: solid; 18 | /* 2 */ 19 | border-color: #e5e7eb; 20 | /* 2 */ 21 | } 22 | 23 | ::before, 24 | ::after { 25 | --tw-content: ''; 26 | } 27 | 28 | /* 29 | 1. Use a consistent sensible line-height in all browsers. 30 | 2. Prevent adjustments of font size after orientation changes in iOS. 31 | 3. Use a more readable tab size. 32 | 4. Use the user's configured `sans` font-family by default. 33 | 5. Use the user's configured `sans` font-feature-settings by default. 34 | 6. Use the user's configured `sans` font-variation-settings by default. 35 | 7. Disable tap highlights on iOS 36 | */ 37 | 38 | html, 39 | :host { 40 | line-height: 1.5; 41 | /* 1 */ 42 | -webkit-text-size-adjust: 100%; 43 | /* 2 */ 44 | -moz-tab-size: 4; 45 | /* 3 */ 46 | -o-tab-size: 4; 47 | tab-size: 4; 48 | /* 3 */ 49 | font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 50 | /* 4 */ 51 | font-feature-settings: normal; 52 | /* 5 */ 53 | font-variation-settings: normal; 54 | /* 6 */ 55 | -webkit-tap-highlight-color: transparent; 56 | /* 7 */ 57 | } 58 | 59 | /* 60 | 1. Remove the margin in all browsers. 61 | 2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. 62 | */ 63 | 64 | body { 65 | margin: 0; 66 | /* 1 */ 67 | line-height: inherit; 68 | /* 2 */ 69 | } 70 | 71 | /* 72 | 1. Add the correct height in Firefox. 73 | 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) 74 | 3. Ensure horizontal rules are visible by default. 75 | */ 76 | 77 | hr { 78 | height: 0; 79 | /* 1 */ 80 | color: inherit; 81 | /* 2 */ 82 | border-top-width: 1px; 83 | /* 3 */ 84 | } 85 | 86 | /* 87 | Add the correct text decoration in Chrome, Edge, and Safari. 88 | */ 89 | 90 | abbr:where([title]) { 91 | -webkit-text-decoration: underline dotted; 92 | text-decoration: underline dotted; 93 | } 94 | 95 | /* 96 | Remove the default font size and weight for headings. 97 | */ 98 | 99 | h1, 100 | h2, 101 | h3, 102 | h4, 103 | h5, 104 | h6 { 105 | font-size: inherit; 106 | font-weight: inherit; 107 | } 108 | 109 | /* 110 | Reset links to optimize for opt-in styling instead of opt-out. 111 | */ 112 | 113 | a { 114 | color: inherit; 115 | text-decoration: inherit; 116 | } 117 | 118 | /* 119 | Add the correct font weight in Edge and Safari. 120 | */ 121 | 122 | b, 123 | strong { 124 | font-weight: bolder; 125 | } 126 | 127 | /* 128 | 1. Use the user's configured `mono` font-family by default. 129 | 2. Use the user's configured `mono` font-feature-settings by default. 130 | 3. Use the user's configured `mono` font-variation-settings by default. 131 | 4. Correct the odd `em` font sizing in all browsers. 132 | */ 133 | 134 | code, 135 | kbd, 136 | samp, 137 | pre { 138 | font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 139 | /* 1 */ 140 | font-feature-settings: normal; 141 | /* 2 */ 142 | font-variation-settings: normal; 143 | /* 3 */ 144 | font-size: 1em; 145 | /* 4 */ 146 | } 147 | 148 | /* 149 | Add the correct font size in all browsers. 150 | */ 151 | 152 | small { 153 | font-size: 80%; 154 | } 155 | 156 | /* 157 | Prevent `sub` and `sup` elements from affecting the line height in all browsers. 158 | */ 159 | 160 | sub, 161 | sup { 162 | font-size: 75%; 163 | line-height: 0; 164 | position: relative; 165 | vertical-align: baseline; 166 | } 167 | 168 | sub { 169 | bottom: -0.25em; 170 | } 171 | 172 | sup { 173 | top: -0.5em; 174 | } 175 | 176 | /* 177 | 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) 178 | 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) 179 | 3. Remove gaps between table borders by default. 180 | */ 181 | 182 | table { 183 | text-indent: 0; 184 | /* 1 */ 185 | border-color: inherit; 186 | /* 2 */ 187 | border-collapse: collapse; 188 | /* 3 */ 189 | } 190 | 191 | /* 192 | 1. Change the font styles in all browsers. 193 | 2. Remove the margin in Firefox and Safari. 194 | 3. Remove default padding in all browsers. 195 | */ 196 | 197 | button, 198 | input, 199 | optgroup, 200 | select, 201 | textarea { 202 | font-family: inherit; 203 | /* 1 */ 204 | font-feature-settings: inherit; 205 | /* 1 */ 206 | font-variation-settings: inherit; 207 | /* 1 */ 208 | font-size: 100%; 209 | /* 1 */ 210 | font-weight: inherit; 211 | /* 1 */ 212 | line-height: inherit; 213 | /* 1 */ 214 | letter-spacing: inherit; 215 | /* 1 */ 216 | color: inherit; 217 | /* 1 */ 218 | margin: 0; 219 | /* 2 */ 220 | padding: 0; 221 | /* 3 */ 222 | } 223 | 224 | /* 225 | Remove the inheritance of text transform in Edge and Firefox. 226 | */ 227 | 228 | button, 229 | select { 230 | text-transform: none; 231 | } 232 | 233 | /* 234 | 1. Correct the inability to style clickable types in iOS and Safari. 235 | 2. Remove default button styles. 236 | */ 237 | 238 | button, 239 | input:where([type='button']), 240 | input:where([type='reset']), 241 | input:where([type='submit']) { 242 | -webkit-appearance: button; 243 | /* 1 */ 244 | background-color: transparent; 245 | /* 2 */ 246 | background-image: none; 247 | /* 2 */ 248 | } 249 | 250 | /* 251 | Use the modern Firefox focus style for all focusable elements. 252 | */ 253 | 254 | :-moz-focusring { 255 | outline: auto; 256 | } 257 | 258 | /* 259 | Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) 260 | */ 261 | 262 | :-moz-ui-invalid { 263 | box-shadow: none; 264 | } 265 | 266 | /* 267 | Add the correct vertical alignment in Chrome and Firefox. 268 | */ 269 | 270 | progress { 271 | vertical-align: baseline; 272 | } 273 | 274 | /* 275 | Correct the cursor style of increment and decrement buttons in Safari. 276 | */ 277 | 278 | ::-webkit-inner-spin-button, 279 | ::-webkit-outer-spin-button { 280 | height: auto; 281 | } 282 | 283 | /* 284 | 1. Correct the odd appearance in Chrome and Safari. 285 | 2. Correct the outline style in Safari. 286 | */ 287 | 288 | [type='search'] { 289 | -webkit-appearance: textfield; 290 | /* 1 */ 291 | outline-offset: -2px; 292 | /* 2 */ 293 | } 294 | 295 | /* 296 | Remove the inner padding in Chrome and Safari on macOS. 297 | */ 298 | 299 | ::-webkit-search-decoration { 300 | -webkit-appearance: none; 301 | } 302 | 303 | /* 304 | 1. Correct the inability to style clickable types in iOS and Safari. 305 | 2. Change font properties to `inherit` in Safari. 306 | */ 307 | 308 | ::-webkit-file-upload-button { 309 | -webkit-appearance: button; 310 | /* 1 */ 311 | font: inherit; 312 | /* 2 */ 313 | } 314 | 315 | /* 316 | Add the correct display in Chrome and Safari. 317 | */ 318 | 319 | summary { 320 | display: list-item; 321 | } 322 | 323 | /* 324 | Removes the default spacing and border for appropriate elements. 325 | */ 326 | 327 | blockquote, 328 | dl, 329 | dd, 330 | h1, 331 | h2, 332 | h3, 333 | h4, 334 | h5, 335 | h6, 336 | hr, 337 | figure, 338 | p, 339 | pre { 340 | margin: 0; 341 | } 342 | 343 | fieldset { 344 | margin: 0; 345 | padding: 0; 346 | } 347 | 348 | legend { 349 | padding: 0; 350 | } 351 | 352 | ol, 353 | ul, 354 | menu { 355 | list-style: none; 356 | margin: 0; 357 | padding: 0; 358 | } 359 | 360 | /* 361 | Reset default styling for dialogs. 362 | */ 363 | 364 | dialog { 365 | padding: 0; 366 | } 367 | 368 | /* 369 | Prevent resizing textareas horizontally by default. 370 | */ 371 | 372 | textarea { 373 | resize: vertical; 374 | } 375 | 376 | /* 377 | 1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) 378 | 2. Set the default placeholder color to the user's configured gray 400 color. 379 | */ 380 | 381 | input::-moz-placeholder, textarea::-moz-placeholder { 382 | opacity: 1; 383 | /* 1 */ 384 | color: #9ca3af; 385 | /* 2 */ 386 | } 387 | 388 | input::placeholder, 389 | textarea::placeholder { 390 | opacity: 1; 391 | /* 1 */ 392 | color: #9ca3af; 393 | /* 2 */ 394 | } 395 | 396 | /* 397 | Set the default cursor for buttons. 398 | */ 399 | 400 | button, 401 | [role="button"] { 402 | cursor: pointer; 403 | } 404 | 405 | /* 406 | Make sure disabled buttons don't get the pointer cursor. 407 | */ 408 | 409 | :disabled { 410 | cursor: default; 411 | } 412 | 413 | /* 414 | 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) 415 | 2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) 416 | This can trigger a poorly considered lint error in some tools but is included by design. 417 | */ 418 | 419 | img, 420 | svg, 421 | video, 422 | canvas, 423 | audio, 424 | iframe, 425 | embed, 426 | object { 427 | display: block; 428 | /* 1 */ 429 | vertical-align: middle; 430 | /* 2 */ 431 | } 432 | 433 | /* 434 | Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) 435 | */ 436 | 437 | img, 438 | video { 439 | max-width: 100%; 440 | height: auto; 441 | } 442 | 443 | /* Make elements with the HTML hidden attribute stay hidden by default */ 444 | 445 | [hidden] { 446 | display: none; 447 | } 448 | 449 | *, ::before, ::after { 450 | --tw-border-spacing-x: 0; 451 | --tw-border-spacing-y: 0; 452 | --tw-translate-x: 0; 453 | --tw-translate-y: 0; 454 | --tw-rotate: 0; 455 | --tw-skew-x: 0; 456 | --tw-skew-y: 0; 457 | --tw-scale-x: 1; 458 | --tw-scale-y: 1; 459 | --tw-pan-x: ; 460 | --tw-pan-y: ; 461 | --tw-pinch-zoom: ; 462 | --tw-scroll-snap-strictness: proximity; 463 | --tw-gradient-from-position: ; 464 | --tw-gradient-via-position: ; 465 | --tw-gradient-to-position: ; 466 | --tw-ordinal: ; 467 | --tw-slashed-zero: ; 468 | --tw-numeric-figure: ; 469 | --tw-numeric-spacing: ; 470 | --tw-numeric-fraction: ; 471 | --tw-ring-inset: ; 472 | --tw-ring-offset-width: 0px; 473 | --tw-ring-offset-color: #fff; 474 | --tw-ring-color: rgb(59 130 246 / 0.5); 475 | --tw-ring-offset-shadow: 0 0 #0000; 476 | --tw-ring-shadow: 0 0 #0000; 477 | --tw-shadow: 0 0 #0000; 478 | --tw-shadow-colored: 0 0 #0000; 479 | --tw-blur: ; 480 | --tw-brightness: ; 481 | --tw-contrast: ; 482 | --tw-grayscale: ; 483 | --tw-hue-rotate: ; 484 | --tw-invert: ; 485 | --tw-saturate: ; 486 | --tw-sepia: ; 487 | --tw-drop-shadow: ; 488 | --tw-backdrop-blur: ; 489 | --tw-backdrop-brightness: ; 490 | --tw-backdrop-contrast: ; 491 | --tw-backdrop-grayscale: ; 492 | --tw-backdrop-hue-rotate: ; 493 | --tw-backdrop-invert: ; 494 | --tw-backdrop-opacity: ; 495 | --tw-backdrop-saturate: ; 496 | --tw-backdrop-sepia: ; 497 | --tw-contain-size: ; 498 | --tw-contain-layout: ; 499 | --tw-contain-paint: ; 500 | --tw-contain-style: ; 501 | } 502 | 503 | ::backdrop { 504 | --tw-border-spacing-x: 0; 505 | --tw-border-spacing-y: 0; 506 | --tw-translate-x: 0; 507 | --tw-translate-y: 0; 508 | --tw-rotate: 0; 509 | --tw-skew-x: 0; 510 | --tw-skew-y: 0; 511 | --tw-scale-x: 1; 512 | --tw-scale-y: 1; 513 | --tw-pan-x: ; 514 | --tw-pan-y: ; 515 | --tw-pinch-zoom: ; 516 | --tw-scroll-snap-strictness: proximity; 517 | --tw-gradient-from-position: ; 518 | --tw-gradient-via-position: ; 519 | --tw-gradient-to-position: ; 520 | --tw-ordinal: ; 521 | --tw-slashed-zero: ; 522 | --tw-numeric-figure: ; 523 | --tw-numeric-spacing: ; 524 | --tw-numeric-fraction: ; 525 | --tw-ring-inset: ; 526 | --tw-ring-offset-width: 0px; 527 | --tw-ring-offset-color: #fff; 528 | --tw-ring-color: rgb(59 130 246 / 0.5); 529 | --tw-ring-offset-shadow: 0 0 #0000; 530 | --tw-ring-shadow: 0 0 #0000; 531 | --tw-shadow: 0 0 #0000; 532 | --tw-shadow-colored: 0 0 #0000; 533 | --tw-blur: ; 534 | --tw-brightness: ; 535 | --tw-contrast: ; 536 | --tw-grayscale: ; 537 | --tw-hue-rotate: ; 538 | --tw-invert: ; 539 | --tw-saturate: ; 540 | --tw-sepia: ; 541 | --tw-drop-shadow: ; 542 | --tw-backdrop-blur: ; 543 | --tw-backdrop-brightness: ; 544 | --tw-backdrop-contrast: ; 545 | --tw-backdrop-grayscale: ; 546 | --tw-backdrop-hue-rotate: ; 547 | --tw-backdrop-invert: ; 548 | --tw-backdrop-opacity: ; 549 | --tw-backdrop-saturate: ; 550 | --tw-backdrop-sepia: ; 551 | --tw-contain-size: ; 552 | --tw-contain-layout: ; 553 | --tw-contain-paint: ; 554 | --tw-contain-style: ; 555 | } 556 | 557 | .card { 558 | background-color: rgb(230, 229, 229); 559 | border: 1px solid rgb(169, 164, 164); 560 | padding: 5px; 561 | border-radius: 10px; 562 | } 563 | 564 | .my-2 { 565 | margin-top: 0.5rem; 566 | margin-bottom: 0.5rem; 567 | } 568 | 569 | .mx-2 { 570 | margin-left: 0.5rem; 571 | margin-right: 0.5rem; 572 | } 573 | 574 | .mb-2 { 575 | margin-bottom: 0.5rem; 576 | } 577 | 578 | .flex { 579 | display: flex; 580 | } 581 | 582 | .flex-col { 583 | flex-direction: column; 584 | } 585 | 586 | .justify-around { 587 | justify-content: space-around; 588 | } 589 | 590 | .bg-black { 591 | --tw-bg-opacity: 1; 592 | background-color: rgb(0 0 0 / var(--tw-bg-opacity)); 593 | } 594 | 595 | .p-2 { 596 | padding: 0.5rem; 597 | } 598 | 599 | .p-8 { 600 | padding: 2rem; 601 | } 602 | 603 | .p-4 { 604 | padding: 1rem; 605 | } 606 | 607 | .text-3xl { 608 | font-size: 1.875rem; 609 | line-height: 2.25rem; 610 | } 611 | 612 | .text-2xl { 613 | font-size: 1.5rem; 614 | line-height: 2rem; 615 | } 616 | 617 | .text-xl { 618 | font-size: 1.25rem; 619 | line-height: 1.75rem; 620 | } 621 | 622 | .text-6xl { 623 | font-size: 3.75rem; 624 | line-height: 1; 625 | } 626 | 627 | .text-white { 628 | --tw-text-opacity: 1; 629 | color: rgb(255 255 255 / var(--tw-text-opacity)); 630 | } -------------------------------------------------------------------------------- /movie-mania/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "movie-mania", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "movie-mania", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "tailwindcss": "^3.4.4" 13 | } 14 | }, 15 | "node_modules/@alloc/quick-lru": { 16 | "version": "5.2.0", 17 | "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", 18 | "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", 19 | "dev": true, 20 | "license": "MIT", 21 | "engines": { 22 | "node": ">=10" 23 | }, 24 | "funding": { 25 | "url": "https://github.com/sponsors/sindresorhus" 26 | } 27 | }, 28 | "node_modules/@isaacs/cliui": { 29 | "version": "8.0.2", 30 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 31 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 32 | "dev": true, 33 | "license": "ISC", 34 | "dependencies": { 35 | "string-width": "^5.1.2", 36 | "string-width-cjs": "npm:string-width@^4.2.0", 37 | "strip-ansi": "^7.0.1", 38 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 39 | "wrap-ansi": "^8.1.0", 40 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 41 | }, 42 | "engines": { 43 | "node": ">=12" 44 | } 45 | }, 46 | "node_modules/@jridgewell/gen-mapping": { 47 | "version": "0.3.5", 48 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", 49 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", 50 | "dev": true, 51 | "license": "MIT", 52 | "dependencies": { 53 | "@jridgewell/set-array": "^1.2.1", 54 | "@jridgewell/sourcemap-codec": "^1.4.10", 55 | "@jridgewell/trace-mapping": "^0.3.24" 56 | }, 57 | "engines": { 58 | "node": ">=6.0.0" 59 | } 60 | }, 61 | "node_modules/@jridgewell/resolve-uri": { 62 | "version": "3.1.2", 63 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 64 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 65 | "dev": true, 66 | "license": "MIT", 67 | "engines": { 68 | "node": ">=6.0.0" 69 | } 70 | }, 71 | "node_modules/@jridgewell/set-array": { 72 | "version": "1.2.1", 73 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 74 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 75 | "dev": true, 76 | "license": "MIT", 77 | "engines": { 78 | "node": ">=6.0.0" 79 | } 80 | }, 81 | "node_modules/@jridgewell/sourcemap-codec": { 82 | "version": "1.4.15", 83 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 84 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 85 | "dev": true, 86 | "license": "MIT" 87 | }, 88 | "node_modules/@jridgewell/trace-mapping": { 89 | "version": "0.3.25", 90 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 91 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 92 | "dev": true, 93 | "license": "MIT", 94 | "dependencies": { 95 | "@jridgewell/resolve-uri": "^3.1.0", 96 | "@jridgewell/sourcemap-codec": "^1.4.14" 97 | } 98 | }, 99 | "node_modules/@nodelib/fs.scandir": { 100 | "version": "2.1.5", 101 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 102 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 103 | "dev": true, 104 | "license": "MIT", 105 | "dependencies": { 106 | "@nodelib/fs.stat": "2.0.5", 107 | "run-parallel": "^1.1.9" 108 | }, 109 | "engines": { 110 | "node": ">= 8" 111 | } 112 | }, 113 | "node_modules/@nodelib/fs.stat": { 114 | "version": "2.0.5", 115 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 116 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 117 | "dev": true, 118 | "license": "MIT", 119 | "engines": { 120 | "node": ">= 8" 121 | } 122 | }, 123 | "node_modules/@nodelib/fs.walk": { 124 | "version": "1.2.8", 125 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 126 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 127 | "dev": true, 128 | "license": "MIT", 129 | "dependencies": { 130 | "@nodelib/fs.scandir": "2.1.5", 131 | "fastq": "^1.6.0" 132 | }, 133 | "engines": { 134 | "node": ">= 8" 135 | } 136 | }, 137 | "node_modules/@pkgjs/parseargs": { 138 | "version": "0.11.0", 139 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 140 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 141 | "dev": true, 142 | "license": "MIT", 143 | "optional": true, 144 | "engines": { 145 | "node": ">=14" 146 | } 147 | }, 148 | "node_modules/ansi-regex": { 149 | "version": "6.0.1", 150 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 151 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 152 | "dev": true, 153 | "license": "MIT", 154 | "engines": { 155 | "node": ">=12" 156 | }, 157 | "funding": { 158 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 159 | } 160 | }, 161 | "node_modules/ansi-styles": { 162 | "version": "6.2.1", 163 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 164 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 165 | "dev": true, 166 | "license": "MIT", 167 | "engines": { 168 | "node": ">=12" 169 | }, 170 | "funding": { 171 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 172 | } 173 | }, 174 | "node_modules/any-promise": { 175 | "version": "1.3.0", 176 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 177 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", 178 | "dev": true, 179 | "license": "MIT" 180 | }, 181 | "node_modules/anymatch": { 182 | "version": "3.1.3", 183 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 184 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 185 | "dev": true, 186 | "license": "ISC", 187 | "dependencies": { 188 | "normalize-path": "^3.0.0", 189 | "picomatch": "^2.0.4" 190 | }, 191 | "engines": { 192 | "node": ">= 8" 193 | } 194 | }, 195 | "node_modules/arg": { 196 | "version": "5.0.2", 197 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 198 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 199 | "dev": true, 200 | "license": "MIT" 201 | }, 202 | "node_modules/balanced-match": { 203 | "version": "1.0.2", 204 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 205 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 206 | "dev": true, 207 | "license": "MIT" 208 | }, 209 | "node_modules/binary-extensions": { 210 | "version": "2.3.0", 211 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 212 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 213 | "dev": true, 214 | "license": "MIT", 215 | "engines": { 216 | "node": ">=8" 217 | }, 218 | "funding": { 219 | "url": "https://github.com/sponsors/sindresorhus" 220 | } 221 | }, 222 | "node_modules/brace-expansion": { 223 | "version": "2.0.1", 224 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 225 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 226 | "dev": true, 227 | "license": "MIT", 228 | "dependencies": { 229 | "balanced-match": "^1.0.0" 230 | } 231 | }, 232 | "node_modules/braces": { 233 | "version": "3.0.3", 234 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 235 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 236 | "dev": true, 237 | "license": "MIT", 238 | "dependencies": { 239 | "fill-range": "^7.1.1" 240 | }, 241 | "engines": { 242 | "node": ">=8" 243 | } 244 | }, 245 | "node_modules/camelcase-css": { 246 | "version": "2.0.1", 247 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", 248 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", 249 | "dev": true, 250 | "license": "MIT", 251 | "engines": { 252 | "node": ">= 6" 253 | } 254 | }, 255 | "node_modules/chokidar": { 256 | "version": "3.6.0", 257 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 258 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 259 | "dev": true, 260 | "license": "MIT", 261 | "dependencies": { 262 | "anymatch": "~3.1.2", 263 | "braces": "~3.0.2", 264 | "glob-parent": "~5.1.2", 265 | "is-binary-path": "~2.1.0", 266 | "is-glob": "~4.0.1", 267 | "normalize-path": "~3.0.0", 268 | "readdirp": "~3.6.0" 269 | }, 270 | "engines": { 271 | "node": ">= 8.10.0" 272 | }, 273 | "funding": { 274 | "url": "https://paulmillr.com/funding/" 275 | }, 276 | "optionalDependencies": { 277 | "fsevents": "~2.3.2" 278 | } 279 | }, 280 | "node_modules/chokidar/node_modules/glob-parent": { 281 | "version": "5.1.2", 282 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 283 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 284 | "dev": true, 285 | "license": "ISC", 286 | "dependencies": { 287 | "is-glob": "^4.0.1" 288 | }, 289 | "engines": { 290 | "node": ">= 6" 291 | } 292 | }, 293 | "node_modules/color-convert": { 294 | "version": "2.0.1", 295 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 296 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 297 | "dev": true, 298 | "license": "MIT", 299 | "dependencies": { 300 | "color-name": "~1.1.4" 301 | }, 302 | "engines": { 303 | "node": ">=7.0.0" 304 | } 305 | }, 306 | "node_modules/color-name": { 307 | "version": "1.1.4", 308 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 309 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 310 | "dev": true, 311 | "license": "MIT" 312 | }, 313 | "node_modules/commander": { 314 | "version": "4.1.1", 315 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", 316 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", 317 | "dev": true, 318 | "license": "MIT", 319 | "engines": { 320 | "node": ">= 6" 321 | } 322 | }, 323 | "node_modules/cross-spawn": { 324 | "version": "7.0.3", 325 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 326 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 327 | "dev": true, 328 | "license": "MIT", 329 | "dependencies": { 330 | "path-key": "^3.1.0", 331 | "shebang-command": "^2.0.0", 332 | "which": "^2.0.1" 333 | }, 334 | "engines": { 335 | "node": ">= 8" 336 | } 337 | }, 338 | "node_modules/cssesc": { 339 | "version": "3.0.0", 340 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 341 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 342 | "dev": true, 343 | "license": "MIT", 344 | "bin": { 345 | "cssesc": "bin/cssesc" 346 | }, 347 | "engines": { 348 | "node": ">=4" 349 | } 350 | }, 351 | "node_modules/didyoumean": { 352 | "version": "1.2.2", 353 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 354 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", 355 | "dev": true, 356 | "license": "Apache-2.0" 357 | }, 358 | "node_modules/dlv": { 359 | "version": "1.1.3", 360 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", 361 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 362 | "dev": true, 363 | "license": "MIT" 364 | }, 365 | "node_modules/eastasianwidth": { 366 | "version": "0.2.0", 367 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 368 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 369 | "dev": true, 370 | "license": "MIT" 371 | }, 372 | "node_modules/emoji-regex": { 373 | "version": "9.2.2", 374 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 375 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 376 | "dev": true, 377 | "license": "MIT" 378 | }, 379 | "node_modules/fast-glob": { 380 | "version": "3.3.2", 381 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 382 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 383 | "dev": true, 384 | "license": "MIT", 385 | "dependencies": { 386 | "@nodelib/fs.stat": "^2.0.2", 387 | "@nodelib/fs.walk": "^1.2.3", 388 | "glob-parent": "^5.1.2", 389 | "merge2": "^1.3.0", 390 | "micromatch": "^4.0.4" 391 | }, 392 | "engines": { 393 | "node": ">=8.6.0" 394 | } 395 | }, 396 | "node_modules/fast-glob/node_modules/glob-parent": { 397 | "version": "5.1.2", 398 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 399 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 400 | "dev": true, 401 | "license": "ISC", 402 | "dependencies": { 403 | "is-glob": "^4.0.1" 404 | }, 405 | "engines": { 406 | "node": ">= 6" 407 | } 408 | }, 409 | "node_modules/fastq": { 410 | "version": "1.17.1", 411 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 412 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 413 | "dev": true, 414 | "license": "ISC", 415 | "dependencies": { 416 | "reusify": "^1.0.4" 417 | } 418 | }, 419 | "node_modules/fill-range": { 420 | "version": "7.1.1", 421 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 422 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 423 | "dev": true, 424 | "license": "MIT", 425 | "dependencies": { 426 | "to-regex-range": "^5.0.1" 427 | }, 428 | "engines": { 429 | "node": ">=8" 430 | } 431 | }, 432 | "node_modules/foreground-child": { 433 | "version": "3.2.1", 434 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", 435 | "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", 436 | "dev": true, 437 | "license": "ISC", 438 | "dependencies": { 439 | "cross-spawn": "^7.0.0", 440 | "signal-exit": "^4.0.1" 441 | }, 442 | "engines": { 443 | "node": ">=14" 444 | }, 445 | "funding": { 446 | "url": "https://github.com/sponsors/isaacs" 447 | } 448 | }, 449 | "node_modules/fsevents": { 450 | "version": "2.3.3", 451 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 452 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 453 | "dev": true, 454 | "hasInstallScript": true, 455 | "license": "MIT", 456 | "optional": true, 457 | "os": [ 458 | "darwin" 459 | ], 460 | "engines": { 461 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 462 | } 463 | }, 464 | "node_modules/function-bind": { 465 | "version": "1.1.2", 466 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 467 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 468 | "dev": true, 469 | "license": "MIT", 470 | "funding": { 471 | "url": "https://github.com/sponsors/ljharb" 472 | } 473 | }, 474 | "node_modules/glob": { 475 | "version": "10.4.1", 476 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", 477 | "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", 478 | "dev": true, 479 | "license": "ISC", 480 | "dependencies": { 481 | "foreground-child": "^3.1.0", 482 | "jackspeak": "^3.1.2", 483 | "minimatch": "^9.0.4", 484 | "minipass": "^7.1.2", 485 | "path-scurry": "^1.11.1" 486 | }, 487 | "bin": { 488 | "glob": "dist/esm/bin.mjs" 489 | }, 490 | "engines": { 491 | "node": ">=16 || 14 >=14.18" 492 | }, 493 | "funding": { 494 | "url": "https://github.com/sponsors/isaacs" 495 | } 496 | }, 497 | "node_modules/glob-parent": { 498 | "version": "6.0.2", 499 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 500 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 501 | "dev": true, 502 | "license": "ISC", 503 | "dependencies": { 504 | "is-glob": "^4.0.3" 505 | }, 506 | "engines": { 507 | "node": ">=10.13.0" 508 | } 509 | }, 510 | "node_modules/hasown": { 511 | "version": "2.0.2", 512 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 513 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 514 | "dev": true, 515 | "license": "MIT", 516 | "dependencies": { 517 | "function-bind": "^1.1.2" 518 | }, 519 | "engines": { 520 | "node": ">= 0.4" 521 | } 522 | }, 523 | "node_modules/is-binary-path": { 524 | "version": "2.1.0", 525 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 526 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 527 | "dev": true, 528 | "license": "MIT", 529 | "dependencies": { 530 | "binary-extensions": "^2.0.0" 531 | }, 532 | "engines": { 533 | "node": ">=8" 534 | } 535 | }, 536 | "node_modules/is-core-module": { 537 | "version": "2.13.1", 538 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", 539 | "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", 540 | "dev": true, 541 | "license": "MIT", 542 | "dependencies": { 543 | "hasown": "^2.0.0" 544 | }, 545 | "funding": { 546 | "url": "https://github.com/sponsors/ljharb" 547 | } 548 | }, 549 | "node_modules/is-extglob": { 550 | "version": "2.1.1", 551 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 552 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 553 | "dev": true, 554 | "license": "MIT", 555 | "engines": { 556 | "node": ">=0.10.0" 557 | } 558 | }, 559 | "node_modules/is-fullwidth-code-point": { 560 | "version": "3.0.0", 561 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 562 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 563 | "dev": true, 564 | "license": "MIT", 565 | "engines": { 566 | "node": ">=8" 567 | } 568 | }, 569 | "node_modules/is-glob": { 570 | "version": "4.0.3", 571 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 572 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 573 | "dev": true, 574 | "license": "MIT", 575 | "dependencies": { 576 | "is-extglob": "^2.1.1" 577 | }, 578 | "engines": { 579 | "node": ">=0.10.0" 580 | } 581 | }, 582 | "node_modules/is-number": { 583 | "version": "7.0.0", 584 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 585 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 586 | "dev": true, 587 | "license": "MIT", 588 | "engines": { 589 | "node": ">=0.12.0" 590 | } 591 | }, 592 | "node_modules/isexe": { 593 | "version": "2.0.0", 594 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 595 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 596 | "dev": true, 597 | "license": "ISC" 598 | }, 599 | "node_modules/jackspeak": { 600 | "version": "3.4.0", 601 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", 602 | "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", 603 | "dev": true, 604 | "license": "BlueOak-1.0.0", 605 | "dependencies": { 606 | "@isaacs/cliui": "^8.0.2" 607 | }, 608 | "engines": { 609 | "node": ">=14" 610 | }, 611 | "funding": { 612 | "url": "https://github.com/sponsors/isaacs" 613 | }, 614 | "optionalDependencies": { 615 | "@pkgjs/parseargs": "^0.11.0" 616 | } 617 | }, 618 | "node_modules/jiti": { 619 | "version": "1.21.6", 620 | "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", 621 | "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", 622 | "dev": true, 623 | "license": "MIT", 624 | "bin": { 625 | "jiti": "bin/jiti.js" 626 | } 627 | }, 628 | "node_modules/lilconfig": { 629 | "version": "2.1.0", 630 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", 631 | "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", 632 | "dev": true, 633 | "license": "MIT", 634 | "engines": { 635 | "node": ">=10" 636 | } 637 | }, 638 | "node_modules/lines-and-columns": { 639 | "version": "1.2.4", 640 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 641 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 642 | "dev": true, 643 | "license": "MIT" 644 | }, 645 | "node_modules/lru-cache": { 646 | "version": "10.2.2", 647 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", 648 | "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", 649 | "dev": true, 650 | "license": "ISC", 651 | "engines": { 652 | "node": "14 || >=16.14" 653 | } 654 | }, 655 | "node_modules/merge2": { 656 | "version": "1.4.1", 657 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 658 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 659 | "dev": true, 660 | "license": "MIT", 661 | "engines": { 662 | "node": ">= 8" 663 | } 664 | }, 665 | "node_modules/micromatch": { 666 | "version": "4.0.7", 667 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", 668 | "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", 669 | "dev": true, 670 | "license": "MIT", 671 | "dependencies": { 672 | "braces": "^3.0.3", 673 | "picomatch": "^2.3.1" 674 | }, 675 | "engines": { 676 | "node": ">=8.6" 677 | } 678 | }, 679 | "node_modules/minimatch": { 680 | "version": "9.0.4", 681 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", 682 | "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", 683 | "dev": true, 684 | "license": "ISC", 685 | "dependencies": { 686 | "brace-expansion": "^2.0.1" 687 | }, 688 | "engines": { 689 | "node": ">=16 || 14 >=14.17" 690 | }, 691 | "funding": { 692 | "url": "https://github.com/sponsors/isaacs" 693 | } 694 | }, 695 | "node_modules/minipass": { 696 | "version": "7.1.2", 697 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 698 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 699 | "dev": true, 700 | "license": "ISC", 701 | "engines": { 702 | "node": ">=16 || 14 >=14.17" 703 | } 704 | }, 705 | "node_modules/mz": { 706 | "version": "2.7.0", 707 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", 708 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", 709 | "dev": true, 710 | "license": "MIT", 711 | "dependencies": { 712 | "any-promise": "^1.0.0", 713 | "object-assign": "^4.0.1", 714 | "thenify-all": "^1.0.0" 715 | } 716 | }, 717 | "node_modules/nanoid": { 718 | "version": "3.3.7", 719 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 720 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 721 | "dev": true, 722 | "funding": [ 723 | { 724 | "type": "github", 725 | "url": "https://github.com/sponsors/ai" 726 | } 727 | ], 728 | "license": "MIT", 729 | "bin": { 730 | "nanoid": "bin/nanoid.cjs" 731 | }, 732 | "engines": { 733 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 734 | } 735 | }, 736 | "node_modules/normalize-path": { 737 | "version": "3.0.0", 738 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 739 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 740 | "dev": true, 741 | "license": "MIT", 742 | "engines": { 743 | "node": ">=0.10.0" 744 | } 745 | }, 746 | "node_modules/object-assign": { 747 | "version": "4.1.1", 748 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 749 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 750 | "dev": true, 751 | "license": "MIT", 752 | "engines": { 753 | "node": ">=0.10.0" 754 | } 755 | }, 756 | "node_modules/object-hash": { 757 | "version": "3.0.0", 758 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", 759 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", 760 | "dev": true, 761 | "license": "MIT", 762 | "engines": { 763 | "node": ">= 6" 764 | } 765 | }, 766 | "node_modules/path-key": { 767 | "version": "3.1.1", 768 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 769 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 770 | "dev": true, 771 | "license": "MIT", 772 | "engines": { 773 | "node": ">=8" 774 | } 775 | }, 776 | "node_modules/path-parse": { 777 | "version": "1.0.7", 778 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 779 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 780 | "dev": true, 781 | "license": "MIT" 782 | }, 783 | "node_modules/path-scurry": { 784 | "version": "1.11.1", 785 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 786 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 787 | "dev": true, 788 | "license": "BlueOak-1.0.0", 789 | "dependencies": { 790 | "lru-cache": "^10.2.0", 791 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 792 | }, 793 | "engines": { 794 | "node": ">=16 || 14 >=14.18" 795 | }, 796 | "funding": { 797 | "url": "https://github.com/sponsors/isaacs" 798 | } 799 | }, 800 | "node_modules/picocolors": { 801 | "version": "1.0.1", 802 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", 803 | "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", 804 | "dev": true, 805 | "license": "ISC" 806 | }, 807 | "node_modules/picomatch": { 808 | "version": "2.3.1", 809 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 810 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 811 | "dev": true, 812 | "license": "MIT", 813 | "engines": { 814 | "node": ">=8.6" 815 | }, 816 | "funding": { 817 | "url": "https://github.com/sponsors/jonschlinkert" 818 | } 819 | }, 820 | "node_modules/pify": { 821 | "version": "2.3.0", 822 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 823 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 824 | "dev": true, 825 | "license": "MIT", 826 | "engines": { 827 | "node": ">=0.10.0" 828 | } 829 | }, 830 | "node_modules/pirates": { 831 | "version": "4.0.6", 832 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", 833 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", 834 | "dev": true, 835 | "license": "MIT", 836 | "engines": { 837 | "node": ">= 6" 838 | } 839 | }, 840 | "node_modules/postcss": { 841 | "version": "8.4.38", 842 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", 843 | "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", 844 | "dev": true, 845 | "funding": [ 846 | { 847 | "type": "opencollective", 848 | "url": "https://opencollective.com/postcss/" 849 | }, 850 | { 851 | "type": "tidelift", 852 | "url": "https://tidelift.com/funding/github/npm/postcss" 853 | }, 854 | { 855 | "type": "github", 856 | "url": "https://github.com/sponsors/ai" 857 | } 858 | ], 859 | "license": "MIT", 860 | "dependencies": { 861 | "nanoid": "^3.3.7", 862 | "picocolors": "^1.0.0", 863 | "source-map-js": "^1.2.0" 864 | }, 865 | "engines": { 866 | "node": "^10 || ^12 || >=14" 867 | } 868 | }, 869 | "node_modules/postcss-import": { 870 | "version": "15.1.0", 871 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", 872 | "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", 873 | "dev": true, 874 | "license": "MIT", 875 | "dependencies": { 876 | "postcss-value-parser": "^4.0.0", 877 | "read-cache": "^1.0.0", 878 | "resolve": "^1.1.7" 879 | }, 880 | "engines": { 881 | "node": ">=14.0.0" 882 | }, 883 | "peerDependencies": { 884 | "postcss": "^8.0.0" 885 | } 886 | }, 887 | "node_modules/postcss-js": { 888 | "version": "4.0.1", 889 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", 890 | "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", 891 | "dev": true, 892 | "license": "MIT", 893 | "dependencies": { 894 | "camelcase-css": "^2.0.1" 895 | }, 896 | "engines": { 897 | "node": "^12 || ^14 || >= 16" 898 | }, 899 | "funding": { 900 | "type": "opencollective", 901 | "url": "https://opencollective.com/postcss/" 902 | }, 903 | "peerDependencies": { 904 | "postcss": "^8.4.21" 905 | } 906 | }, 907 | "node_modules/postcss-load-config": { 908 | "version": "4.0.2", 909 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", 910 | "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", 911 | "dev": true, 912 | "funding": [ 913 | { 914 | "type": "opencollective", 915 | "url": "https://opencollective.com/postcss/" 916 | }, 917 | { 918 | "type": "github", 919 | "url": "https://github.com/sponsors/ai" 920 | } 921 | ], 922 | "license": "MIT", 923 | "dependencies": { 924 | "lilconfig": "^3.0.0", 925 | "yaml": "^2.3.4" 926 | }, 927 | "engines": { 928 | "node": ">= 14" 929 | }, 930 | "peerDependencies": { 931 | "postcss": ">=8.0.9", 932 | "ts-node": ">=9.0.0" 933 | }, 934 | "peerDependenciesMeta": { 935 | "postcss": { 936 | "optional": true 937 | }, 938 | "ts-node": { 939 | "optional": true 940 | } 941 | } 942 | }, 943 | "node_modules/postcss-load-config/node_modules/lilconfig": { 944 | "version": "3.1.2", 945 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", 946 | "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", 947 | "dev": true, 948 | "license": "MIT", 949 | "engines": { 950 | "node": ">=14" 951 | }, 952 | "funding": { 953 | "url": "https://github.com/sponsors/antonk52" 954 | } 955 | }, 956 | "node_modules/postcss-nested": { 957 | "version": "6.0.1", 958 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", 959 | "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", 960 | "dev": true, 961 | "license": "MIT", 962 | "dependencies": { 963 | "postcss-selector-parser": "^6.0.11" 964 | }, 965 | "engines": { 966 | "node": ">=12.0" 967 | }, 968 | "funding": { 969 | "type": "opencollective", 970 | "url": "https://opencollective.com/postcss/" 971 | }, 972 | "peerDependencies": { 973 | "postcss": "^8.2.14" 974 | } 975 | }, 976 | "node_modules/postcss-selector-parser": { 977 | "version": "6.1.0", 978 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", 979 | "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", 980 | "dev": true, 981 | "license": "MIT", 982 | "dependencies": { 983 | "cssesc": "^3.0.0", 984 | "util-deprecate": "^1.0.2" 985 | }, 986 | "engines": { 987 | "node": ">=4" 988 | } 989 | }, 990 | "node_modules/postcss-value-parser": { 991 | "version": "4.2.0", 992 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 993 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 994 | "dev": true, 995 | "license": "MIT" 996 | }, 997 | "node_modules/queue-microtask": { 998 | "version": "1.2.3", 999 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1000 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1001 | "dev": true, 1002 | "funding": [ 1003 | { 1004 | "type": "github", 1005 | "url": "https://github.com/sponsors/feross" 1006 | }, 1007 | { 1008 | "type": "patreon", 1009 | "url": "https://www.patreon.com/feross" 1010 | }, 1011 | { 1012 | "type": "consulting", 1013 | "url": "https://feross.org/support" 1014 | } 1015 | ], 1016 | "license": "MIT" 1017 | }, 1018 | "node_modules/read-cache": { 1019 | "version": "1.0.0", 1020 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", 1021 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", 1022 | "dev": true, 1023 | "license": "MIT", 1024 | "dependencies": { 1025 | "pify": "^2.3.0" 1026 | } 1027 | }, 1028 | "node_modules/readdirp": { 1029 | "version": "3.6.0", 1030 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1031 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1032 | "dev": true, 1033 | "license": "MIT", 1034 | "dependencies": { 1035 | "picomatch": "^2.2.1" 1036 | }, 1037 | "engines": { 1038 | "node": ">=8.10.0" 1039 | } 1040 | }, 1041 | "node_modules/resolve": { 1042 | "version": "1.22.8", 1043 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 1044 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 1045 | "dev": true, 1046 | "license": "MIT", 1047 | "dependencies": { 1048 | "is-core-module": "^2.13.0", 1049 | "path-parse": "^1.0.7", 1050 | "supports-preserve-symlinks-flag": "^1.0.0" 1051 | }, 1052 | "bin": { 1053 | "resolve": "bin/resolve" 1054 | }, 1055 | "funding": { 1056 | "url": "https://github.com/sponsors/ljharb" 1057 | } 1058 | }, 1059 | "node_modules/reusify": { 1060 | "version": "1.0.4", 1061 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1062 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1063 | "dev": true, 1064 | "license": "MIT", 1065 | "engines": { 1066 | "iojs": ">=1.0.0", 1067 | "node": ">=0.10.0" 1068 | } 1069 | }, 1070 | "node_modules/run-parallel": { 1071 | "version": "1.2.0", 1072 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1073 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1074 | "dev": true, 1075 | "funding": [ 1076 | { 1077 | "type": "github", 1078 | "url": "https://github.com/sponsors/feross" 1079 | }, 1080 | { 1081 | "type": "patreon", 1082 | "url": "https://www.patreon.com/feross" 1083 | }, 1084 | { 1085 | "type": "consulting", 1086 | "url": "https://feross.org/support" 1087 | } 1088 | ], 1089 | "license": "MIT", 1090 | "dependencies": { 1091 | "queue-microtask": "^1.2.2" 1092 | } 1093 | }, 1094 | "node_modules/shebang-command": { 1095 | "version": "2.0.0", 1096 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1097 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1098 | "dev": true, 1099 | "license": "MIT", 1100 | "dependencies": { 1101 | "shebang-regex": "^3.0.0" 1102 | }, 1103 | "engines": { 1104 | "node": ">=8" 1105 | } 1106 | }, 1107 | "node_modules/shebang-regex": { 1108 | "version": "3.0.0", 1109 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1110 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1111 | "dev": true, 1112 | "license": "MIT", 1113 | "engines": { 1114 | "node": ">=8" 1115 | } 1116 | }, 1117 | "node_modules/signal-exit": { 1118 | "version": "4.1.0", 1119 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 1120 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 1121 | "dev": true, 1122 | "license": "ISC", 1123 | "engines": { 1124 | "node": ">=14" 1125 | }, 1126 | "funding": { 1127 | "url": "https://github.com/sponsors/isaacs" 1128 | } 1129 | }, 1130 | "node_modules/source-map-js": { 1131 | "version": "1.2.0", 1132 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", 1133 | "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", 1134 | "dev": true, 1135 | "license": "BSD-3-Clause", 1136 | "engines": { 1137 | "node": ">=0.10.0" 1138 | } 1139 | }, 1140 | "node_modules/string-width": { 1141 | "version": "5.1.2", 1142 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 1143 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 1144 | "dev": true, 1145 | "license": "MIT", 1146 | "dependencies": { 1147 | "eastasianwidth": "^0.2.0", 1148 | "emoji-regex": "^9.2.2", 1149 | "strip-ansi": "^7.0.1" 1150 | }, 1151 | "engines": { 1152 | "node": ">=12" 1153 | }, 1154 | "funding": { 1155 | "url": "https://github.com/sponsors/sindresorhus" 1156 | } 1157 | }, 1158 | "node_modules/string-width-cjs": { 1159 | "name": "string-width", 1160 | "version": "4.2.3", 1161 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1162 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1163 | "dev": true, 1164 | "license": "MIT", 1165 | "dependencies": { 1166 | "emoji-regex": "^8.0.0", 1167 | "is-fullwidth-code-point": "^3.0.0", 1168 | "strip-ansi": "^6.0.1" 1169 | }, 1170 | "engines": { 1171 | "node": ">=8" 1172 | } 1173 | }, 1174 | "node_modules/string-width-cjs/node_modules/ansi-regex": { 1175 | "version": "5.0.1", 1176 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1177 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1178 | "dev": true, 1179 | "license": "MIT", 1180 | "engines": { 1181 | "node": ">=8" 1182 | } 1183 | }, 1184 | "node_modules/string-width-cjs/node_modules/emoji-regex": { 1185 | "version": "8.0.0", 1186 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1187 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1188 | "dev": true, 1189 | "license": "MIT" 1190 | }, 1191 | "node_modules/string-width-cjs/node_modules/strip-ansi": { 1192 | "version": "6.0.1", 1193 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1194 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1195 | "dev": true, 1196 | "license": "MIT", 1197 | "dependencies": { 1198 | "ansi-regex": "^5.0.1" 1199 | }, 1200 | "engines": { 1201 | "node": ">=8" 1202 | } 1203 | }, 1204 | "node_modules/strip-ansi": { 1205 | "version": "7.1.0", 1206 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 1207 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 1208 | "dev": true, 1209 | "license": "MIT", 1210 | "dependencies": { 1211 | "ansi-regex": "^6.0.1" 1212 | }, 1213 | "engines": { 1214 | "node": ">=12" 1215 | }, 1216 | "funding": { 1217 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 1218 | } 1219 | }, 1220 | "node_modules/strip-ansi-cjs": { 1221 | "name": "strip-ansi", 1222 | "version": "6.0.1", 1223 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1224 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1225 | "dev": true, 1226 | "license": "MIT", 1227 | "dependencies": { 1228 | "ansi-regex": "^5.0.1" 1229 | }, 1230 | "engines": { 1231 | "node": ">=8" 1232 | } 1233 | }, 1234 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { 1235 | "version": "5.0.1", 1236 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1237 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1238 | "dev": true, 1239 | "license": "MIT", 1240 | "engines": { 1241 | "node": ">=8" 1242 | } 1243 | }, 1244 | "node_modules/sucrase": { 1245 | "version": "3.35.0", 1246 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", 1247 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", 1248 | "dev": true, 1249 | "license": "MIT", 1250 | "dependencies": { 1251 | "@jridgewell/gen-mapping": "^0.3.2", 1252 | "commander": "^4.0.0", 1253 | "glob": "^10.3.10", 1254 | "lines-and-columns": "^1.1.6", 1255 | "mz": "^2.7.0", 1256 | "pirates": "^4.0.1", 1257 | "ts-interface-checker": "^0.1.9" 1258 | }, 1259 | "bin": { 1260 | "sucrase": "bin/sucrase", 1261 | "sucrase-node": "bin/sucrase-node" 1262 | }, 1263 | "engines": { 1264 | "node": ">=16 || 14 >=14.17" 1265 | } 1266 | }, 1267 | "node_modules/supports-preserve-symlinks-flag": { 1268 | "version": "1.0.0", 1269 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1270 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1271 | "dev": true, 1272 | "license": "MIT", 1273 | "engines": { 1274 | "node": ">= 0.4" 1275 | }, 1276 | "funding": { 1277 | "url": "https://github.com/sponsors/ljharb" 1278 | } 1279 | }, 1280 | "node_modules/tailwindcss": { 1281 | "version": "3.4.4", 1282 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", 1283 | "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", 1284 | "dev": true, 1285 | "license": "MIT", 1286 | "dependencies": { 1287 | "@alloc/quick-lru": "^5.2.0", 1288 | "arg": "^5.0.2", 1289 | "chokidar": "^3.5.3", 1290 | "didyoumean": "^1.2.2", 1291 | "dlv": "^1.1.3", 1292 | "fast-glob": "^3.3.0", 1293 | "glob-parent": "^6.0.2", 1294 | "is-glob": "^4.0.3", 1295 | "jiti": "^1.21.0", 1296 | "lilconfig": "^2.1.0", 1297 | "micromatch": "^4.0.5", 1298 | "normalize-path": "^3.0.0", 1299 | "object-hash": "^3.0.0", 1300 | "picocolors": "^1.0.0", 1301 | "postcss": "^8.4.23", 1302 | "postcss-import": "^15.1.0", 1303 | "postcss-js": "^4.0.1", 1304 | "postcss-load-config": "^4.0.1", 1305 | "postcss-nested": "^6.0.1", 1306 | "postcss-selector-parser": "^6.0.11", 1307 | "resolve": "^1.22.2", 1308 | "sucrase": "^3.32.0" 1309 | }, 1310 | "bin": { 1311 | "tailwind": "lib/cli.js", 1312 | "tailwindcss": "lib/cli.js" 1313 | }, 1314 | "engines": { 1315 | "node": ">=14.0.0" 1316 | } 1317 | }, 1318 | "node_modules/thenify": { 1319 | "version": "3.3.1", 1320 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", 1321 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", 1322 | "dev": true, 1323 | "license": "MIT", 1324 | "dependencies": { 1325 | "any-promise": "^1.0.0" 1326 | } 1327 | }, 1328 | "node_modules/thenify-all": { 1329 | "version": "1.6.0", 1330 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", 1331 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", 1332 | "dev": true, 1333 | "license": "MIT", 1334 | "dependencies": { 1335 | "thenify": ">= 3.1.0 < 4" 1336 | }, 1337 | "engines": { 1338 | "node": ">=0.8" 1339 | } 1340 | }, 1341 | "node_modules/to-regex-range": { 1342 | "version": "5.0.1", 1343 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1344 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1345 | "dev": true, 1346 | "license": "MIT", 1347 | "dependencies": { 1348 | "is-number": "^7.0.0" 1349 | }, 1350 | "engines": { 1351 | "node": ">=8.0" 1352 | } 1353 | }, 1354 | "node_modules/ts-interface-checker": { 1355 | "version": "0.1.13", 1356 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", 1357 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", 1358 | "dev": true, 1359 | "license": "Apache-2.0" 1360 | }, 1361 | "node_modules/util-deprecate": { 1362 | "version": "1.0.2", 1363 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1364 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 1365 | "dev": true, 1366 | "license": "MIT" 1367 | }, 1368 | "node_modules/which": { 1369 | "version": "2.0.2", 1370 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1371 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1372 | "dev": true, 1373 | "license": "ISC", 1374 | "dependencies": { 1375 | "isexe": "^2.0.0" 1376 | }, 1377 | "bin": { 1378 | "node-which": "bin/node-which" 1379 | }, 1380 | "engines": { 1381 | "node": ">= 8" 1382 | } 1383 | }, 1384 | "node_modules/wrap-ansi": { 1385 | "version": "8.1.0", 1386 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 1387 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 1388 | "dev": true, 1389 | "license": "MIT", 1390 | "dependencies": { 1391 | "ansi-styles": "^6.1.0", 1392 | "string-width": "^5.0.1", 1393 | "strip-ansi": "^7.0.1" 1394 | }, 1395 | "engines": { 1396 | "node": ">=12" 1397 | }, 1398 | "funding": { 1399 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1400 | } 1401 | }, 1402 | "node_modules/wrap-ansi-cjs": { 1403 | "name": "wrap-ansi", 1404 | "version": "7.0.0", 1405 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1406 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1407 | "dev": true, 1408 | "license": "MIT", 1409 | "dependencies": { 1410 | "ansi-styles": "^4.0.0", 1411 | "string-width": "^4.1.0", 1412 | "strip-ansi": "^6.0.0" 1413 | }, 1414 | "engines": { 1415 | "node": ">=10" 1416 | }, 1417 | "funding": { 1418 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1419 | } 1420 | }, 1421 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { 1422 | "version": "5.0.1", 1423 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1424 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1425 | "dev": true, 1426 | "license": "MIT", 1427 | "engines": { 1428 | "node": ">=8" 1429 | } 1430 | }, 1431 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { 1432 | "version": "4.3.0", 1433 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1434 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1435 | "dev": true, 1436 | "license": "MIT", 1437 | "dependencies": { 1438 | "color-convert": "^2.0.1" 1439 | }, 1440 | "engines": { 1441 | "node": ">=8" 1442 | }, 1443 | "funding": { 1444 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1445 | } 1446 | }, 1447 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { 1448 | "version": "8.0.0", 1449 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1450 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1451 | "dev": true, 1452 | "license": "MIT" 1453 | }, 1454 | "node_modules/wrap-ansi-cjs/node_modules/string-width": { 1455 | "version": "4.2.3", 1456 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1457 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1458 | "dev": true, 1459 | "license": "MIT", 1460 | "dependencies": { 1461 | "emoji-regex": "^8.0.0", 1462 | "is-fullwidth-code-point": "^3.0.0", 1463 | "strip-ansi": "^6.0.1" 1464 | }, 1465 | "engines": { 1466 | "node": ">=8" 1467 | } 1468 | }, 1469 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { 1470 | "version": "6.0.1", 1471 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1472 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1473 | "dev": true, 1474 | "license": "MIT", 1475 | "dependencies": { 1476 | "ansi-regex": "^5.0.1" 1477 | }, 1478 | "engines": { 1479 | "node": ">=8" 1480 | } 1481 | }, 1482 | "node_modules/yaml": { 1483 | "version": "2.4.5", 1484 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", 1485 | "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", 1486 | "dev": true, 1487 | "license": "ISC", 1488 | "bin": { 1489 | "yaml": "bin.mjs" 1490 | }, 1491 | "engines": { 1492 | "node": ">= 14" 1493 | } 1494 | } 1495 | } 1496 | } 1497 | --------------------------------------------------------------------------------