├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ └── feature_request.md ├── CONTRIBUTING.md ├── README.md ├── README_ar.md ├── README_bn.md ├── README_es.md ├── README_fr.md ├── README_hi.md ├── README_sv.md ├── icons ├── icon128.png ├── icon16.png ├── icon19.png └── icon48.png ├── manifest.json └── src ├── backend ├── extra_upcoming.js ├── modules │ └── storage.js └── netflixHelper.js └── popup ├── .gitignore ├── package-lock.json ├── package.json ├── public ├── favicon.png ├── global.css ├── icon128.png └── index.html ├── rollup.config.js ├── scripts └── setupTypeScript.js └── src ├── App.svelte ├── components ├── footer.svelte ├── header.svelte ├── hideSections.svelte └── refresh.svelte ├── main.js └── modules └── storage.js /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: sarequl 4 | ko_fi: sarequl 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to this repository 2 | ## Getting started 3 | 4 | - [Fork the repository](https://github.com/sarequl/Netflix-Helper/fork) and clone it locally 5 | - Install dependencies with npm install. 6 | - Run `npm run start` 7 | - Open _`chrome://extensions`_ on your browser and Enable developer mode 8 | - Click _`load unpacked`_ and select your folder which you cloned 9 | - Start coding 10 | - Submit a PR 11 | 12 | #Notes 13 | - Svelte Files Location: _`src/popup`_ 14 | - Background File Location: _`src/backend`_ 15 | 16 | 17 | Please follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) in your commit messages. 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Netflix-Helper 2 | 3 | ### Note 4 | 5 | This Netflix extension controls volume with the mouse wheel, and auto skip intros. 6 | I originally created this for myself, but my friends suggested I make it publicly available since they found it useful - so here it is, free for you! 🙂 7 | 8 | ### All Features 9 | 10 | This extension currently has these features. 11 | 12 | | Features | Status | 13 | | ------------------------------------------------ | ----------- | 14 | | Cool UI | Yes | 15 | | On / Off Extension with a button | Yes | 16 | | Control volume with mouse | Yes | 17 | | Auto Skip Intro | Yes | 18 | | Hide Sections that you don't like | Yes | 19 | | Keyboard Shortcut | Yes | 20 | | Assign mouse/keyboard button for different tasks | Coming soon | 21 | 22 | --- 23 | 24 | ## Install Now 25 | 26 | ##### [Chrome](https://chrome.google.com/webstore/detail/netflix-helper/mlfdbphlfojgfeepjojcalginhedfpnk) 27 | 28 | ##### [Firefox](https://addons.mozilla.org/en-US/firefox/addon/netflix-helper/) 29 | 30 | --- 31 | 32 | # Changelog 33 | 34 | ### Changelog 2.1.0 35 | 36 | 1. Fixed (auto skip intro, auto skip recap, auto skip outro). 37 | 2. Auto Next Episode. 38 | 3. manifest version 3 39 | 4. Feel free to create an issue about what shortcut you need. 40 | 41 | ### Changelog 2.0.2 42 | 43 | 1. Added Keyboard Shortcut. (Press N for Next Episode) 44 | 2. Feel free to create an issue about what shortcut you need. 45 | 46 | ### Changelog 2.0 47 | 48 | 1. Added UI for the extension. 49 | 2. On / Off extension functionality with a button. 50 | 3. Hide Sections that you don't like. 51 | 4. Reload Button (after any changes). 52 | 5. Added more bugs to fix later :joy: 53 | 54 | ### Changelog 1.0 55 | 56 | 1. Control volume with mouse. 57 | 2. Auto Skip Intro 58 | 59 | [](https://ko-fi.com/sarequl) 60 | -------------------------------------------------------------------------------- /README_ar.md: -------------------------------------------------------------------------------- 1 | # Netflix-Helper 2 | 3 | ### ملاحظة 4 | 5 | يتحكم امتداد Netflix هذا في مستوى الصوت باستخدام عجلة الماوس ومقدمات التخطي التلقائي. 6 | لقد أنشأت هذا في الأصل لنفسي ، لكن أصدقائي اقترحوا أن أجعله متاحًا للجمهور لأنهم وجدوه مفيدًا - لذا فهو هنا مجانًا لك! 🙂 7 | 8 | ### كل الميزات 9 | 10 | يحتوي هذا الامتداد حاليًا على هذه الميزات. 11 | 12 | | سمات | حالة | 13 | | ------------------------------------------------ | ----------- | 14 | | بارد UI | Yes نعم | 15 | | تمديد تشغيل / إيقاف مع زر | Yes نعم | 16 | | التحكم في مستوى الصوت بالماوس | Yes نعم | 17 | | مقدمة التخطي التلقائي | Yes نعم | 18 | | إخفاء الأقسام التي لا تحبها | Yes نعم | 19 | | اختصار لوحة المفاتيح | Yes نعم | 20 | | قم بتعيين زر الماوس / لوحة المفاتيح لمهام مختلفة soon | قريبا | 21 | 22 | --- 23 | 24 | ## تثبيت الآن 25 | 26 | ##### [Chrome](https://chrome.google.com/webstore/detail/netflix-helper/mlfdbphlfojgfeepjojcalginhedfpnk) 27 | 28 | ##### [Firefox](https://addons.mozilla.org/en-US/firefox/addon/netflix-helper/) 29 | 30 | --- 31 | 32 | # Changelog 33 | 34 | ### Changelog 2.1.0 35 | 36 | 1. ثابت (مقدمة تخطي تلقائي ، تلخيص تخطي تلقائي ، خاتمة تخطي تلقائي). 37 | 2. الحلقة القادمة السيارات. 38 | 3. إصدار البيان 3 39 | 4. لا تتردد في إنشاء مشكلة حول الاختصار الذي تحتاجه. 40 | 41 | ### Changelog 2.0.2 42 | 43 | 1. إضافة اختصار لوحة المفاتيح. (اضغط على N للحلقة التالية) 44 | 2. لا تتردد في إنشاء مشكلة حول الاختصار الذي تحتاجه. 45 | 46 | ### Changelog 2.0 47 | 48 | 1. تمت إضافة واجهة مستخدم للتمديد. 49 | 2. تشغيل / إيقاف وظيفة تمديد مع زر. 50 | 3. إخفاء الأقسام التي لا تحبها. 51 | 4. زر إعادة التحميل (بعد أي تغييرات). 52 | 5. تمت إضافة المزيد من الأخطاء لإصلاحها لاحقًا: الفرح: 53 | 54 | ### Changelog 1.0 55 | 56 | 1. التحكم في مستوى الصوت بالماوس. 57 | 2. تخطي مقدمة السيارات 58 | 59 | [](https://ko-fi.com/sarequl) 60 | -------------------------------------------------------------------------------- /README_bn.md: -------------------------------------------------------------------------------- 1 | # Netflix-Helper (নেটফ্লিক্স-সহায়ক) 2 | 3 | ### বিঃদ্রঃ 4 | 5 | এই Netflix (নেটফ্লিক্স) এক্সটেনশন মাউস চাকা দিয়ে ভলিউম নিয়ন্ত্রণ করে, এবং স্বয়ংক্রিয়ভাবে স্কিপ ইন্ট্রো। 6 | আমি মূলত এটি নিজের জন্য তৈরি করেছি, কিন্তু আমার বন্ধুরা পরামর্শ দিয়েছে যে আমি এটিকে সর্বজনীনভাবে উপলব্ধ করব কারণ তারা এটিকে দরকারী বলে মনে করেছে - তাই এখানে এটি আপনার জন্য বিনামূল্যে!🙂 7 | 8 | ### সমস্ত বৈশিষ্ট্য 9 | 10 | এই এক্সটেনশনে বর্তমানে এই বৈশিষ্ট্যগুলি রয়েছে। 11 | 12 | | বৈশিষ্ট্য | অবস্থা | 13 | | ------------------------------------------------ | ----------- | 14 | | কুল UI | হ্যাঁ | 15 | | একটি বোতাম দিয়ে এক্সটেনশন চালু / বন্ধ করুন | হ্যাঁ | 16 | | মাউস দিয়ে ভলিউম নিয়ন্ত্রণ করু ন | হ্যাঁ | 17 | | অটো স্কিপ ইন্ট্রো | হ্যাঁ | 18 | | আপনি পছন্দ করেন না এমন বিভাগগুলি লুকান | হ্যাঁ | 19 | | কীবোর্ড শর্টকাট | হ্যাঁ | 20 | | বিভিন্ন কাজের জন্য মাউস/কীবোর্ড বোতাম বরাদ্দ করুন | শীঘ্রই আসছে | 21 | 22 | --- 23 | 24 | ## [Install Here (এখানে ইনস্টল করুন)](https://chrome.google.com/webstore/detail/netflix-helper/mlfdbphlfojgfeepjojcalginhedfpnk) 25 | 26 | --- 27 | 28 | # Changelog (চ্যাঞ্জেলগ) 29 | 30 | ### Changelog (চ্যাঞ্জেলগ) 2.0.2 31 | 32 | 1. কীবোর্ড শর্টকাট যোগ করা হয়েছে। (পরবর্তী পর্বের জন্য N টিপুন) 33 | 2. আপনি কি শর্টকাট প্রয়োজন একটি সমস্যা তৈরি করতে নির্দ্বিধায়। 34 | 35 | ### Changelog (চ্যাঞ্জেলগ) 2.0 36 | 37 | 1. এক্সটেনশনের জন্য UI যোগ করা হয়েছে। 38 | 2. একটি বোতাম সহ এক্সটেনশন কার্যকারিতা চালু / বন্ধ। 39 | 3. সেকশনগুলি লুকান যা আপনি পছন্দ করেন না। 40 | 4. পুনরায় লোড বোতাম (কোন পরিবর্তন পরে)। 41 | 5. পরবর্তীতে সংশোধন করার জন্য আরো বাগ যোগ করা হয়েছে: আনন্দ: 42 | 43 | ### Changelog (চ্যাঞ্জেলগ) 1.0 44 | 45 | 1. মাউস দিয়ে ভলিউম নিয়ন্ত্রণ করুন। 46 | 2. অটো স্কিপ ইন্ট্রো 47 | 48 | ### আমাকে সমর্থন করুন Ko-fi 👇 49 | [](https://ko-fi.com/sarequl) 50 | -------------------------------------------------------------------------------- /README_es.md: -------------------------------------------------------------------------------- 1 | # Netflix-Helper 2 | 3 | ### Nota 4 | 5 | Esta extensión de Netflix controla el volumen con la rueda del mouse y omite automáticamente las intros. Originalmente creé esto para mí, pero mis amigos sugirieron que lo pusiera a disposición del público ya que lo encontraron útil, así que aquí está, ¡gratis para ti! 6 | 7 | ### Todas las características 8 | 9 | Actualmente, esta extensión tiene estas características. 10 | 11 | | Features | Status | 12 | | ------------------------------------------------ | ----------- | 13 | | Interfaz de usuario genial | Sí | 14 | | Extensión de encendido / apagado con un botón | Sí | 15 | | Controlar el volumen con el mouse | Sí | 16 | | Intro de salto automático | Sí | 17 | |Ocultar las secciones que no le gustan | Sí | 18 | | atajo de teclado | Sí | 19 | | Asignar el botón del mouse / teclado para diferentes tareas| próximamente | 20 | 21 | --- 22 | 23 | ## Instalar ahora 24 | ##### [Chrome](https://chrome.google.com/webstore/detail/netflix-helper/mlfdbphlfojgfeepjojcalginhedfpnk) 25 | 26 | ##### [Firefox](https://addons.mozilla.org/en-US/firefox/addon/netflix-helper/) 27 | --- 28 | 29 | # Registro de cambios 30 | 31 | ### Registro de cambios 2.0.2 32 | 33 | 1. Atajo de teclado agregado. (Presione N para el próximo episodio) 34 | 2. No dude en crear un problema sobre el acceso directo que necesita. 35 | 36 | 37 | ### Registro de cambios 2.0 38 | 39 | 1. Interfaz de usuario agregada para la extensión. 40 | 2. Función de extensión de encendido / apagado con un botón. 41 | 3. Oculte las secciones que no le gusten. 42 | 4. Botón de recarga (después de cualquier cambio). 43 | 5. Se agregaron más errores para corregirlos más tarde 😂 44 | 45 | 46 | ### Registro de cambios 1.0 47 | 48 | 1. Controle el volumen con el mouse. 49 | 2. Auto Skip Intro 50 | 51 | 52 | [](https://ko-fi.com/sarequl) 53 | -------------------------------------------------------------------------------- /README_fr.md: -------------------------------------------------------------------------------- 1 | # Netflix-Helper 2 | 3 | ### Note 4 | 5 | Cette extension de navigateur pour Netflix permet de contrôler le volume avec la roulette de la souris et de sauter automatiquement les introductions. 6 | Je l'ai initialement créé pour moi, mais mes amis m'ont suggéré de la rendre publiquement accessible car ils l'ont trouvé utile - alors la voici, gratuitement pour vous ! 🙂 7 | 8 | ### Toutes les fonctionnalités 9 | 10 | Cette extension a actuellement les fonctionnalités suivantes : 11 | 12 | | Fonctionnalités | Statut | 13 | | ------------------------------------------------------- | ------------------ | 14 | | Interface utilisateur sympa | Oui | 15 | | Bouton On / Off sur l'extention | Oui | 16 | | Contrôle du volume avec la souris | Oui | 17 | | Saut automatique des introductions | Oui | 18 | | Masquage des sections que vous n'aimez pas | Oui | 19 | | Raccourcis clavier | Oui | 20 | | Attribuer différentes actions à la souris et au clavier | Bientôt disponible | 21 | 22 | --- 23 | 24 | ## [Installation ici](https://chrome.google.com/webstore/detail/netflix-helper/mlfdbphlfojgfeepjojcalginhedfpnk) 25 | 26 | --- 27 | 28 | # Changelog 29 | 30 | ### Changelog 2.0.2 31 | 32 | 1. Ajout de raccouris clavier (presser N pour l'épisode suivant). 33 | 2. N'hésitez pas à créer une issue si vous avez besoin d'un raccourci. 34 | 35 | ### Changelog 2.0 36 | 37 | 1. Ajout d'un interface utilisateur pour l'extension. 38 | 2. Fonctionnalité bouton On / Off sur l'extension. 39 | 3. Masquage des sections que vous n'aimez pas. 40 | 4. Bouton rechargement (après les changements). 41 | 5. Ajout de bugs à corriger plus tard :joy: 42 | 43 | ### Changelog 1.0 44 | 45 | 1. Contrôle du volume avec la souris. 46 | 2. Saut automatique des introductions. 47 | 48 | [](https://ko-fi.com/sarequl) 49 | -------------------------------------------------------------------------------- /README_hi.md: -------------------------------------------------------------------------------- 1 | # Netflix-Helper (नेटफ्लिक्स-हेल्पर) 2 | 3 | ### ध्यान दें 4 | 5 | यह नेटफ्लिक्स एक्सटेंशन माउस व्हील और ऑटो स्किप इंट्रो के साथ वॉल्यूम को नियंत्रित करता है। 6 | मैंने इसे मूल रूप से अपने लिए बनाया था, लेकिन मेरे दोस्तों ने सुझाव दिया कि मैं इसे सार्वजनिक रूप से उपलब्ध कराऊं क्योंकि उन्हें यह उपयोगी लगा - तो यह आपके लिए मुफ़्त है! 🙂 7 | 8 | ### सभी सुविधाएं 9 | 10 | इस एक्सटेंशन में वर्तमान में ये विशेषताएं हैं। 11 | 12 | |विशेषताएं स्थिति 13 | | ----------------------------------------------------------- 14 | | सुंदर------------------------------------------------- हां 15 | | एक बटन के साथ चालू / बंद------------------------------ हां 16 | | माउस के साथ वॉल्यूम नियंत्रित करें-------------------------- हां 17 | | छोड़ें परिचय-------------------------------------------- हां 18 | | उन अनुभागों को छुपाएं जो आपको पसंद नहीं हैं---------------- हां 19 | | छोटे रास्ते--------------------------------------------- हां 20 | | विभिन्न कार्यों के लिए माउस/कीबोर्ड बटन दे------------------- जल्द आ रहा है 21 | 22 | --- 23 | 24 | ## [Install Here (यहां स्थापित करें)](https://chrome.google.com/webstore/detail/netflix-helper/mlfdbphlfojgfeepjojcalginhedfpnk) 25 | 26 | --- 27 | 28 | # Changelog (बदलाव का) 29 | 30 | ### Changelog (बदलाव का) 2.0.2 31 | 32 | 1. जोड़ा गया कीबोर्ड शॉर्टकट। (अगले एपिसोड के लिए N दबाएं) 33 | 2. बेझिझक एक मुद्दा बनाएं कि आपको किस शॉर्टकट की आवश्यकता है। 34 | 35 | ### Changelog (बदलाव का) 2.0 36 | 37 | 1. विस्तार के लिए UI जोड़ा गया। 38 | 2. एक बटन के साथ चालू / बंद एक्सटेंशन कार्यक्षमता। 39 | 3. उन अनुभागों को छुपाएं जिन्हें आप पसंद नहीं करते हैं। 40 | 4. रीलोड बटन (किसी भी बदलाव के बाद)। 41 | 5. बाद में ठीक करने के लिए और बग जोड़े गए: आनंद: 42 | 43 | ### Changelog (बदलाव का) 1.0 44 | 45 | 1. माउस से वॉल्यूम कंट्रोल करें। 46 | 2. ऑटो छोड़ें परिचय 47 | 48 | [](https://ko-fi.com/sarequl) 49 | -------------------------------------------------------------------------------- /README_sv.md: -------------------------------------------------------------------------------- 1 | # Netflix-Helper 2 | 3 | ### Notera 4 | 5 | Denna Netflix-tillägg styr volymen med mushjulet och hoppar över intros automatiskt. 6 | Jag skapade det här för mig själv, men mina vänner föreslog att jag skulle göra det tillgängligt för allmänheten eftersom de tyckte att det var användbart - så här är det, gratis för dig! 🙂 7 | 8 | ### Alla funktioner 9 | 10 | Det här tillägget har för närvarande dessa funktioner. 11 | 12 | | Funktioner | Status | 13 | | ----------------------------------------------------| ----------- | 14 | | Coolt UI | Ja | 15 | | På/av Förlängning med en knapp | Ja | 16 | | Styr volymen med musen | Ja | 17 | | Auto Hoppa över Intro | Ja | 18 | | Göm avsnitt som du inte gillar | Ja | 19 | | Tangentbordsgenväg | Ja | 20 | | Tilldela mus-/tangentbordsknapp för olika uppgifter | Kommer snart| 21 | 22 | --- 23 | 24 | ## Installera nu 25 | ##### [Chrome](https://chrome.google.com/webstore/detail/netflix-helper/mlfdbphlfojgfeepjojcalginhedfpnk) 26 | 27 | ##### [Firefox](https://addons.mozilla.org/en-US/firefox/addon/netflix-helper/) 28 | --- 29 | 30 | # Ändringslogg 31 | 32 | ### Ändringslogg 2.0.2 33 | 34 | 1. Tillagd kortkommando. (Tryck på N för nästa avsnitt) 35 | 2. Skapa gärna ett problem om vilken genväg du behöver. 36 | 37 | ### Changelog 2.0 38 | 39 | 1. Lade till användargränssnitt för tillägget. 40 | 2. På/av förlängningsfunktionalitet med en knapp. 41 | 3. Göm avsnitt som du inte gillar. 42 | 4. Reload-knapp (efter eventuella ändringar). 43 | 5. Lade till fler buggar att fixa senare :joy: 44 | 45 | ### Changelog 1.0 46 | 47 | 1. Styr volymen med musen. 48 | 2. Auto Hoppa över Intro 49 | 50 | 51 | 52 | [](https://ko-fi.com/sarequl) 53 | -------------------------------------------------------------------------------- /icons/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sarequl/Netflix-Helper/6c79dcd4db48ade2451024b8f867bfebb3bd0931/icons/icon128.png -------------------------------------------------------------------------------- /icons/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sarequl/Netflix-Helper/6c79dcd4db48ade2451024b8f867bfebb3bd0931/icons/icon16.png -------------------------------------------------------------------------------- /icons/icon19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sarequl/Netflix-Helper/6c79dcd4db48ade2451024b8f867bfebb3bd0931/icons/icon19.png -------------------------------------------------------------------------------- /icons/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sarequl/Netflix-Helper/6c79dcd4db48ade2451024b8f867bfebb3bd0931/icons/icon48.png -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Netflix Helper", 3 | "version": "2.1.0", 4 | "manifest_version": 3, 5 | "description": "This Netflix extension to control volume with the mouse wheel, and auto skip intro.", 6 | "homepage_url": "https://chrome.google.com/webstore/detail/netflix-helper/mlfdbphlfojgfeepjojcalginhedfpnk", 7 | "icons": { 8 | "16": "icons/icon16.png", 9 | "48": "icons/icon48.png", 10 | "128": "icons/icon128.png" 11 | }, 12 | "action": { 13 | "default_icon": "icons/icon128.png", 14 | "default_title": "Netflix Helper UI", 15 | "default_popup": "src/popup/public/index.html" 16 | }, 17 | "content_scripts": [ 18 | { 19 | "matches": ["https://www.netflix.com/*"], 20 | "js": ["src/backend/netflixHelper.js"] 21 | } 22 | ], 23 | "host_permissions": ["*://*.netflix.com/"], 24 | "permissions": ["storage", "tabs"] 25 | } 26 | -------------------------------------------------------------------------------- /src/backend/extra_upcoming.js: -------------------------------------------------------------------------------- 1 | //'button.color-primary.hasLabel.hasIcon.ltr-v8pdkb'; 2 | //'[data-uia="next-episode-seamless-button"]'; 3 | //next episode 4 | // let nextEpisode = document.querySelector('button.color-primary.hasLabel.hasIcon.ltr-v8pdkb'); 5 | // if(nextEpisode){ 6 | // nextEpisode.click(); 7 | // } 8 | 9 | //hide header big video section 10 | let headerVideoContainer = document.querySelector('.volatile-billboard-animations-container'); 11 | let headerCheckBoxStatus = true; 12 | if (headerCheckBoxStatus === true) headerVideoContainer.style.display = 'none'; 13 | 14 | //hide my list 15 | let myList = document.querySelector('.lolomoRow.lolomoRow_title_card'); 16 | let MyListCheckBoxStatus = true; 17 | if (MyListCheckBoxStatus === true) myList.style.display = 'none'; 18 | 19 | //hide continueWatching 20 | let continueWatching = document.querySelector('[data-list-context="continueWatching"]'); 21 | let continueWatchingCheckBoxStatus = false; 22 | if (continueWatchingCheckBoxStatus === true) continueWatching.style.display = 'none'; 23 | 24 | //hide trending 25 | let trendingNow = document.querySelector('[data-list-context="trendingNow"]'); 26 | let trendingNowCheckBoxStatus = true; 27 | if (trendingNowCheckBoxStatus === true) trendingNow.style.display = 'none'; 28 | 29 | //hide sections 30 | // function hideSections(){ 31 | // //hide header big video section 32 | // let headerVideoContainer = document.querySelector('.volatile-billboard-animations-container'); 33 | // let headerCheckBoxStatus = true; 34 | // if (headerCheckBoxStatus === true) headerVideoContainer.style.display = 'none'; 35 | 36 | // //hide my list 37 | // let myList = document.querySelector('.lolomoRow.lolomoRow_title_card'); 38 | // let MyListCheckBoxStatus = true; 39 | // if (MyListCheckBoxStatus === true) myList.style.display = 'none'; 40 | 41 | // //hide continueWatching 42 | // let continueWatching = document.querySelector('[data-list-context="continueWatching"]'); 43 | // let continueWatchingCheckBoxStatus = false; 44 | // if (continueWatchingCheckBoxStatus === true) continueWatching.style.display = 'none'; 45 | 46 | // //hide trending 47 | // let trendingNow = document.querySelector('[data-list-context="trendingNow"]'); 48 | // let trendingNowCheckBoxStatus = true; 49 | // if (trendingNowCheckBoxStatus === true) trendingNow.style.display = 'none'; 50 | // } 51 | 52 | // setInterval(()=>{ 53 | // hideSections(); 54 | // },2000); 55 | 56 | //let [node] = [...document.querySelectorAll('.row-header-title')].filter(e => e.innerText.includes('Originals')); 57 | 58 | 59 | //find, filter, findIndex, map,reduce, foreach -------------------------------------------------------------------------------- /src/backend/modules/storage.js: -------------------------------------------------------------------------------- 1 | class Storage { 2 | set(object) { 3 | return new Promise((resolve, reject) => { 4 | try { 5 | chrome.storage.local.set(object, resolve); 6 | } catch (e) { 7 | reject(e); 8 | } 9 | }); 10 | } 11 | 12 | get(key) { 13 | return new Promise((resolve, reject) => { 14 | chrome.storage.local.get(key, data => { 15 | if (Object.keys(data).length === 0 && data.constructor === Object) 16 | reject('no data returned by localStorage'); 17 | resolve(data[key]); 18 | }); 19 | }); 20 | } 21 | } 22 | 23 | const storage = new Storage(); 24 | export default storage; 25 | 26 | //How to use 27 | 28 | // storage.set({test:123}).catch(console.log) 29 | // storage.get('test').then(data => console.log(data)).catch(console.log) 30 | -------------------------------------------------------------------------------- /src/backend/netflixHelper.js: -------------------------------------------------------------------------------- 1 | //storage// 2 | // import storage from '../popup/src/modules/storage'; 3 | class Storage { 4 | set(object) { 5 | return new Promise((resolve, reject) => { 6 | try { 7 | chrome.storage.local.set(object, resolve); 8 | } catch (e) { 9 | reject(e); 10 | } 11 | }); 12 | } 13 | 14 | get(key) { 15 | return new Promise((resolve, reject) => { 16 | chrome.storage.local.get(key, data => { 17 | if (Object.keys(data).length === 0 && data.constructor === Object) 18 | reject('no data returned by localStorage'); 19 | resolve(data[key]); 20 | }); 21 | }); 22 | } 23 | } 24 | 25 | const storage = new Storage(); 26 | //How to use 27 | 28 | //end storage// 29 | 30 | async function extenisonController() { 31 | //await storage.set({ activeExtension: true }); 32 | const activeStatus = await storage.get('activeExtension'); 33 | //console.log(activeStatus); 34 | 35 | //condition 36 | if (activeStatus) { 37 | mainEx(); 38 | } 39 | } 40 | 41 | extenisonController(); 42 | 43 | //mainfunction 44 | function mainEx() { 45 | //netflix volume 46 | window.addEventListener('wheel', function (e) { 47 | let videoController = document.querySelector('video'); 48 | if (videoController) { 49 | let wheelStatus = Math.sign(e.deltaY); 50 | if (wheelStatus > 0) { 51 | if (videoController.volume > 0.1) videoController.volume = videoController.volume - 0.1; 52 | } else { 53 | if (videoController.volume <= 0.9 && videoController.volume > 0) 54 | videoController.volume = videoController.volume + 0.1; 55 | } 56 | } 57 | }); 58 | 59 | //console.log('extension enabled'); 60 | 61 | //hide header big video section 62 | async function hideSections() { 63 | //console.log('triggerd'); 64 | 65 | // Auto Skip Intro and Recap 66 | let intro = document.querySelector('button.watch-video--skip-content-button'); 67 | if (intro) { 68 | intro.click(); 69 | } 70 | 71 | //next episode on button appear 72 | let nextEpButton = document.querySelector('button[data-uia="next-episode-seamless-button"]'); 73 | if (nextEpButton) { 74 | nextEpButton.click(); 75 | } 76 | 77 | /** 78 | * get data from storage 79 | */ 80 | const headerCheckBoxStatus = await storage.get('hideHeaderVideo'); 81 | const myListStatus = await storage.get('myList'); 82 | const continueWatchingStatus = await storage.get('continueWatching'); 83 | const trendingNowStatus = await storage.get('trendingNow'); 84 | const keyboardShortcuts = await storage.get('keyboardShortcuts'); 85 | 86 | //////////hide header video animation 87 | const headerVideoSound = document.querySelector('video'); 88 | const headerVideoContainer = document.querySelector('span.volatile-billboard-animations-container'); 89 | 90 | if (headerCheckBoxStatus) { 91 | if (headerVideoContainer) { 92 | headerVideoContainer.style.display = 'none'; 93 | 94 | if (headerVideoSound) { 95 | headerVideoSound.volume = 0; 96 | } 97 | } 98 | } 99 | 100 | ///////hide my list 101 | //hide my list 102 | const getMyList = document.querySelector('[data-list-context="queue"]'); 103 | if (myListStatus) { 104 | if (getMyList) { 105 | getMyList.style.display = 'none'; 106 | } 107 | } 108 | 109 | /////// hide Continue Watching 110 | const getContinueWatching = document.querySelector('[data-list-context="continueWatching"]'); 111 | if (continueWatchingStatus) { 112 | if (getContinueWatching) { 113 | getContinueWatching.style.display = 'none'; 114 | } 115 | } 116 | 117 | /////////// hide Trending Now 118 | const getTrendingNow = document.querySelector('[data-list-context="trendingNow"]'); 119 | if (trendingNowStatus) { 120 | if (getTrendingNow) { 121 | getTrendingNow.style.display = 'none'; 122 | } 123 | } 124 | 125 | //////////keybaord Shortcuts 126 | let nextEpisode = document.querySelector('button[aria-label="Next Episode"]'); 127 | document.addEventListener('keypress', function (e) { 128 | //storage checker 129 | if (keyboardShortcuts) { 130 | if (e.key === 'n' || e.key === 'N') { 131 | if (nextEpisode) nextEpisode.click(); 132 | } 133 | } 134 | }); 135 | } 136 | //hideSections(); 137 | const observer = new MutationObserver(hideSections); 138 | observer.observe(document.body, { childList: true, attributes: true, subtree: true }); 139 | } 140 | -------------------------------------------------------------------------------- /src/popup/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /public/build/ 3 | /package-lock.json 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /src/popup/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-app", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "svelte-app", 9 | "version": "1.0.0", 10 | "dependencies": { 11 | "sirv-cli": "^1.0.0" 12 | }, 13 | "devDependencies": { 14 | "@rollup/plugin-commonjs": "^17.0.0", 15 | "@rollup/plugin-node-resolve": "^11.0.0", 16 | "rollup": "^2.3.4", 17 | "rollup-plugin-css-only": "^3.1.0", 18 | "rollup-plugin-livereload": "^2.0.0", 19 | "rollup-plugin-svelte": "^7.0.0", 20 | "rollup-plugin-terser": "^7.0.0", 21 | "svelte": "^3.0.0" 22 | } 23 | }, 24 | "node_modules/@babel/code-frame": { 25 | "version": "7.12.13", 26 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", 27 | "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", 28 | "dev": true, 29 | "dependencies": { 30 | "@babel/highlight": "^7.12.13" 31 | } 32 | }, 33 | "node_modules/@babel/helper-validator-identifier": { 34 | "version": "7.12.11", 35 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", 36 | "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", 37 | "dev": true 38 | }, 39 | "node_modules/@babel/highlight": { 40 | "version": "7.12.13", 41 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", 42 | "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", 43 | "dev": true, 44 | "dependencies": { 45 | "@babel/helper-validator-identifier": "^7.12.11", 46 | "chalk": "^2.0.0", 47 | "js-tokens": "^4.0.0" 48 | } 49 | }, 50 | "node_modules/@polka/url": { 51 | "version": "1.0.0-next.11", 52 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.11.tgz", 53 | "integrity": "sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==" 54 | }, 55 | "node_modules/@rollup/plugin-commonjs": { 56 | "version": "17.1.0", 57 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz", 58 | "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==", 59 | "dev": true, 60 | "dependencies": { 61 | "@rollup/pluginutils": "^3.1.0", 62 | "commondir": "^1.0.1", 63 | "estree-walker": "^2.0.1", 64 | "glob": "^7.1.6", 65 | "is-reference": "^1.2.1", 66 | "magic-string": "^0.25.7", 67 | "resolve": "^1.17.0" 68 | }, 69 | "engines": { 70 | "node": ">= 8.0.0" 71 | }, 72 | "peerDependencies": { 73 | "rollup": "^2.30.0" 74 | } 75 | }, 76 | "node_modules/@rollup/plugin-node-resolve": { 77 | "version": "11.2.0", 78 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.0.tgz", 79 | "integrity": "sha512-qHjNIKYt5pCcn+5RUBQxK8krhRvf1HnyVgUCcFFcweDS7fhkOLZeYh0mhHK6Ery8/bb9tvN/ubPzmfF0qjDCTA==", 80 | "dev": true, 81 | "dependencies": { 82 | "@rollup/pluginutils": "^3.1.0", 83 | "@types/resolve": "1.17.1", 84 | "builtin-modules": "^3.1.0", 85 | "deepmerge": "^4.2.2", 86 | "is-module": "^1.0.0", 87 | "resolve": "^1.19.0" 88 | }, 89 | "engines": { 90 | "node": ">= 10.0.0" 91 | }, 92 | "peerDependencies": { 93 | "rollup": "^1.20.0||^2.0.0" 94 | } 95 | }, 96 | "node_modules/@rollup/pluginutils": { 97 | "version": "3.1.0", 98 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", 99 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", 100 | "dev": true, 101 | "dependencies": { 102 | "@types/estree": "0.0.39", 103 | "estree-walker": "^1.0.1", 104 | "picomatch": "^2.2.2" 105 | }, 106 | "engines": { 107 | "node": ">= 8.0.0" 108 | }, 109 | "peerDependencies": { 110 | "rollup": "^1.20.0||^2.0.0" 111 | } 112 | }, 113 | "node_modules/@rollup/pluginutils/node_modules/estree-walker": { 114 | "version": "1.0.1", 115 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 116 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 117 | "dev": true 118 | }, 119 | "node_modules/@types/estree": { 120 | "version": "0.0.39", 121 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 122 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 123 | "dev": true 124 | }, 125 | "node_modules/@types/node": { 126 | "version": "14.14.31", 127 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", 128 | "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==", 129 | "dev": true 130 | }, 131 | "node_modules/@types/resolve": { 132 | "version": "1.17.1", 133 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", 134 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", 135 | "dev": true, 136 | "dependencies": { 137 | "@types/node": "*" 138 | } 139 | }, 140 | "node_modules/ansi-styles": { 141 | "version": "3.2.1", 142 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 143 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 144 | "dev": true, 145 | "dependencies": { 146 | "color-convert": "^1.9.0" 147 | }, 148 | "engines": { 149 | "node": ">=4" 150 | } 151 | }, 152 | "node_modules/anymatch": { 153 | "version": "3.1.1", 154 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 155 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 156 | "dev": true, 157 | "dependencies": { 158 | "normalize-path": "^3.0.0", 159 | "picomatch": "^2.0.4" 160 | }, 161 | "engines": { 162 | "node": ">= 8" 163 | } 164 | }, 165 | "node_modules/async-limiter": { 166 | "version": "1.0.1", 167 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", 168 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", 169 | "dev": true 170 | }, 171 | "node_modules/balanced-match": { 172 | "version": "1.0.0", 173 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 174 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 175 | "dev": true 176 | }, 177 | "node_modules/binary-extensions": { 178 | "version": "2.2.0", 179 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 180 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 181 | "dev": true, 182 | "engines": { 183 | "node": ">=8" 184 | } 185 | }, 186 | "node_modules/brace-expansion": { 187 | "version": "1.1.11", 188 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 189 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 190 | "dev": true, 191 | "dependencies": { 192 | "balanced-match": "^1.0.0", 193 | "concat-map": "0.0.1" 194 | } 195 | }, 196 | "node_modules/braces": { 197 | "version": "3.0.2", 198 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 199 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 200 | "dev": true, 201 | "dependencies": { 202 | "fill-range": "^7.0.1" 203 | }, 204 | "engines": { 205 | "node": ">=8" 206 | } 207 | }, 208 | "node_modules/buffer-from": { 209 | "version": "1.1.1", 210 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 211 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 212 | "dev": true 213 | }, 214 | "node_modules/builtin-modules": { 215 | "version": "3.2.0", 216 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", 217 | "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", 218 | "dev": true, 219 | "engines": { 220 | "node": ">=6" 221 | }, 222 | "funding": { 223 | "url": "https://github.com/sponsors/sindresorhus" 224 | } 225 | }, 226 | "node_modules/chalk": { 227 | "version": "2.4.2", 228 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 229 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 230 | "dev": true, 231 | "dependencies": { 232 | "ansi-styles": "^3.2.1", 233 | "escape-string-regexp": "^1.0.5", 234 | "supports-color": "^5.3.0" 235 | }, 236 | "engines": { 237 | "node": ">=4" 238 | } 239 | }, 240 | "node_modules/chokidar": { 241 | "version": "3.5.1", 242 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", 243 | "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", 244 | "dev": true, 245 | "dependencies": { 246 | "anymatch": "~3.1.1", 247 | "braces": "~3.0.2", 248 | "glob-parent": "~5.1.0", 249 | "is-binary-path": "~2.1.0", 250 | "is-glob": "~4.0.1", 251 | "normalize-path": "~3.0.0", 252 | "readdirp": "~3.5.0" 253 | }, 254 | "engines": { 255 | "node": ">= 8.10.0" 256 | }, 257 | "optionalDependencies": { 258 | "fsevents": "~2.3.1" 259 | } 260 | }, 261 | "node_modules/color-convert": { 262 | "version": "1.9.3", 263 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 264 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 265 | "dev": true, 266 | "dependencies": { 267 | "color-name": "1.1.3" 268 | } 269 | }, 270 | "node_modules/color-name": { 271 | "version": "1.1.3", 272 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 273 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 274 | "dev": true 275 | }, 276 | "node_modules/commander": { 277 | "version": "2.20.3", 278 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 279 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 280 | "dev": true 281 | }, 282 | "node_modules/commondir": { 283 | "version": "1.0.1", 284 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 285 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 286 | "dev": true 287 | }, 288 | "node_modules/concat-map": { 289 | "version": "0.0.1", 290 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 291 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 292 | "dev": true 293 | }, 294 | "node_modules/console-clear": { 295 | "version": "1.1.1", 296 | "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", 297 | "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==", 298 | "engines": { 299 | "node": ">=4" 300 | } 301 | }, 302 | "node_modules/deepmerge": { 303 | "version": "4.2.2", 304 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 305 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 306 | "dev": true, 307 | "engines": { 308 | "node": ">=0.10.0" 309 | } 310 | }, 311 | "node_modules/escape-string-regexp": { 312 | "version": "1.0.5", 313 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 314 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 315 | "dev": true, 316 | "engines": { 317 | "node": ">=0.8.0" 318 | } 319 | }, 320 | "node_modules/estree-walker": { 321 | "version": "2.0.2", 322 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 323 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 324 | "dev": true 325 | }, 326 | "node_modules/fill-range": { 327 | "version": "7.0.1", 328 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 329 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 330 | "dev": true, 331 | "dependencies": { 332 | "to-regex-range": "^5.0.1" 333 | }, 334 | "engines": { 335 | "node": ">=8" 336 | } 337 | }, 338 | "node_modules/fs.realpath": { 339 | "version": "1.0.0", 340 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 341 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 342 | "dev": true 343 | }, 344 | "node_modules/fsevents": { 345 | "version": "2.3.2", 346 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 347 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 348 | "dev": true, 349 | "hasInstallScript": true, 350 | "optional": true, 351 | "os": [ 352 | "darwin" 353 | ], 354 | "engines": { 355 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 356 | } 357 | }, 358 | "node_modules/function-bind": { 359 | "version": "1.1.1", 360 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 361 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 362 | "dev": true 363 | }, 364 | "node_modules/get-port": { 365 | "version": "3.2.0", 366 | "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", 367 | "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", 368 | "engines": { 369 | "node": ">=4" 370 | } 371 | }, 372 | "node_modules/glob": { 373 | "version": "7.1.6", 374 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 375 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 376 | "dev": true, 377 | "dependencies": { 378 | "fs.realpath": "^1.0.0", 379 | "inflight": "^1.0.4", 380 | "inherits": "2", 381 | "minimatch": "^3.0.4", 382 | "once": "^1.3.0", 383 | "path-is-absolute": "^1.0.0" 384 | }, 385 | "engines": { 386 | "node": "*" 387 | }, 388 | "funding": { 389 | "url": "https://github.com/sponsors/isaacs" 390 | } 391 | }, 392 | "node_modules/glob-parent": { 393 | "version": "5.1.1", 394 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 395 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 396 | "dev": true, 397 | "dependencies": { 398 | "is-glob": "^4.0.1" 399 | }, 400 | "engines": { 401 | "node": ">= 6" 402 | } 403 | }, 404 | "node_modules/has": { 405 | "version": "1.0.3", 406 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 407 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 408 | "dev": true, 409 | "dependencies": { 410 | "function-bind": "^1.1.1" 411 | }, 412 | "engines": { 413 | "node": ">= 0.4.0" 414 | } 415 | }, 416 | "node_modules/has-flag": { 417 | "version": "3.0.0", 418 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 419 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 420 | "dev": true, 421 | "engines": { 422 | "node": ">=4" 423 | } 424 | }, 425 | "node_modules/inflight": { 426 | "version": "1.0.6", 427 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 428 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 429 | "dev": true, 430 | "dependencies": { 431 | "once": "^1.3.0", 432 | "wrappy": "1" 433 | } 434 | }, 435 | "node_modules/inherits": { 436 | "version": "2.0.4", 437 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 438 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 439 | "dev": true 440 | }, 441 | "node_modules/is-binary-path": { 442 | "version": "2.1.0", 443 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 444 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 445 | "dev": true, 446 | "dependencies": { 447 | "binary-extensions": "^2.0.0" 448 | }, 449 | "engines": { 450 | "node": ">=8" 451 | } 452 | }, 453 | "node_modules/is-core-module": { 454 | "version": "2.2.0", 455 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", 456 | "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", 457 | "dev": true, 458 | "dependencies": { 459 | "has": "^1.0.3" 460 | }, 461 | "funding": { 462 | "url": "https://github.com/sponsors/ljharb" 463 | } 464 | }, 465 | "node_modules/is-extglob": { 466 | "version": "2.1.1", 467 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 468 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 469 | "dev": true, 470 | "engines": { 471 | "node": ">=0.10.0" 472 | } 473 | }, 474 | "node_modules/is-glob": { 475 | "version": "4.0.1", 476 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 477 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 478 | "dev": true, 479 | "dependencies": { 480 | "is-extglob": "^2.1.1" 481 | }, 482 | "engines": { 483 | "node": ">=0.10.0" 484 | } 485 | }, 486 | "node_modules/is-module": { 487 | "version": "1.0.0", 488 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 489 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", 490 | "dev": true 491 | }, 492 | "node_modules/is-number": { 493 | "version": "7.0.0", 494 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 495 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 496 | "dev": true, 497 | "engines": { 498 | "node": ">=0.12.0" 499 | } 500 | }, 501 | "node_modules/is-reference": { 502 | "version": "1.2.1", 503 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 504 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 505 | "dev": true, 506 | "dependencies": { 507 | "@types/estree": "*" 508 | } 509 | }, 510 | "node_modules/jest-worker": { 511 | "version": "26.6.2", 512 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", 513 | "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", 514 | "dev": true, 515 | "dependencies": { 516 | "@types/node": "*", 517 | "merge-stream": "^2.0.0", 518 | "supports-color": "^7.0.0" 519 | }, 520 | "engines": { 521 | "node": ">= 10.13.0" 522 | } 523 | }, 524 | "node_modules/jest-worker/node_modules/has-flag": { 525 | "version": "4.0.0", 526 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 527 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 528 | "dev": true, 529 | "engines": { 530 | "node": ">=8" 531 | } 532 | }, 533 | "node_modules/jest-worker/node_modules/supports-color": { 534 | "version": "7.2.0", 535 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 536 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 537 | "dev": true, 538 | "dependencies": { 539 | "has-flag": "^4.0.0" 540 | }, 541 | "engines": { 542 | "node": ">=8" 543 | } 544 | }, 545 | "node_modules/js-tokens": { 546 | "version": "4.0.0", 547 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 548 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 549 | "dev": true 550 | }, 551 | "node_modules/kleur": { 552 | "version": "3.0.3", 553 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", 554 | "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", 555 | "engines": { 556 | "node": ">=6" 557 | } 558 | }, 559 | "node_modules/livereload": { 560 | "version": "0.9.1", 561 | "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz", 562 | "integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==", 563 | "dev": true, 564 | "dependencies": { 565 | "chokidar": "^3.3.0", 566 | "livereload-js": "^3.1.0", 567 | "opts": ">= 1.2.0", 568 | "ws": "^6.2.1" 569 | }, 570 | "bin": { 571 | "livereload": "bin/livereload.js" 572 | }, 573 | "engines": { 574 | "node": ">=8.0.0" 575 | } 576 | }, 577 | "node_modules/livereload-js": { 578 | "version": "3.3.1", 579 | "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.1.tgz", 580 | "integrity": "sha512-CBu1gTEfzVhlOK1WASKAAJ9Qx1fHECTq0SUB67sfxwQssopTyvzqTlgl+c0h9pZ6V+Fzd2rc510ppuNusg9teQ==", 581 | "dev": true 582 | }, 583 | "node_modules/local-access": { 584 | "version": "1.1.0", 585 | "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", 586 | "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==", 587 | "engines": { 588 | "node": ">=6" 589 | } 590 | }, 591 | "node_modules/magic-string": { 592 | "version": "0.25.7", 593 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 594 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", 595 | "dev": true, 596 | "dependencies": { 597 | "sourcemap-codec": "^1.4.4" 598 | } 599 | }, 600 | "node_modules/merge-stream": { 601 | "version": "2.0.0", 602 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 603 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 604 | "dev": true 605 | }, 606 | "node_modules/mime": { 607 | "version": "2.5.2", 608 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", 609 | "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", 610 | "bin": { 611 | "mime": "cli.js" 612 | }, 613 | "engines": { 614 | "node": ">=4.0.0" 615 | } 616 | }, 617 | "node_modules/minimatch": { 618 | "version": "3.0.4", 619 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 620 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 621 | "dev": true, 622 | "dependencies": { 623 | "brace-expansion": "^1.1.7" 624 | }, 625 | "engines": { 626 | "node": "*" 627 | } 628 | }, 629 | "node_modules/mri": { 630 | "version": "1.1.6", 631 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", 632 | "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", 633 | "engines": { 634 | "node": ">=4" 635 | } 636 | }, 637 | "node_modules/normalize-path": { 638 | "version": "3.0.0", 639 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 640 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 641 | "dev": true, 642 | "engines": { 643 | "node": ">=0.10.0" 644 | } 645 | }, 646 | "node_modules/once": { 647 | "version": "1.4.0", 648 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 649 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 650 | "dev": true, 651 | "dependencies": { 652 | "wrappy": "1" 653 | } 654 | }, 655 | "node_modules/opts": { 656 | "version": "2.0.2", 657 | "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", 658 | "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==", 659 | "dev": true 660 | }, 661 | "node_modules/path-is-absolute": { 662 | "version": "1.0.1", 663 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 664 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 665 | "dev": true, 666 | "engines": { 667 | "node": ">=0.10.0" 668 | } 669 | }, 670 | "node_modules/path-parse": { 671 | "version": "1.0.6", 672 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 673 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 674 | "dev": true 675 | }, 676 | "node_modules/picomatch": { 677 | "version": "2.2.2", 678 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 679 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 680 | "dev": true, 681 | "engines": { 682 | "node": ">=8.6" 683 | }, 684 | "funding": { 685 | "url": "https://github.com/sponsors/jonschlinkert" 686 | } 687 | }, 688 | "node_modules/randombytes": { 689 | "version": "2.1.0", 690 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 691 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 692 | "dev": true, 693 | "dependencies": { 694 | "safe-buffer": "^5.1.0" 695 | } 696 | }, 697 | "node_modules/readdirp": { 698 | "version": "3.5.0", 699 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 700 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 701 | "dev": true, 702 | "dependencies": { 703 | "picomatch": "^2.2.1" 704 | }, 705 | "engines": { 706 | "node": ">=8.10.0" 707 | } 708 | }, 709 | "node_modules/require-relative": { 710 | "version": "0.8.7", 711 | "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", 712 | "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", 713 | "dev": true 714 | }, 715 | "node_modules/resolve": { 716 | "version": "1.20.0", 717 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 718 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 719 | "dev": true, 720 | "dependencies": { 721 | "is-core-module": "^2.2.0", 722 | "path-parse": "^1.0.6" 723 | }, 724 | "funding": { 725 | "url": "https://github.com/sponsors/ljharb" 726 | } 727 | }, 728 | "node_modules/rollup": { 729 | "version": "2.39.0", 730 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.39.0.tgz", 731 | "integrity": "sha512-+WR3bttcq7zE+BntH09UxaW3bQo3vItuYeLsyk4dL2tuwbeSKJuvwiawyhEnvRdRgrII0Uzk00FpctHO/zB1kw==", 732 | "dev": true, 733 | "bin": { 734 | "rollup": "dist/bin/rollup" 735 | }, 736 | "engines": { 737 | "node": ">=10.0.0" 738 | }, 739 | "optionalDependencies": { 740 | "fsevents": "~2.3.1" 741 | } 742 | }, 743 | "node_modules/rollup-plugin-css-only": { 744 | "version": "3.1.0", 745 | "resolved": "https://registry.npmjs.org/rollup-plugin-css-only/-/rollup-plugin-css-only-3.1.0.tgz", 746 | "integrity": "sha512-TYMOE5uoD76vpj+RTkQLzC9cQtbnJNktHPB507FzRWBVaofg7KhIqq1kGbcVOadARSozWF883Ho9KpSPKH8gqA==", 747 | "dev": true, 748 | "dependencies": { 749 | "@rollup/pluginutils": "4" 750 | }, 751 | "engines": { 752 | "node": ">=10.12.0" 753 | }, 754 | "peerDependencies": { 755 | "rollup": "1 || 2" 756 | } 757 | }, 758 | "node_modules/rollup-plugin-css-only/node_modules/@rollup/pluginutils": { 759 | "version": "4.1.0", 760 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.0.tgz", 761 | "integrity": "sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ==", 762 | "dev": true, 763 | "dependencies": { 764 | "estree-walker": "^2.0.1", 765 | "picomatch": "^2.2.2" 766 | }, 767 | "engines": { 768 | "node": ">= 8.0.0" 769 | }, 770 | "peerDependencies": { 771 | "rollup": "^1.20.0||^2.0.0" 772 | } 773 | }, 774 | "node_modules/rollup-plugin-livereload": { 775 | "version": "2.0.0", 776 | "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.0.tgz", 777 | "integrity": "sha512-oC/8NqumGYuphkqrfszOHUUIwzKsaHBICw6QRwT5uD07gvePTS+HW+GFwu6f9K8W02CUuTvtIM9AWJrbj4wE1A==", 778 | "dev": true, 779 | "dependencies": { 780 | "livereload": "^0.9.1" 781 | }, 782 | "engines": { 783 | "node": ">=8.3" 784 | } 785 | }, 786 | "node_modules/rollup-plugin-svelte": { 787 | "version": "7.1.0", 788 | "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.0.tgz", 789 | "integrity": "sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg==", 790 | "dev": true, 791 | "dependencies": { 792 | "require-relative": "^0.8.7", 793 | "rollup-pluginutils": "^2.8.2" 794 | }, 795 | "engines": { 796 | "node": ">=10" 797 | }, 798 | "peerDependencies": { 799 | "rollup": ">=2.0.0", 800 | "svelte": ">=3.5.0" 801 | } 802 | }, 803 | "node_modules/rollup-plugin-terser": { 804 | "version": "7.0.2", 805 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", 806 | "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", 807 | "dev": true, 808 | "dependencies": { 809 | "@babel/code-frame": "^7.10.4", 810 | "jest-worker": "^26.2.1", 811 | "serialize-javascript": "^4.0.0", 812 | "terser": "^5.0.0" 813 | }, 814 | "peerDependencies": { 815 | "rollup": "^2.0.0" 816 | } 817 | }, 818 | "node_modules/rollup-pluginutils": { 819 | "version": "2.8.2", 820 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 821 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 822 | "dev": true, 823 | "dependencies": { 824 | "estree-walker": "^0.6.1" 825 | } 826 | }, 827 | "node_modules/rollup-pluginutils/node_modules/estree-walker": { 828 | "version": "0.6.1", 829 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 830 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 831 | "dev": true 832 | }, 833 | "node_modules/sade": { 834 | "version": "1.7.4", 835 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", 836 | "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", 837 | "dependencies": { 838 | "mri": "^1.1.0" 839 | }, 840 | "engines": { 841 | "node": ">= 6" 842 | } 843 | }, 844 | "node_modules/safe-buffer": { 845 | "version": "5.2.1", 846 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 847 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 848 | "dev": true, 849 | "funding": [ 850 | { 851 | "type": "github", 852 | "url": "https://github.com/sponsors/feross" 853 | }, 854 | { 855 | "type": "patreon", 856 | "url": "https://www.patreon.com/feross" 857 | }, 858 | { 859 | "type": "consulting", 860 | "url": "https://feross.org/support" 861 | } 862 | ] 863 | }, 864 | "node_modules/semiver": { 865 | "version": "1.1.0", 866 | "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", 867 | "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==", 868 | "engines": { 869 | "node": ">=6" 870 | } 871 | }, 872 | "node_modules/serialize-javascript": { 873 | "version": "4.0.0", 874 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", 875 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", 876 | "dev": true, 877 | "dependencies": { 878 | "randombytes": "^2.1.0" 879 | } 880 | }, 881 | "node_modules/sirv": { 882 | "version": "1.0.11", 883 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.11.tgz", 884 | "integrity": "sha512-SR36i3/LSWja7AJNRBz4fF/Xjpn7lQFI30tZ434dIy+bitLYSP+ZEenHg36i23V2SGEz+kqjksg0uOGZ5LPiqg==", 885 | "dependencies": { 886 | "@polka/url": "^1.0.0-next.9", 887 | "mime": "^2.3.1", 888 | "totalist": "^1.0.0" 889 | }, 890 | "engines": { 891 | "node": ">= 10" 892 | } 893 | }, 894 | "node_modules/sirv-cli": { 895 | "version": "1.0.11", 896 | "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-1.0.11.tgz", 897 | "integrity": "sha512-L8NILoRSBd38VcfFcERYCaVCnWPBLo9G6u/a37UJ8Ysv4DfjizMbFBcM+SswNnndJienhR6qy8KFuAEaeL4g8Q==", 898 | "dependencies": { 899 | "console-clear": "^1.1.0", 900 | "get-port": "^3.2.0", 901 | "kleur": "^3.0.0", 902 | "local-access": "^1.0.1", 903 | "sade": "^1.6.0", 904 | "semiver": "^1.0.0", 905 | "sirv": "^1.0.11", 906 | "tinydate": "^1.0.0" 907 | }, 908 | "bin": { 909 | "sirv": "bin.js" 910 | }, 911 | "engines": { 912 | "node": ">= 10" 913 | } 914 | }, 915 | "node_modules/source-map": { 916 | "version": "0.7.3", 917 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 918 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", 919 | "dev": true, 920 | "engines": { 921 | "node": ">= 8" 922 | } 923 | }, 924 | "node_modules/source-map-support": { 925 | "version": "0.5.19", 926 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", 927 | "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", 928 | "dev": true, 929 | "dependencies": { 930 | "buffer-from": "^1.0.0", 931 | "source-map": "^0.6.0" 932 | } 933 | }, 934 | "node_modules/source-map-support/node_modules/source-map": { 935 | "version": "0.6.1", 936 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 937 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 938 | "dev": true, 939 | "engines": { 940 | "node": ">=0.10.0" 941 | } 942 | }, 943 | "node_modules/sourcemap-codec": { 944 | "version": "1.4.8", 945 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 946 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 947 | "dev": true 948 | }, 949 | "node_modules/supports-color": { 950 | "version": "5.5.0", 951 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 952 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 953 | "dev": true, 954 | "dependencies": { 955 | "has-flag": "^3.0.0" 956 | }, 957 | "engines": { 958 | "node": ">=4" 959 | } 960 | }, 961 | "node_modules/svelte": { 962 | "version": "3.32.3", 963 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.32.3.tgz", 964 | "integrity": "sha512-5etu/wDwtewhnYO/631KKTjSmFrKohFLWNm1sWErVHXqGZ8eJLqrW0qivDSyYTcN8GbUqsR4LkIhftNFsjNehg==", 965 | "dev": true, 966 | "engines": { 967 | "node": ">= 8" 968 | } 969 | }, 970 | "node_modules/terser": { 971 | "version": "5.6.0", 972 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", 973 | "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", 974 | "dev": true, 975 | "dependencies": { 976 | "commander": "^2.20.0", 977 | "source-map": "~0.7.2", 978 | "source-map-support": "~0.5.19" 979 | }, 980 | "bin": { 981 | "terser": "bin/terser" 982 | }, 983 | "engines": { 984 | "node": ">=10" 985 | } 986 | }, 987 | "node_modules/tinydate": { 988 | "version": "1.3.0", 989 | "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", 990 | "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==", 991 | "engines": { 992 | "node": ">=4" 993 | } 994 | }, 995 | "node_modules/to-regex-range": { 996 | "version": "5.0.1", 997 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 998 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 999 | "dev": true, 1000 | "dependencies": { 1001 | "is-number": "^7.0.0" 1002 | }, 1003 | "engines": { 1004 | "node": ">=8.0" 1005 | } 1006 | }, 1007 | "node_modules/totalist": { 1008 | "version": "1.1.0", 1009 | "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", 1010 | "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", 1011 | "engines": { 1012 | "node": ">=6" 1013 | } 1014 | }, 1015 | "node_modules/wrappy": { 1016 | "version": "1.0.2", 1017 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1018 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1019 | "dev": true 1020 | }, 1021 | "node_modules/ws": { 1022 | "version": "6.2.1", 1023 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", 1024 | "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", 1025 | "dev": true, 1026 | "dependencies": { 1027 | "async-limiter": "~1.0.0" 1028 | } 1029 | } 1030 | }, 1031 | "dependencies": { 1032 | "@babel/code-frame": { 1033 | "version": "7.12.13", 1034 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", 1035 | "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", 1036 | "dev": true, 1037 | "requires": { 1038 | "@babel/highlight": "^7.12.13" 1039 | } 1040 | }, 1041 | "@babel/helper-validator-identifier": { 1042 | "version": "7.12.11", 1043 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", 1044 | "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", 1045 | "dev": true 1046 | }, 1047 | "@babel/highlight": { 1048 | "version": "7.12.13", 1049 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", 1050 | "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", 1051 | "dev": true, 1052 | "requires": { 1053 | "@babel/helper-validator-identifier": "^7.12.11", 1054 | "chalk": "^2.0.0", 1055 | "js-tokens": "^4.0.0" 1056 | } 1057 | }, 1058 | "@polka/url": { 1059 | "version": "1.0.0-next.11", 1060 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.11.tgz", 1061 | "integrity": "sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==" 1062 | }, 1063 | "@rollup/plugin-commonjs": { 1064 | "version": "17.1.0", 1065 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz", 1066 | "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==", 1067 | "dev": true, 1068 | "requires": { 1069 | "@rollup/pluginutils": "^3.1.0", 1070 | "commondir": "^1.0.1", 1071 | "estree-walker": "^2.0.1", 1072 | "glob": "^7.1.6", 1073 | "is-reference": "^1.2.1", 1074 | "magic-string": "^0.25.7", 1075 | "resolve": "^1.17.0" 1076 | } 1077 | }, 1078 | "@rollup/plugin-node-resolve": { 1079 | "version": "11.2.0", 1080 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.0.tgz", 1081 | "integrity": "sha512-qHjNIKYt5pCcn+5RUBQxK8krhRvf1HnyVgUCcFFcweDS7fhkOLZeYh0mhHK6Ery8/bb9tvN/ubPzmfF0qjDCTA==", 1082 | "dev": true, 1083 | "requires": { 1084 | "@rollup/pluginutils": "^3.1.0", 1085 | "@types/resolve": "1.17.1", 1086 | "builtin-modules": "^3.1.0", 1087 | "deepmerge": "^4.2.2", 1088 | "is-module": "^1.0.0", 1089 | "resolve": "^1.19.0" 1090 | } 1091 | }, 1092 | "@rollup/pluginutils": { 1093 | "version": "3.1.0", 1094 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", 1095 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", 1096 | "dev": true, 1097 | "requires": { 1098 | "@types/estree": "0.0.39", 1099 | "estree-walker": "^1.0.1", 1100 | "picomatch": "^2.2.2" 1101 | }, 1102 | "dependencies": { 1103 | "estree-walker": { 1104 | "version": "1.0.1", 1105 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 1106 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 1107 | "dev": true 1108 | } 1109 | } 1110 | }, 1111 | "@types/estree": { 1112 | "version": "0.0.39", 1113 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 1114 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 1115 | "dev": true 1116 | }, 1117 | "@types/node": { 1118 | "version": "14.14.31", 1119 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", 1120 | "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==", 1121 | "dev": true 1122 | }, 1123 | "@types/resolve": { 1124 | "version": "1.17.1", 1125 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", 1126 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", 1127 | "dev": true, 1128 | "requires": { 1129 | "@types/node": "*" 1130 | } 1131 | }, 1132 | "ansi-styles": { 1133 | "version": "3.2.1", 1134 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1135 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1136 | "dev": true, 1137 | "requires": { 1138 | "color-convert": "^1.9.0" 1139 | } 1140 | }, 1141 | "anymatch": { 1142 | "version": "3.1.1", 1143 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 1144 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 1145 | "dev": true, 1146 | "requires": { 1147 | "normalize-path": "^3.0.0", 1148 | "picomatch": "^2.0.4" 1149 | } 1150 | }, 1151 | "async-limiter": { 1152 | "version": "1.0.1", 1153 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", 1154 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", 1155 | "dev": true 1156 | }, 1157 | "balanced-match": { 1158 | "version": "1.0.0", 1159 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1160 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 1161 | "dev": true 1162 | }, 1163 | "binary-extensions": { 1164 | "version": "2.2.0", 1165 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 1166 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 1167 | "dev": true 1168 | }, 1169 | "brace-expansion": { 1170 | "version": "1.1.11", 1171 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1172 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1173 | "dev": true, 1174 | "requires": { 1175 | "balanced-match": "^1.0.0", 1176 | "concat-map": "0.0.1" 1177 | } 1178 | }, 1179 | "braces": { 1180 | "version": "3.0.2", 1181 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1182 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1183 | "dev": true, 1184 | "requires": { 1185 | "fill-range": "^7.0.1" 1186 | } 1187 | }, 1188 | "buffer-from": { 1189 | "version": "1.1.1", 1190 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 1191 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 1192 | "dev": true 1193 | }, 1194 | "builtin-modules": { 1195 | "version": "3.2.0", 1196 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", 1197 | "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", 1198 | "dev": true 1199 | }, 1200 | "chalk": { 1201 | "version": "2.4.2", 1202 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1203 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1204 | "dev": true, 1205 | "requires": { 1206 | "ansi-styles": "^3.2.1", 1207 | "escape-string-regexp": "^1.0.5", 1208 | "supports-color": "^5.3.0" 1209 | } 1210 | }, 1211 | "chokidar": { 1212 | "version": "3.5.1", 1213 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", 1214 | "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", 1215 | "dev": true, 1216 | "requires": { 1217 | "anymatch": "~3.1.1", 1218 | "braces": "~3.0.2", 1219 | "fsevents": "~2.3.1", 1220 | "glob-parent": "~5.1.0", 1221 | "is-binary-path": "~2.1.0", 1222 | "is-glob": "~4.0.1", 1223 | "normalize-path": "~3.0.0", 1224 | "readdirp": "~3.5.0" 1225 | } 1226 | }, 1227 | "color-convert": { 1228 | "version": "1.9.3", 1229 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1230 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1231 | "dev": true, 1232 | "requires": { 1233 | "color-name": "1.1.3" 1234 | } 1235 | }, 1236 | "color-name": { 1237 | "version": "1.1.3", 1238 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1239 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1240 | "dev": true 1241 | }, 1242 | "commander": { 1243 | "version": "2.20.3", 1244 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1245 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 1246 | "dev": true 1247 | }, 1248 | "commondir": { 1249 | "version": "1.0.1", 1250 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 1251 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 1252 | "dev": true 1253 | }, 1254 | "concat-map": { 1255 | "version": "0.0.1", 1256 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1257 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1258 | "dev": true 1259 | }, 1260 | "console-clear": { 1261 | "version": "1.1.1", 1262 | "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", 1263 | "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==" 1264 | }, 1265 | "deepmerge": { 1266 | "version": "4.2.2", 1267 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 1268 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 1269 | "dev": true 1270 | }, 1271 | "escape-string-regexp": { 1272 | "version": "1.0.5", 1273 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1274 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1275 | "dev": true 1276 | }, 1277 | "estree-walker": { 1278 | "version": "2.0.2", 1279 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1280 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 1281 | "dev": true 1282 | }, 1283 | "fill-range": { 1284 | "version": "7.0.1", 1285 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1286 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1287 | "dev": true, 1288 | "requires": { 1289 | "to-regex-range": "^5.0.1" 1290 | } 1291 | }, 1292 | "fs.realpath": { 1293 | "version": "1.0.0", 1294 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1295 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1296 | "dev": true 1297 | }, 1298 | "fsevents": { 1299 | "version": "2.3.2", 1300 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1301 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1302 | "dev": true, 1303 | "optional": true 1304 | }, 1305 | "function-bind": { 1306 | "version": "1.1.1", 1307 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1308 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1309 | "dev": true 1310 | }, 1311 | "get-port": { 1312 | "version": "3.2.0", 1313 | "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", 1314 | "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" 1315 | }, 1316 | "glob": { 1317 | "version": "7.1.6", 1318 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1319 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1320 | "dev": true, 1321 | "requires": { 1322 | "fs.realpath": "^1.0.0", 1323 | "inflight": "^1.0.4", 1324 | "inherits": "2", 1325 | "minimatch": "^3.0.4", 1326 | "once": "^1.3.0", 1327 | "path-is-absolute": "^1.0.0" 1328 | } 1329 | }, 1330 | "glob-parent": { 1331 | "version": "5.1.1", 1332 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 1333 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 1334 | "dev": true, 1335 | "requires": { 1336 | "is-glob": "^4.0.1" 1337 | } 1338 | }, 1339 | "has": { 1340 | "version": "1.0.3", 1341 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1342 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1343 | "dev": true, 1344 | "requires": { 1345 | "function-bind": "^1.1.1" 1346 | } 1347 | }, 1348 | "has-flag": { 1349 | "version": "3.0.0", 1350 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1351 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1352 | "dev": true 1353 | }, 1354 | "inflight": { 1355 | "version": "1.0.6", 1356 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1357 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1358 | "dev": true, 1359 | "requires": { 1360 | "once": "^1.3.0", 1361 | "wrappy": "1" 1362 | } 1363 | }, 1364 | "inherits": { 1365 | "version": "2.0.4", 1366 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1367 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1368 | "dev": true 1369 | }, 1370 | "is-binary-path": { 1371 | "version": "2.1.0", 1372 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1373 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1374 | "dev": true, 1375 | "requires": { 1376 | "binary-extensions": "^2.0.0" 1377 | } 1378 | }, 1379 | "is-core-module": { 1380 | "version": "2.2.0", 1381 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", 1382 | "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", 1383 | "dev": true, 1384 | "requires": { 1385 | "has": "^1.0.3" 1386 | } 1387 | }, 1388 | "is-extglob": { 1389 | "version": "2.1.1", 1390 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1391 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1392 | "dev": true 1393 | }, 1394 | "is-glob": { 1395 | "version": "4.0.1", 1396 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1397 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1398 | "dev": true, 1399 | "requires": { 1400 | "is-extglob": "^2.1.1" 1401 | } 1402 | }, 1403 | "is-module": { 1404 | "version": "1.0.0", 1405 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 1406 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", 1407 | "dev": true 1408 | }, 1409 | "is-number": { 1410 | "version": "7.0.0", 1411 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1412 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1413 | "dev": true 1414 | }, 1415 | "is-reference": { 1416 | "version": "1.2.1", 1417 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 1418 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 1419 | "dev": true, 1420 | "requires": { 1421 | "@types/estree": "*" 1422 | } 1423 | }, 1424 | "jest-worker": { 1425 | "version": "26.6.2", 1426 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", 1427 | "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", 1428 | "dev": true, 1429 | "requires": { 1430 | "@types/node": "*", 1431 | "merge-stream": "^2.0.0", 1432 | "supports-color": "^7.0.0" 1433 | }, 1434 | "dependencies": { 1435 | "has-flag": { 1436 | "version": "4.0.0", 1437 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1438 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1439 | "dev": true 1440 | }, 1441 | "supports-color": { 1442 | "version": "7.2.0", 1443 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1444 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1445 | "dev": true, 1446 | "requires": { 1447 | "has-flag": "^4.0.0" 1448 | } 1449 | } 1450 | } 1451 | }, 1452 | "js-tokens": { 1453 | "version": "4.0.0", 1454 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1455 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1456 | "dev": true 1457 | }, 1458 | "kleur": { 1459 | "version": "3.0.3", 1460 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", 1461 | "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" 1462 | }, 1463 | "livereload": { 1464 | "version": "0.9.1", 1465 | "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz", 1466 | "integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==", 1467 | "dev": true, 1468 | "requires": { 1469 | "chokidar": "^3.3.0", 1470 | "livereload-js": "^3.1.0", 1471 | "opts": ">= 1.2.0", 1472 | "ws": "^6.2.1" 1473 | } 1474 | }, 1475 | "livereload-js": { 1476 | "version": "3.3.1", 1477 | "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.1.tgz", 1478 | "integrity": "sha512-CBu1gTEfzVhlOK1WASKAAJ9Qx1fHECTq0SUB67sfxwQssopTyvzqTlgl+c0h9pZ6V+Fzd2rc510ppuNusg9teQ==", 1479 | "dev": true 1480 | }, 1481 | "local-access": { 1482 | "version": "1.1.0", 1483 | "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", 1484 | "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==" 1485 | }, 1486 | "magic-string": { 1487 | "version": "0.25.7", 1488 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 1489 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", 1490 | "dev": true, 1491 | "requires": { 1492 | "sourcemap-codec": "^1.4.4" 1493 | } 1494 | }, 1495 | "merge-stream": { 1496 | "version": "2.0.0", 1497 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1498 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1499 | "dev": true 1500 | }, 1501 | "mime": { 1502 | "version": "2.5.2", 1503 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", 1504 | "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" 1505 | }, 1506 | "minimatch": { 1507 | "version": "3.0.4", 1508 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1509 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1510 | "dev": true, 1511 | "requires": { 1512 | "brace-expansion": "^1.1.7" 1513 | } 1514 | }, 1515 | "mri": { 1516 | "version": "1.1.6", 1517 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", 1518 | "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==" 1519 | }, 1520 | "normalize-path": { 1521 | "version": "3.0.0", 1522 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1523 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1524 | "dev": true 1525 | }, 1526 | "once": { 1527 | "version": "1.4.0", 1528 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1529 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1530 | "dev": true, 1531 | "requires": { 1532 | "wrappy": "1" 1533 | } 1534 | }, 1535 | "opts": { 1536 | "version": "2.0.2", 1537 | "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", 1538 | "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==", 1539 | "dev": true 1540 | }, 1541 | "path-is-absolute": { 1542 | "version": "1.0.1", 1543 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1544 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1545 | "dev": true 1546 | }, 1547 | "path-parse": { 1548 | "version": "1.0.6", 1549 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1550 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1551 | "dev": true 1552 | }, 1553 | "picomatch": { 1554 | "version": "2.2.2", 1555 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 1556 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 1557 | "dev": true 1558 | }, 1559 | "randombytes": { 1560 | "version": "2.1.0", 1561 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1562 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1563 | "dev": true, 1564 | "requires": { 1565 | "safe-buffer": "^5.1.0" 1566 | } 1567 | }, 1568 | "readdirp": { 1569 | "version": "3.5.0", 1570 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 1571 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 1572 | "dev": true, 1573 | "requires": { 1574 | "picomatch": "^2.2.1" 1575 | } 1576 | }, 1577 | "require-relative": { 1578 | "version": "0.8.7", 1579 | "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", 1580 | "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", 1581 | "dev": true 1582 | }, 1583 | "resolve": { 1584 | "version": "1.20.0", 1585 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 1586 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 1587 | "dev": true, 1588 | "requires": { 1589 | "is-core-module": "^2.2.0", 1590 | "path-parse": "^1.0.6" 1591 | } 1592 | }, 1593 | "rollup": { 1594 | "version": "2.39.0", 1595 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.39.0.tgz", 1596 | "integrity": "sha512-+WR3bttcq7zE+BntH09UxaW3bQo3vItuYeLsyk4dL2tuwbeSKJuvwiawyhEnvRdRgrII0Uzk00FpctHO/zB1kw==", 1597 | "dev": true, 1598 | "requires": { 1599 | "fsevents": "~2.3.1" 1600 | } 1601 | }, 1602 | "rollup-plugin-css-only": { 1603 | "version": "3.1.0", 1604 | "resolved": "https://registry.npmjs.org/rollup-plugin-css-only/-/rollup-plugin-css-only-3.1.0.tgz", 1605 | "integrity": "sha512-TYMOE5uoD76vpj+RTkQLzC9cQtbnJNktHPB507FzRWBVaofg7KhIqq1kGbcVOadARSozWF883Ho9KpSPKH8gqA==", 1606 | "dev": true, 1607 | "requires": { 1608 | "@rollup/pluginutils": "4" 1609 | }, 1610 | "dependencies": { 1611 | "@rollup/pluginutils": { 1612 | "version": "4.1.0", 1613 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.0.tgz", 1614 | "integrity": "sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ==", 1615 | "dev": true, 1616 | "requires": { 1617 | "estree-walker": "^2.0.1", 1618 | "picomatch": "^2.2.2" 1619 | } 1620 | } 1621 | } 1622 | }, 1623 | "rollup-plugin-livereload": { 1624 | "version": "2.0.0", 1625 | "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.0.tgz", 1626 | "integrity": "sha512-oC/8NqumGYuphkqrfszOHUUIwzKsaHBICw6QRwT5uD07gvePTS+HW+GFwu6f9K8W02CUuTvtIM9AWJrbj4wE1A==", 1627 | "dev": true, 1628 | "requires": { 1629 | "livereload": "^0.9.1" 1630 | } 1631 | }, 1632 | "rollup-plugin-svelte": { 1633 | "version": "7.1.0", 1634 | "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.0.tgz", 1635 | "integrity": "sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg==", 1636 | "dev": true, 1637 | "requires": { 1638 | "require-relative": "^0.8.7", 1639 | "rollup-pluginutils": "^2.8.2" 1640 | } 1641 | }, 1642 | "rollup-plugin-terser": { 1643 | "version": "7.0.2", 1644 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", 1645 | "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", 1646 | "dev": true, 1647 | "requires": { 1648 | "@babel/code-frame": "^7.10.4", 1649 | "jest-worker": "^26.2.1", 1650 | "serialize-javascript": "^4.0.0", 1651 | "terser": "^5.0.0" 1652 | } 1653 | }, 1654 | "rollup-pluginutils": { 1655 | "version": "2.8.2", 1656 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 1657 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 1658 | "dev": true, 1659 | "requires": { 1660 | "estree-walker": "^0.6.1" 1661 | }, 1662 | "dependencies": { 1663 | "estree-walker": { 1664 | "version": "0.6.1", 1665 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 1666 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 1667 | "dev": true 1668 | } 1669 | } 1670 | }, 1671 | "sade": { 1672 | "version": "1.7.4", 1673 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", 1674 | "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", 1675 | "requires": { 1676 | "mri": "^1.1.0" 1677 | } 1678 | }, 1679 | "safe-buffer": { 1680 | "version": "5.2.1", 1681 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1682 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1683 | "dev": true 1684 | }, 1685 | "semiver": { 1686 | "version": "1.1.0", 1687 | "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", 1688 | "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==" 1689 | }, 1690 | "serialize-javascript": { 1691 | "version": "4.0.0", 1692 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", 1693 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", 1694 | "dev": true, 1695 | "requires": { 1696 | "randombytes": "^2.1.0" 1697 | } 1698 | }, 1699 | "sirv": { 1700 | "version": "1.0.11", 1701 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.11.tgz", 1702 | "integrity": "sha512-SR36i3/LSWja7AJNRBz4fF/Xjpn7lQFI30tZ434dIy+bitLYSP+ZEenHg36i23V2SGEz+kqjksg0uOGZ5LPiqg==", 1703 | "requires": { 1704 | "@polka/url": "^1.0.0-next.9", 1705 | "mime": "^2.3.1", 1706 | "totalist": "^1.0.0" 1707 | } 1708 | }, 1709 | "sirv-cli": { 1710 | "version": "1.0.11", 1711 | "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-1.0.11.tgz", 1712 | "integrity": "sha512-L8NILoRSBd38VcfFcERYCaVCnWPBLo9G6u/a37UJ8Ysv4DfjizMbFBcM+SswNnndJienhR6qy8KFuAEaeL4g8Q==", 1713 | "requires": { 1714 | "console-clear": "^1.1.0", 1715 | "get-port": "^3.2.0", 1716 | "kleur": "^3.0.0", 1717 | "local-access": "^1.0.1", 1718 | "sade": "^1.6.0", 1719 | "semiver": "^1.0.0", 1720 | "sirv": "^1.0.11", 1721 | "tinydate": "^1.0.0" 1722 | } 1723 | }, 1724 | "source-map": { 1725 | "version": "0.7.3", 1726 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 1727 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", 1728 | "dev": true 1729 | }, 1730 | "source-map-support": { 1731 | "version": "0.5.19", 1732 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", 1733 | "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", 1734 | "dev": true, 1735 | "requires": { 1736 | "buffer-from": "^1.0.0", 1737 | "source-map": "^0.6.0" 1738 | }, 1739 | "dependencies": { 1740 | "source-map": { 1741 | "version": "0.6.1", 1742 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1743 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1744 | "dev": true 1745 | } 1746 | } 1747 | }, 1748 | "sourcemap-codec": { 1749 | "version": "1.4.8", 1750 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 1751 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 1752 | "dev": true 1753 | }, 1754 | "supports-color": { 1755 | "version": "5.5.0", 1756 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1757 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1758 | "dev": true, 1759 | "requires": { 1760 | "has-flag": "^3.0.0" 1761 | } 1762 | }, 1763 | "svelte": { 1764 | "version": "3.32.3", 1765 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.32.3.tgz", 1766 | "integrity": "sha512-5etu/wDwtewhnYO/631KKTjSmFrKohFLWNm1sWErVHXqGZ8eJLqrW0qivDSyYTcN8GbUqsR4LkIhftNFsjNehg==", 1767 | "dev": true 1768 | }, 1769 | "terser": { 1770 | "version": "5.6.0", 1771 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", 1772 | "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", 1773 | "dev": true, 1774 | "requires": { 1775 | "commander": "^2.20.0", 1776 | "source-map": "~0.7.2", 1777 | "source-map-support": "~0.5.19" 1778 | } 1779 | }, 1780 | "tinydate": { 1781 | "version": "1.3.0", 1782 | "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", 1783 | "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==" 1784 | }, 1785 | "to-regex-range": { 1786 | "version": "5.0.1", 1787 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1788 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1789 | "dev": true, 1790 | "requires": { 1791 | "is-number": "^7.0.0" 1792 | } 1793 | }, 1794 | "totalist": { 1795 | "version": "1.1.0", 1796 | "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", 1797 | "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" 1798 | }, 1799 | "wrappy": { 1800 | "version": "1.0.2", 1801 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1802 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1803 | "dev": true 1804 | }, 1805 | "ws": { 1806 | "version": "6.2.1", 1807 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", 1808 | "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", 1809 | "dev": true, 1810 | "requires": { 1811 | "async-limiter": "~1.0.0" 1812 | } 1813 | } 1814 | } 1815 | } 1816 | -------------------------------------------------------------------------------- /src/popup/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-app", 3 | "version": "1.0.0", 4 | "scripts": { 5 | "build": "rollup -c", 6 | "dev": "rollup -c -w", 7 | "start": "sirv public" 8 | }, 9 | "devDependencies": { 10 | "@rollup/plugin-commonjs": "^17.0.0", 11 | "@rollup/plugin-node-resolve": "^11.0.0", 12 | "rollup": "^2.3.4", 13 | "rollup-plugin-css-only": "^3.1.0", 14 | "rollup-plugin-livereload": "^2.0.0", 15 | "rollup-plugin-svelte": "^7.0.0", 16 | "rollup-plugin-terser": "^7.0.0", 17 | "svelte": "^3.0.0" 18 | }, 19 | "dependencies": { 20 | "sirv-cli": "^1.0.0" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/popup/public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sarequl/Netflix-Helper/6c79dcd4db48ade2451024b8f867bfebb3bd0931/src/popup/public/favicon.png -------------------------------------------------------------------------------- /src/popup/public/global.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | width: 320px; 4 | position: relative; 5 | /* height: 100%; */ 6 | } 7 | 8 | body { 9 | color: #333; 10 | margin: 0; 11 | padding: 8px; 12 | box-sizing: border-box; 13 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', 14 | sans-serif; 15 | } 16 | 17 | a { 18 | color: rgb(0, 100, 200); 19 | text-decoration: none; 20 | } 21 | 22 | a:hover { 23 | color: #5672ff; 24 | } 25 | 26 | a:visited { 27 | color: rgb(0, 80, 160); 28 | } 29 | 30 | label { 31 | display: block; 32 | } 33 | 34 | input, 35 | button, 36 | select, 37 | textarea { 38 | font-family: inherit; 39 | font-size: inherit; 40 | -webkit-padding: 4px 0; 41 | padding: 4px; 42 | margin: 0 0 5px 0; 43 | box-sizing: border-box; 44 | border: 1px solid #ccc; 45 | border-radius: 2px; 46 | } 47 | 48 | input:disabled { 49 | color: #ccc; 50 | } 51 | 52 | button { 53 | color: #333; 54 | background-color: #f4f4f4; 55 | outline: none; 56 | } 57 | 58 | button:disabled { 59 | color: #999; 60 | } 61 | 62 | button:not(:disabled):active { 63 | background-color: #ddd; 64 | } 65 | 66 | button:focus { 67 | border-color: #666; 68 | } 69 | 70 | /*global css netflix helper*/ 71 | /*fglobal css*/ 72 | .ci_settings_area { 73 | /*max-width: 36rem;*/ 74 | background: #fff; 75 | font-size: 15px; 76 | font-weight: 700; 77 | font-family: 'Roboto', sans-serif; 78 | margin: auto; 79 | } 80 | h1, 81 | p { 82 | margin: 0; 83 | } 84 | a { 85 | text-decoration: none; 86 | } 87 | ul { 88 | margin: 0; 89 | padding: 0; 90 | list-style: none; 91 | } 92 | 93 | .ci_container { 94 | padding: 16px; 95 | } 96 | /*==============================*/ 97 | /******** Header Area CSS *******/ 98 | /*==============================*/ 99 | 100 | /*==============================*/ 101 | /******** Check Box CSS *********/ 102 | /*==============================*/ 103 | .ci_check-box, 104 | .ci_header-area, 105 | .ci_disable, 106 | .ci_refresh_button { 107 | border-bottom: 2px solid #f2f2f5; 108 | } 109 | .ci_check-box .ci_check input[type='checkbox'] { 110 | width: 16px; 111 | height: 16px; 112 | border: 2px solid #000; 113 | } 114 | .ci_check { 115 | display: flex; 116 | align-items: center; 117 | margin-bottom: 6px; 118 | } 119 | /*.ci_check:nth-of-type(2) { 120 | margin-bottom: 0; 121 | }*/ 122 | .ci_check label { 123 | margin-left: 8px; 124 | line-height: 22px; 125 | } 126 | /*==============================*/ 127 | /********button-disable CSS *****/ 128 | /*==============================*/ 129 | .ci_button-disable span { 130 | margin-right: 10px; 131 | } 132 | .ci_button-disable { 133 | display: flex; 134 | align-items: center; 135 | } 136 | /*On-Off*/ 137 | .ci_on-off-disable { 138 | position: relative; 139 | display: inline-block; 140 | width: 40px; 141 | height: 14px; 142 | } 143 | .ci_on-off-disable input { 144 | opacity: 0; 145 | width: 0; 146 | height: 0; 147 | } 148 | .ci_disable .slider { 149 | position: absolute; 150 | cursor: pointer; 151 | top: 0; 152 | left: 0; 153 | right: 0; 154 | bottom: 0; 155 | background-color: #ccc; 156 | -webkit-transition: 0.4s; 157 | transition: 0.4s; 158 | } 159 | .ci_disable .slider::before { 160 | position: absolute; 161 | content: ''; 162 | height: 10px; 163 | width: 10px; 164 | left: 2px; 165 | top: 2px; 166 | background-color: white; 167 | transition: 0.4s; 168 | } 169 | .ci_disable input:checked + .slider { 170 | background-color: #000000; 171 | } 172 | 173 | .ci_disable input:checked + .slider:before { 174 | transform: translateX(15px); 175 | } 176 | 177 | .slider.round { 178 | border-radius: 34px; 179 | } 180 | .slider.round:before { 181 | border-radius: 50%; 182 | } 183 | /*==============================*/ 184 | /******** Bottom item CSS *******/ 185 | /*==============================*/ 186 | .ci_bottom-item ul li { 187 | margin-bottom: 16px; 188 | } 189 | .ci_bottom-item ul li a { 190 | color: #08092e; 191 | display: flex; 192 | align-items: center; 193 | font-size: 14px; 194 | } 195 | .ci_bottom-item ul li a i { 196 | font-size: 18px; 197 | margin-right: 10px; 198 | } 199 | .ci_bottom-item ul li:nth-child(1) a i { 200 | color: #ffa127; 201 | } 202 | .ci_bottom-item ul li:nth-child(2) a i { 203 | color: #4b50f9; 204 | } 205 | .ci_bottom-item ul li:nth-child(3) a { 206 | color: #26cb3c; 207 | } 208 | .ci_bottom-item ul li:nth-of-type(3) { 209 | margin-bottom: 0; 210 | } 211 | 212 | .slider.round.svelte-gnth4s.svelte-gnth4s { 213 | border-radius: 34px !important; 214 | } 215 | 216 | .ci_on-off.svelte-gnth4s.svelte-gnth4s { 217 | position: relative; 218 | display: inline-block; 219 | width: 40px !important; 220 | height: 24px !important; 221 | } 222 | input.svelte-gnth4s:checked + .slider.svelte-gnth4s:before { 223 | transform: translateX(15px) !important; 224 | } 225 | .slider.svelte-gnth4s.svelte-gnth4s:before { 226 | position: absolute; 227 | content: ''; 228 | height: 18px !important; 229 | width: 18px !important; 230 | left: 3px !important; 231 | bottom: 3px !important; 232 | background-color: white; 233 | transition: 0.4s; 234 | } 235 | -------------------------------------------------------------------------------- /src/popup/public/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sarequl/Netflix-Helper/6c79dcd4db48ade2451024b8f867bfebb3bd0931/src/popup/public/icon128.png -------------------------------------------------------------------------------- /src/popup/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |