From 29fc31900316c2188131cb2049d7f74025b40060 Mon Sep 17 00:00:00 2001 From: Peter Thaleikis Date: Thu, 24 Nov 2022 00:21:26 +0100 Subject: [PATCH] Remove website (fixes #105) * Remove website (fixes #105) * Updating CHANGELOG --- CHANGELOG.md | 6 + websites/.gitignore | 4 - websites/.nvmrc | 1 - websites/.vuepress/config.js | 83 - websites/.vuepress/config.theme.de.js | 65 - websites/.vuepress/config.theme.en.js | 68 - websites/.vuepress/config.theme.es.js | 65 - websites/.vuepress/config.theme.fr.js | 65 - websites/.vuepress/config.theme.vi.js | 65 - websites/.vuepress/public/_redirects | 61 - websites/.vuepress/public/logo-dark.png | Bin 34627 -> 0 bytes .../public/logo-light-with-space.png | Bin 25405 -> 0 bytes websites/.vuepress/public/logo-light.png | Bin 27537 -> 0 bytes websites/.vuepress/public/logo.svg | 108 - websites/README.md | 368 - websites/apis/alibaba.md | 18 - websites/apis/amazon.md | 22 - websites/apis/etsy.md | 22 - websites/apis/facebook.md | 28 - websites/apis/instagram.md | 34 - websites/apis/linkedin.md | 21 - websites/apis/target.md | 18 - websites/apis/tiktok.md | 21 - websites/apis/walmart.md | 18 - websites/apis/zalando.md | 18 - websites/contributing.md | 28 - websites/de/README.md | 184 - websites/de/apis/alibaba.md | 16 - websites/de/apis/amazon.md | 22 - websites/de/apis/etsy.md | 22 - websites/de/apis/facebook.md | 28 - websites/de/apis/instagram.md | 34 - websites/de/apis/linkedin.md | 21 - websites/de/apis/target.md | 18 - websites/de/apis/tiktok.md | 21 - websites/de/apis/walmart.md | 18 - websites/de/apis/zalando.md | 18 - websites/de/examples/extract-keywords.md | 122 - websites/de/examples/headings.md | 124 - websites/de/examples/lists.md | 71 - websites/de/examples/navigation.md | 59 - websites/de/examples/outline.md | 215 - websites/de/examples/paragraphs.md | 64 - websites/de/examples/scrape-header-tags.md | 153 - websites/de/examples/scrape-images.md | 79 - websites/de/examples/scrape-links.md | 120 - websites/de/examples/scrape-meta-tags.md | 114 - .../examples/scrape-social-media-meta-tags.md | 103 - websites/de/examples/scrape-website-title.md | 89 - websites/de/misc/show-case.md | 7 - websites/de/misc/sponsors.md | 13 - websites/de/misc/support.md | 13 - websites/de/misc/tutorials.md | 7 - websites/es/README.md | 169 - websites/es/apis/alibaba.md | 18 - websites/es/apis/amazon.md | 22 - websites/es/apis/etsy.md | 22 - websites/es/apis/facebook.md | 28 - websites/es/apis/instagram.md | 34 - websites/es/apis/linkedin.md | 21 - websites/es/apis/target.md | 18 - websites/es/apis/tiktok.md | 21 - websites/es/apis/walmart.md | 18 - websites/es/apis/zalando.md | 18 - websites/es/examples/extract-keywords.md | 123 - websites/es/examples/headings.md | 124 - websites/es/examples/lists.md | 70 - websites/es/examples/navigation.md | 59 - websites/es/examples/outline.md | 215 - websites/es/examples/paragraphs.md | 64 - websites/es/examples/scrape-header-tags.md | 153 - websites/es/examples/scrape-images.md | 78 - websites/es/examples/scrape-links.md | 120 - websites/es/examples/scrape-meta-tags.md | 114 - .../examples/scrape-social-media-meta-tags.md | 103 - websites/es/examples/scrape-website-title.md | 89 - websites/es/misc/show-case.md | 7 - websites/es/misc/sponsors.md | 13 - websites/es/misc/support.md | 13 - websites/es/misc/tutorials.md | 7 - websites/examples/custom-selectors.md | 85 - websites/examples/extract-keywords.md | 122 - websites/examples/headings.md | 124 - websites/examples/lists.md | 71 - websites/examples/navigation.md | 59 - websites/examples/outline.md | 215 - websites/examples/paragraphs.md | 64 - .../examples/parse-csv-json-and-xml-files.md | 150 - websites/examples/scrape-feeds.md | 131 - websites/examples/scrape-header-tags.md | 153 - websites/examples/scrape-images.md | 88 - websites/examples/scrape-links.md | 120 - websites/examples/scrape-meta-tags.md | 114 - .../examples/scrape-social-media-meta-tags.md | 103 - websites/examples/scrape-website-title.md | 89 - websites/fr/README.md | 174 - websites/fr/apis/alibaba.md | 18 - websites/fr/apis/amazon.md | 22 - websites/fr/apis/etsy.md | 22 - websites/fr/apis/facebook.md | 28 - websites/fr/apis/instagram.md | 34 - websites/fr/apis/linkedin.md | 21 - websites/fr/apis/target.md | 18 - websites/fr/apis/tiktok.md | 21 - websites/fr/apis/walmart.md | 18 - websites/fr/apis/zalando.md | 18 - websites/fr/examples/extract-keywords.md | 122 - websites/fr/examples/headings.md | 124 - websites/fr/examples/lists.md | 71 - websites/fr/examples/navigation.md | 59 - websites/fr/examples/outline.md | 215 - websites/fr/examples/paragraphs.md | 64 - websites/fr/examples/scrape-header-tags.md | 153 - websites/fr/examples/scrape-images.md | 79 - websites/fr/examples/scrape-links.md | 120 - websites/fr/examples/scrape-meta-tags.md | 114 - .../examples/scrape-social-media-meta-tags.md | 103 - websites/fr/examples/scrape-website-title.md | 89 - websites/fr/misc/show-case.md | 7 - websites/fr/misc/sponsors.md | 13 - websites/fr/misc/support.md | 13 - websites/fr/misc/tutorials.md | 7 - websites/misc/show-case.md | 7 - websites/misc/sponsors.md | 13 - websites/misc/support.md | 13 - websites/misc/tutorials.md | 7 - websites/netlify.toml | 8 - websites/package.json | 19 - websites/vi/README.md | 167 - websites/vi/contributing.md | 26 - websites/vi/examples/extract-keywords.md | 121 - websites/vi/examples/headings.md | 120 - websites/vi/examples/lists.md | 70 - websites/vi/examples/navigation.md | 56 - websites/vi/examples/outline.md | 210 - websites/vi/examples/paragraphs.md | 61 - websites/vi/examples/scrape-header-tags.md | 147 - websites/vi/examples/scrape-images.md | 74 - websites/vi/examples/scrape-links.md | 117 - websites/vi/examples/scrape-meta-tags.md | 110 - .../examples/scrape-social-media-meta-tags.md | 101 - websites/vi/examples/scrape-website-title.md | 86 - websites/vi/misc/show-case.md | 7 - websites/vi/misc/sponsors.md | 13 - websites/vi/misc/support.md | 13 - websites/vi/misc/tutorials.md | 7 - websites/yarn.lock | 8944 ----------------- 147 files changed, 6 insertions(+), 18649 deletions(-) delete mode 100644 websites/.gitignore delete mode 100644 websites/.nvmrc delete mode 100644 websites/.vuepress/config.js delete mode 100644 websites/.vuepress/config.theme.de.js delete mode 100644 websites/.vuepress/config.theme.en.js delete mode 100644 websites/.vuepress/config.theme.es.js delete mode 100644 websites/.vuepress/config.theme.fr.js delete mode 100644 websites/.vuepress/config.theme.vi.js delete mode 100644 websites/.vuepress/public/_redirects delete mode 100644 websites/.vuepress/public/logo-dark.png delete mode 100644 websites/.vuepress/public/logo-light-with-space.png delete mode 100644 websites/.vuepress/public/logo-light.png delete mode 100644 websites/.vuepress/public/logo.svg delete mode 100644 websites/README.md delete mode 100644 websites/apis/alibaba.md delete mode 100644 websites/apis/amazon.md delete mode 100644 websites/apis/etsy.md delete mode 100644 websites/apis/facebook.md delete mode 100644 websites/apis/instagram.md delete mode 100644 websites/apis/linkedin.md delete mode 100644 websites/apis/target.md delete mode 100644 websites/apis/tiktok.md delete mode 100644 websites/apis/walmart.md delete mode 100644 websites/apis/zalando.md delete mode 100644 websites/contributing.md delete mode 100644 websites/de/README.md delete mode 100644 websites/de/apis/alibaba.md delete mode 100644 websites/de/apis/amazon.md delete mode 100644 websites/de/apis/etsy.md delete mode 100644 websites/de/apis/facebook.md delete mode 100644 websites/de/apis/instagram.md delete mode 100644 websites/de/apis/linkedin.md delete mode 100644 websites/de/apis/target.md delete mode 100644 websites/de/apis/tiktok.md delete mode 100644 websites/de/apis/walmart.md delete mode 100644 websites/de/apis/zalando.md delete mode 100644 websites/de/examples/extract-keywords.md delete mode 100644 websites/de/examples/headings.md delete mode 100644 websites/de/examples/lists.md delete mode 100644 websites/de/examples/navigation.md delete mode 100644 websites/de/examples/outline.md delete mode 100644 websites/de/examples/paragraphs.md delete mode 100644 websites/de/examples/scrape-header-tags.md delete mode 100644 websites/de/examples/scrape-images.md delete mode 100644 websites/de/examples/scrape-links.md delete mode 100644 websites/de/examples/scrape-meta-tags.md delete mode 100644 websites/de/examples/scrape-social-media-meta-tags.md delete mode 100644 websites/de/examples/scrape-website-title.md delete mode 100644 websites/de/misc/show-case.md delete mode 100644 websites/de/misc/sponsors.md delete mode 100644 websites/de/misc/support.md delete mode 100644 websites/de/misc/tutorials.md delete mode 100644 websites/es/README.md delete mode 100644 websites/es/apis/alibaba.md delete mode 100644 websites/es/apis/amazon.md delete mode 100644 websites/es/apis/etsy.md delete mode 100644 websites/es/apis/facebook.md delete mode 100644 websites/es/apis/instagram.md delete mode 100644 websites/es/apis/linkedin.md delete mode 100644 websites/es/apis/target.md delete mode 100644 websites/es/apis/tiktok.md delete mode 100644 websites/es/apis/walmart.md delete mode 100644 websites/es/apis/zalando.md delete mode 100644 websites/es/examples/extract-keywords.md delete mode 100644 websites/es/examples/headings.md delete mode 100644 websites/es/examples/lists.md delete mode 100644 websites/es/examples/navigation.md delete mode 100644 websites/es/examples/outline.md delete mode 100644 websites/es/examples/paragraphs.md delete mode 100644 websites/es/examples/scrape-header-tags.md delete mode 100644 websites/es/examples/scrape-images.md delete mode 100644 websites/es/examples/scrape-links.md delete mode 100644 websites/es/examples/scrape-meta-tags.md delete mode 100644 websites/es/examples/scrape-social-media-meta-tags.md delete mode 100644 websites/es/examples/scrape-website-title.md delete mode 100644 websites/es/misc/show-case.md delete mode 100644 websites/es/misc/sponsors.md delete mode 100644 websites/es/misc/support.md delete mode 100644 websites/es/misc/tutorials.md delete mode 100644 websites/examples/custom-selectors.md delete mode 100644 websites/examples/extract-keywords.md delete mode 100644 websites/examples/headings.md delete mode 100644 websites/examples/lists.md delete mode 100644 websites/examples/navigation.md delete mode 100644 websites/examples/outline.md delete mode 100644 websites/examples/paragraphs.md delete mode 100644 websites/examples/parse-csv-json-and-xml-files.md delete mode 100644 websites/examples/scrape-feeds.md delete mode 100644 websites/examples/scrape-header-tags.md delete mode 100644 websites/examples/scrape-images.md delete mode 100644 websites/examples/scrape-links.md delete mode 100644 websites/examples/scrape-meta-tags.md delete mode 100644 websites/examples/scrape-social-media-meta-tags.md delete mode 100644 websites/examples/scrape-website-title.md delete mode 100644 websites/fr/README.md delete mode 100644 websites/fr/apis/alibaba.md delete mode 100644 websites/fr/apis/amazon.md delete mode 100644 websites/fr/apis/etsy.md delete mode 100644 websites/fr/apis/facebook.md delete mode 100644 websites/fr/apis/instagram.md delete mode 100644 websites/fr/apis/linkedin.md delete mode 100644 websites/fr/apis/target.md delete mode 100644 websites/fr/apis/tiktok.md delete mode 100644 websites/fr/apis/walmart.md delete mode 100644 websites/fr/apis/zalando.md delete mode 100644 websites/fr/examples/extract-keywords.md delete mode 100644 websites/fr/examples/headings.md delete mode 100644 websites/fr/examples/lists.md delete mode 100644 websites/fr/examples/navigation.md delete mode 100644 websites/fr/examples/outline.md delete mode 100644 websites/fr/examples/paragraphs.md delete mode 100644 websites/fr/examples/scrape-header-tags.md delete mode 100644 websites/fr/examples/scrape-images.md delete mode 100644 websites/fr/examples/scrape-links.md delete mode 100644 websites/fr/examples/scrape-meta-tags.md delete mode 100644 websites/fr/examples/scrape-social-media-meta-tags.md delete mode 100644 websites/fr/examples/scrape-website-title.md delete mode 100644 websites/fr/misc/show-case.md delete mode 100644 websites/fr/misc/sponsors.md delete mode 100644 websites/fr/misc/support.md delete mode 100644 websites/fr/misc/tutorials.md delete mode 100644 websites/misc/show-case.md delete mode 100644 websites/misc/sponsors.md delete mode 100644 websites/misc/support.md delete mode 100644 websites/misc/tutorials.md delete mode 100644 websites/netlify.toml delete mode 100644 websites/package.json delete mode 100644 websites/vi/README.md delete mode 100644 websites/vi/contributing.md delete mode 100644 websites/vi/examples/extract-keywords.md delete mode 100644 websites/vi/examples/headings.md delete mode 100644 websites/vi/examples/lists.md delete mode 100644 websites/vi/examples/navigation.md delete mode 100644 websites/vi/examples/outline.md delete mode 100644 websites/vi/examples/paragraphs.md delete mode 100644 websites/vi/examples/scrape-header-tags.md delete mode 100644 websites/vi/examples/scrape-images.md delete mode 100644 websites/vi/examples/scrape-links.md delete mode 100644 websites/vi/examples/scrape-meta-tags.md delete mode 100644 websites/vi/examples/scrape-social-media-meta-tags.md delete mode 100644 websites/vi/examples/scrape-website-title.md delete mode 100644 websites/vi/misc/show-case.md delete mode 100644 websites/vi/misc/sponsors.md delete mode 100644 websites/vi/misc/support.md delete mode 100644 websites/vi/misc/tutorials.md delete mode 100644 websites/yarn.lock diff --git a/CHANGELOG.md b/CHANGELOG.md index e459b4f..d68b290 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ Parts regarding the [documentation website](https://phpscraper.de), the [test pa This project adheres to [Semantic Versioning](http://semver.org/). +## 1.0.0 (2022-11-24) + +- [#151](https://github.com/spekulatius/PHPScraper/issues/151): Migrate website into separate repo. +- [#150](https://github.com/spekulatius/PHPScraper/issues/150): Switch namespaces. See [UPGRADING](https://github.com/spekulatius/PHPScraper/blob/master/UPGRADING.md) for more details. +- [#147](https://github.com/spekulatius/PHPScraper/issues/147): Prepare for v1.0 + ## 0.13.0 (2022-11-21) - [#146](https://github.com/spekulatius/PHPScraper/issues/146): Implement plain text file/URL parsing. diff --git a/websites/.gitignore b/websites/.gitignore deleted file mode 100644 index df07152..0000000 --- a/websites/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules/ -dist/ -.idea -.vscode diff --git a/websites/.nvmrc b/websites/.nvmrc deleted file mode 100644 index 6f7f377..0000000 --- a/websites/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v16 diff --git a/websites/.vuepress/config.js b/websites/.vuepress/config.js deleted file mode 100644 index 727e86c..0000000 --- a/websites/.vuepress/config.js +++ /dev/null @@ -1,83 +0,0 @@ -const fs = require('fs') -const path = require('path') - -module.exports = { - dest: 'dist/', - title: 'PHP Scraper: a web utility for PHP', - description: 'PHP Scraper is providing a simpler way to fetch and parse websites using PHP.', - - plugins: { - 'seo': {}, - 'web-monetization': { address: '$ilp.uphold.com/DrRw6MnEEqBB' }, - 'umami': { trackerUrl: 'https://u.peterthaleikis.com', siteId: '5ee0a886-020d-4fd9-99f1-201ef2691cf6' }, - 'canonical': { baseURL: 'https://phpscraper.de' }, - 'sitemap': { hostname: 'https://phpscraper.de/', changefreq: 'monthly' }, - - '@vuepress/pwa': { - serviceWorker: true, - updatePopup: false - }, - '@vuepress/plugin-back-to-top': {}, - - 'social-share': { - networks: ['telegram', 'line', 'twitter', 'reddit'], - twitterUser: 'spekulatius1984', - fallbackImage: 'https://api.imageee.com/bold?text=PHP%20Scraper:%20Bringing%20Simplicity%20back%20to%20Scraping%20and%20Crawling&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7', - autoQuote: true, - isPlain: true, - }, - }, - serviceWorker: true, - - locales: { - '/': { - lang: 'en-US', - title: 'PHP Scraper: a web utility for PHP', - description: 'PHP Scraper is providing a fuss-free way to scrape and crawl websites using PHP.' - }, - '/de/': { - lang: 'de', - title: 'PHP Scraper: Scraping und Crawling einfach gemacht', - description: 'PHP Scraper: Scraping, Crawling und Daten Sammeln einfach gemacht.' - }, - '/es/': { - lang: 'es', - title: 'PHP Scraper: La simplicidad en el scraping y el crawling', - description: 'PHP Scraper proporciona una forma más sencilla de obtener y analizar sitios web utilizando PHP.' - }, - '/fr/': { - lang: 'fr', - title: 'PHP Scraper: Simplifier les opérations de scraping et de crawling', - description: 'PHP Scraper offre un moyen plus simple de récupérer et d\'analyser des sites web en utilisant PHP.' - }, - '/vi/': { - lang: 'vi', - title: 'PHP Scraper: Đưa sự đơn giản trở lại Thu thập và Cào', - description: 'PHP Scraper đang cung cấp một cách dễ dàng phân tích và thu thập dữ liệu các trang web bằng PHP.' - }, - }, - themeConfig: { - domain: 'https://phpscraper.de', - repo: 'spekulatius/phpscraper', - docsDir: 'websites', - editLinks: true, - smoothScroll: true, - locales: { - '/': { - ...require('./config.theme.en') - }, - '/de/': { - ...require('./config.theme.de') - }, - '/es/': { - ...require('./config.theme.es') - }, - '/fr/': { - ...require('./config.theme.fr') - }, - '/vi/': { - ...require('./config.theme.vi') - }, - } - } -}; diff --git a/websites/.vuepress/config.theme.de.js b/websites/.vuepress/config.theme.de.js deleted file mode 100644 index 275dc25..0000000 --- a/websites/.vuepress/config.theme.de.js +++ /dev/null @@ -1,65 +0,0 @@ -module.exports = { - selectText: '🇺🇳️', - label: 'Deutsch', - ariaLabel: 'Sprachen', - editLinkText: 'Diese Seite auf GitHub bearbeiten', - lastConfig: 'Zuletzt aktualisiert', - serviceWorker: { - updatePopup: { - message: "Neue Inhalte sind verfügbar.", - buttonText: "Aktualisieren" - } - }, - sidebar: [ - { - title: '', - collapsable: false, - children: [ - 'de/examples/scrape-website-title', - 'de/examples/scrape-header-tags', - 'de/examples/scrape-meta-tags', - 'de/examples/scrape-social-media-meta-tags', - ], - }, - { - title: '', - collapsable: false, - children: [ - 'de/examples/headings', - 'de/examples/outline', - 'de/examples/paragraphs', - 'de/examples/lists', - 'de/examples/extract-keywords', - 'de/examples/scrape-images', - 'de/examples/scrape-links', - 'de/examples/navigation', - ], - }, - { - title: 'APIs', - collapsable: false, - children: [ - 'de/apis/alibaba', - 'de/apis/amazon', - 'de/apis/facebook', - 'de/apis/etsy', - 'de/apis/instagram', - 'de/apis/linkedin', - 'de/apis/target', - 'de/apis/tiktok', - 'de/apis/walmart', - 'de/apis/zalando', - ], - }, - { - title: 'usw', - collapsable: false, - children: [ - 'de/misc/sponsors', - 'de/misc/tutorials', - 'de/misc/show-case', - 'de/misc/support', - ], - }, - ] -} diff --git a/websites/.vuepress/config.theme.en.js b/websites/.vuepress/config.theme.en.js deleted file mode 100644 index 997a97c..0000000 --- a/websites/.vuepress/config.theme.en.js +++ /dev/null @@ -1,68 +0,0 @@ -module.exports = { - selectText: '🇺🇳️', - label: 'English', - ariaLabel: 'Languages', - editLinkText: 'Edit this page on GitHub', - lastConfig: 'Last updated', - serviceWorker: { - updatePopup: { - message: "New content is available.", - buttonText: "Refresh" - } - }, - sidebar: [ - { - title: '', - collapsable: false, - children: [ - 'examples/scrape-website-title', - 'examples/scrape-header-tags', - 'examples/scrape-meta-tags', - 'examples/scrape-social-media-meta-tags', - 'examples/scrape-feeds', - 'examples/parse-csv-json-and-xml-files', - ], - }, - { - title: '', - collapsable: false, - children: [ - 'examples/headings', - 'examples/outline', - 'examples/paragraphs', - 'examples/lists', - 'examples/extract-keywords', - 'examples/scrape-images', - 'examples/scrape-links', - 'examples/navigation', - 'examples/custom-selectors', - ], - }, - { - title: 'APIs', - collapsable: false, - children: [ - 'apis/alibaba', - 'apis/amazon', - 'apis/facebook', - 'apis/etsy', - 'apis/instagram', - 'apis/linkedin', - 'apis/target', - 'apis/tiktok', - 'apis/walmart', - 'apis/zalando', - ], - }, - { - title: 'MISC', - collapsable: false, - children: [ - 'misc/sponsors', - 'misc/tutorials', - 'misc/show-case', - 'misc/support', - ], - }, - ] -} diff --git a/websites/.vuepress/config.theme.es.js b/websites/.vuepress/config.theme.es.js deleted file mode 100644 index 0855a9b..0000000 --- a/websites/.vuepress/config.theme.es.js +++ /dev/null @@ -1,65 +0,0 @@ -module.exports = { - selectText: '🇺🇳️', - label: 'Español', - ariaLabel: 'Idiomas', - editLinkText: 'Editar esta página en GitHub', - lastConfig: 'Última actualizado', - serviceWorker: { - updatePopup: { - message: "Hay nuevos contenidos disponibles.", - buttonText: "Actualizar" - } - }, - sidebar: [ - { - title: '', - collapsable: false, - children: [ - 'es/examples/scrape-website-title', - 'es/examples/scrape-header-tags', - 'es/examples/scrape-meta-tags', - 'es/examples/scrape-social-media-meta-tags', - ], - }, - { - title: '', - collapsable: false, - children: [ - 'es/examples/headings', - 'es/examples/outline', - 'es/examples/paragraphs', - 'es/examples/lists', - 'es/examples/extract-keywords', - 'es/examples/scrape-images', - 'es/examples/scrape-links', - 'es/examples/navigation', - ], - }, - { - title: 'APIs', - collapsable: false, - children: [ - 'es/apis/alibaba', - 'es/apis/amazon', - 'es/apis/facebook', - 'es/apis/etsy', - 'es/apis/instagram', - 'es/apis/linkedin', - 'es/apis/target', - 'es/apis/tiktok', - 'es/apis/walmart', - 'es/apis/zalando', - ], - }, - { - title: 'Misceláneas', - collapsable: false, - children: [ - 'es/misc/sponsors', - 'es/misc/tutorials', - 'es/misc/show-case', - 'es/misc/support', - ], - }, - ] -} diff --git a/websites/.vuepress/config.theme.fr.js b/websites/.vuepress/config.theme.fr.js deleted file mode 100644 index 8f86324..0000000 --- a/websites/.vuepress/config.theme.fr.js +++ /dev/null @@ -1,65 +0,0 @@ -module.exports = { - selectText: '🇺🇳️', - label: 'Français', - ariaLabel: 'Langues', - editLinkText: 'Modifier cette page sur GitHub', - lastConfig: 'Dernière mise à jour', - serviceWorker: { - updatePopup: { - message: "Le nouveau contenu est disponible.", - buttonText: "Rafraîchir" - } - }, - sidebar: [ - { - title: '', - collapsable: false, - children: [ - 'fr/examples/scrape-website-title', - 'fr/examples/scrape-header-tags', - 'fr/examples/scrape-meta-tags', - 'fr/examples/scrape-social-media-meta-tags', - ], - }, - { - title: '', - collapsable: false, - children: [ - 'fr/examples/headings', - 'fr/examples/outline', - 'fr/examples/paragraphs', - 'fr/examples/lists', - 'fr/examples/extract-keywords', - 'fr/examples/scrape-images', - 'fr/examples/scrape-links', - 'fr/examples/navigation', - ], - }, - { - title: 'APIs', - collapsable: false, - children: [ - 'fr/apis/alibaba', - 'fr/apis/amazon', - 'fr/apis/facebook', - 'fr/apis/etsy', - 'fr/apis/instagram', - 'fr/apis/linkedin', - 'fr/apis/target', - 'fr/apis/tiktok', - 'fr/apis/walmart', - 'fr/apis/zalando', - ], - }, - { - title: 'MISC', - collapsable: false, - children: [ - 'fr/misc/sponsors', - 'fr/misc/tutorials', - 'fr/misc/show-case', - 'fr/misc/support', - ], - }, - ] -} diff --git a/websites/.vuepress/config.theme.vi.js b/websites/.vuepress/config.theme.vi.js deleted file mode 100644 index 5b0eb0f..0000000 --- a/websites/.vuepress/config.theme.vi.js +++ /dev/null @@ -1,65 +0,0 @@ -module.exports = { - selectText: '🇻🇳', - label: 'Tiếng Việt', - ariaLabel: 'Ngôn ngữ', - editLinkText: 'Chỉnh sửa trang này trên GitHub', - lastConfig: 'Cập nhật lần cuối', - serviceWorker: { - updatePopup: { - message: "Nội dung mới có sẵn.", - buttonText: "Tải lại" - } - }, - sidebar: [ - { - title: '', - collapsable: false, - children: [ - 'vi/examples/scrape-website-title', - 'vi/examples/scrape-header-tags', - 'vi/examples/scrape-meta-tags', - 'vi/examples/scrape-social-media-meta-tags', - ], - }, - { - title: '', - collapsable: false, - children: [ - 'vi/examples/headings', - 'vi/examples/outline', - 'vi/examples/paragraphs', - 'vi/examples/lists', - 'vi/examples/extract-keywords', - 'vi/examples/scrape-images', - 'vi/examples/scrape-links', - 'vi/examples/navigation', - ], - }, - // { - // title: 'APIs', - // collapsable: false, - // children: [ - // 'apis/alibaba', - // 'apis/amazon', - // 'apis/facebook', - // 'apis/etsy', - // 'apis/instagram', - // 'apis/linkedin', - // 'apis/target', - // 'apis/tiktok', - // 'apis/walmart', - // 'apis/zalando', - // ], - // }, - { - title: 'MISC', - collapsable: false, - children: [ - 'vi/misc/sponsors', - 'vi/misc/tutorials', - 'vi/misc/show-case', - 'vi/misc/support', - ], - }, - ] -} diff --git a/websites/.vuepress/public/_redirects b/websites/.vuepress/public/_redirects deleted file mode 100644 index de2fb32..0000000 --- a/websites/.vuepress/public/_redirects +++ /dev/null @@ -1,61 +0,0 @@ -/basic/installation /#installation -/apis/amazon /apis/amazon.html -/apis/etsy /apis/etsy.html -/apis/facebook /apis/facebook.html -/apis/target /apis/target.html -/apis/tiktok /apis/tiktok.html -/examples/extract-keywords /examples/extract-keywords.html -/examples/headings /examples/headings.html -/examples/navigation /examples/navigation.html -/examples/scrape-social-media-meta-tags /examples/scrape-social-media-meta-tags.html -/examples/scrape-website-title /examples/scrape-website-title.html -/support/support /support/support.html -/es/apis/alibaba /es/apis/alibaba.html -/es/apis/amazon /es/apis/amazon.html -/es/apis/etsy /es/apis/etsy.html -/es/apis/facebook /es/apis/facebook.html -/es/apis/instagram /es/apis/instagram.html -/es/apis/linkedin /es/apis/linkedin.html -/es/apis/target /es/apis/target.html -/es/apis/tiktok /es/apis/tiktok.html -/es/apis/walmart /es/apis/walmart.html -/es/apis/zalando /es/apis/zalando.html -/es/examples/extract-keywords /es/examples/extract-keywords.html -/es/examples/headings /es/examples/headings.html -/es/examples/navigation /es/examples/navigation.html -/es/examples/outline /es/examples/outline.html -/es/examples/scrape-header-tags /es/examples/scrape-header-tags.html -/es/examples/scrape-images /es/examples/scrape-images.html -/es/examples/scrape-meta-tags /es/examples/scrape-meta-tags.html -/es/examples/scrape-social-media-meta-tags /es/examples/scrape-social-media-meta-tags.html -/es/examples/scrape-website-title /es/examples/scrape-website-title.html -/es/support/more-examples /es/support/more-examples.html -/es/support/support /es/support/support.html -/de/apis/alibaba /de/apis/alibaba.html -/de/apis/facebook /de/apis/facebook.html -/de/examples/extract-keywords /de/examples/extract-keywords.html -/de/examples/navigation /de/examples/navigation.html -/de/examples/paragraphs /de/examples/paragraphs.html -/de/examples/scrape-header-tags /de/examples/scrape-header-tags.html -/de/examples/scrape-meta-tags /de/examples/scrape-meta-tags.html -/fr/apis/alibaba /fr/apis/alibaba.html -/fr/apis/amazon /fr/apis/amazon.html -/fr/apis/etsy /fr/apis/etsy.html -/fr/apis/facebook /fr/apis/facebook.html -/fr/apis/instagram /fr/apis/instagram.html -/fr/apis/linkedin /fr/apis/linkedin.html -/fr/apis/target /fr/apis/target.html -/fr/apis/tiktok /fr/apis/tiktok.html -/fr/apis/zalando /fr/apis/zalando.html -/fr/examples/headings /fr/examples/headings.html -/fr/examples/lists /fr/examples/lists.html -/fr/examples/paragraphs /fr/examples/paragraphs.html -/fr/examples/scrape-images /fr/examples/scrape-images.html -/fr/examples/scrape-meta-tags /fr/examples/scrape-meta-tags.html -/fr/examples/scrape-website-title /fr/examples/scrape-website-title.html -/fr/support/more-examples /fr/support/more-examples.html -/support/tutorials.html /misc/tutorials.html -/de/support/tutorials.html /de/misc/tutorials.html -/es/support/tutorials.html /es/misc/tutorials.html -/fr/support/tutorials.html /fr/misc/tutorials.html -/vi/support/tutorials.html /vi/misc/tutorials.html \ No newline at end of file diff --git a/websites/.vuepress/public/logo-dark.png b/websites/.vuepress/public/logo-dark.png deleted file mode 100644 index 9720a9b7214513eb0fde42c602fdf439090e49f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34627 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 N002ovPDHLkV1l~7pa}o~ diff --git a/websites/.vuepress/public/logo-light-with-space.png b/websites/.vuepress/public/logo-light-with-space.png deleted file mode 100644 index 5254e6bef31fbc4ffa2a6f26a24f55ee76179a5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25405 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 Mmr<53mof?dKjzd&dH?_b diff --git a/websites/.vuepress/public/logo.svg b/websites/.vuepress/public/logo.svg deleted file mode 100644 index 8fea8b9..0000000 --- a/websites/.vuepress/public/logo.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - diff --git a/websites/README.md b/websites/README.md deleted file mode 100644 index 3b63ded..0000000 --- a/websites/README.md +++ /dev/null @@ -1,368 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP%20Scraper:%20a%20web%20utility%20for%20PHP&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -

PHP Scraper: a web utility for PHP
-================================== - -

- - PHP Scraper: Bringing Simplicity back to Scraping and Crawling - -

- - Unit Tests - - - Total Downloads - - - Latest Version - - - License - -

-

- By Peter Thaleikis -

-

- -PHPScraper is a universal web-scraping util for PHP, built with simplicity in mind. The goal is to make xPath Selectors *optional* and avoid the commonly needed boilerplate code. Just create an instance of *PHPScraper*, *go* to a website, and start collecting data. The examples below tell the story much better. Have a look! - -Under the hood, it uses - -- [Goutte](https://github.com/FriendsOfPHP/Goutte) to access the web -- [League/URI](https://github.com/thephpleague/uri) to process URLs -- [donatello-za/rake-php-plus](https://github.com/donatello-za/rake-php-plus) to extract and analyze keywords - -See [composer.json](https://github.com/spekulatius/PHPScraper/blob/master/composer.json) for more details. - - -:timer_clock: PHPScraper in 5 Minutes explained ------------------------------------------------ - -Here are a few impressions of the way the library works. More examples are this website in the various sections. - -### Basics: Flexible Calling as an Attribute or Method - -All scraping functionality can be accessed either as a function call or a property call. For example, the title can be accessed in two ways: - -```php -// Prep -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://google.com'); - -// Returns "Google" -echo $web->title; - -// Also returns "Google" -echo $web->title(); -``` - -### :battery: Batteries included: Meta-Data, Links, Images, Headings, Content, Keywords, ... - -Many common use cases are covered already. You can find prepared extractors for various HTML tags, including interesting attributes. You can filter and combine these to your needs. In some cases there is an option to get a simple or detailed version, here in the case of `linksWithDetails`: - -```PHP -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Contains: -// -// -// -// -$web->go('https://test-pages.phpscraper.de/links/image-urls.html'); - -// Get the first link on the page and print the result -print_r($web->linksWithDetails[0]); -// [ -// 'url' => 'https://placekitten.com/456/500', -// 'protocol' => 'https', -// 'text' => '', -// 'title' => null, -// 'target' => null, -// 'rel' => 'ugc', -// 'image' => [ -// 'https://placekitten.com/456/400', -// 'https://placekitten.com/456/300' -// ], -// 'isNofollow' => false, -// 'isUGC' => true, -// 'isSponsored' => false, -// 'isMe' => false, -// 'isNoopener' => false, -// 'isNoreferrer' => false, -// ] -``` - -::: tip Null -If there aren't any matching elements (here links) on the page, an empty array will be returned. - -For methods that normally return a single string (e.g. `title`), `null` will be returned in this case. -::: - -Details such as `follow_redirects`, etc. are optional configuration parameters (see below). - -Most of the DOM should be covered using these methods: - -- several [meta-tags](/examples/scrape-meta-tags.html) and other [``-information](/examples/scrape-header-tags.html) -- [Social-Media information](/examples/scrape-social-media-meta-tags.html) like Twitter Card and Facebook Open Graph -- Content: [Headings](/examples/headings.html), [Outline](/examples/outline.html), [Texts](/examples/paragraphs.html) and [Lists](/examples/lists.html) -- [Keywords](/examples/extract-keywords.html) -- [Images](/examples/scrape-images.html) & [Links](/examples/scrape-links.html). - -**More examples are included in the [tests](https://github.com/spekulatius/PHPScraper/tree/master/tests).** - - -### Download Files - -Besides processing the content on the page itself, you can download files using `fetchAsset`: - -```php -// Absolute URL -$csvString = $web->fetchAsset('https://test-pages.phpscraper.de/test.csv'); - -// Relative URL after navigation -$csvString = $web - ->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html') - ->fetchAsset('/test.csv'); -``` - -You will only need to write the content into a file or cloud storage. - -::: warning 404s -If the intended URL isn't available an exception will be thrown. Make sure to handle this case by wrapping your code in a try-catch block: - -```php -try { - // ... -} catch (\Exception $e) { - // ... -} -``` -::: - - -### Process the RSS feeds, `sitemap.xml`, etc. - -PHPScraper can assist in collecting feeds such as [RSS feeds, `sitemap.xml`-entries and static search indexes](/examples/scrape-feeds.html). This can be useful when deciding on the next page to crawl or build up a list of pages on a website. - -Here we are processing the sitemap into a set of [`FeedEntry`-DTOs](https://github.com/spekulatius/PHPScraper/blob/pre-release-tweaks/src/DataTransferObjects/FeedEntry.php): - -```php -(new \Spekulatius\PHPScraper\PHPScraper) - ->go('https://phpscraper.de') - ->sitemap - -// array(131) { -// [0]=> -// object(spekulatius\DataTransferObjects\FeedEntry)#165 (3) { -// ["title"]=> -// string(0) "" -// ["description"]=> -// string(0) "" -// ["link"]=> -// string(22) "https://phpscraper.de/" -// } -// [1]=> -// ... -``` - -::: tip Fallback-Methods -Whenever post-processing is applied, you can fall back to the underlying `*Raw`-methods. -::: - -### Process CSV-, XML- and JSON files and URLs - -PHPScraper comes out-of-the-box with file / URL processing methods for CSV-, XML- and JSON: - -- `parseJson` -- `parseXml` -- `parseCsv` -- `parseCsvWithHeader` (generates an asso. array using the first row) - -Each method can process both strings as well as URLs: - -```php -// Parse CSV into a simple array: -$csv = $web->parseJson('[{"title": "PHP Scraper: a web utility for PHP", "url": "https://phpscraper.de"}]'); -// [ -// 'title' => 'PHP Scraper: a web utility for PHP', -// 'url' => 'https://phpscraper.de' -// ] - -// Fetch and parse CSV into a simple array: -$csv = $web->parseCsv('https://test-pages.phpscraper.de/test.csv'); -// [ -// ['date', 'value'], -// ['1945-02-06', 4.20], -// ['1952-03-11', 42], -// ] - -// Fetch and parse CSV with first row as header into an asso. array structure: -$csv = $web->parseCsvWithHeader('https://test-pages.phpscraper.de/test.csv'); -// [ -// ['date' => '1945-02-06', 'value' => 4.20], -// ['date' => '1952-03-11', 'value' => 42], -// ] -``` - -::: tip Additional CSV parsing parameters -Additional CSV parsing parameters such as separator, enclosure and escape are possible. -::: - - -### There is more! - -There are plenty of examples on the PHPScraper website and in the [tests](https://github.com/spekulatius/PHPScraper/tree/master/tests). - -Check the [`playground.php`](https://github.com/spekulatius/PHPScraper/blob/master/playground.php) if you prefer learning by doing. You get it up and running with: - -```bash -$ git clone git@github.com:spekulatius/PHPScraper.git && composer update -``` - -:muscle: Roadmap ----------------- - -The future development is organized into [milestones](https://github.com/spekulatius/PHPScraper/milestones?direction=asc&sort=title). Releases follow [semver](https://semver.org/). - -### v1: [Building the first stable version](https://github.com/spekulatius/PHPScraper/milestone/4) - -- Improve documentation and examples. -- Organize code better (move websites into separate repos, etc.) -- Add support for feeds and some typical file types. - -### v2: [Expand the functionality and cover more 'types'](https://github.com/spekulatius/PHPScraper/milestone/5) - -- Expand to parse a wider range of types, elements, embeds, etc. -- Improve performance with caching and concurrent fetching of assets -- Minor improvements for parsing methods - -### v3: [Expand to provide more guidance on building custom scrapers on top of PHPScraper](https://github.com/spekulatius/PHPScraper/milestone/6) - -TBC. - - -:heart_eyes: Sponsors ---------------------- - -PHPScraper is proudly supported by: - - - -If you find PHPScraper useful to your work or simply want to support the development, please consider a [sponsorship](https://github.com/sponsors/spekulatius) or [donation](https://www.buymeacoffee.com/spekulatius). Thank you :muscle: - - -:gear: Configuration (optional) -------------------------------- - -If needed, you can use the following configuration options: - -### User Agent - -You can set the browser agent using `setConfig`: - -```php -$web->setConfig([ - 'agent' => 'Mozilla/5.0 (X11; Linux x86_64; rv:107.0) Gecko/20100101 Firefox/107.0' -]); -``` - -It defaults to `Mozilla/5.0 (compatible; PHP Scraper/1.x; +https://phpscraper.de)`. - -### Proxy Support - -You can configure proxy support with `setConfig`: - -```php -$web->setConfig(['proxy' => 'http://user:password@127.0.0.1:3128']); -``` - -::: tip -If you're looking for decent prices residential proxy, check [IProyal](https://iproyal.com?r=119987). -::: - -### Timeout - -You can set the `timeout` using `setConfig`: - -```php -$web->setConfig(['timeout' => 15]); -``` - -Setting the timeout to zero will disable it. - -### Disabling SSL - -While unrecommended, it might be required to disable SSL checks. You can do so using: - -```php -$web->setConfig(['disable_ssl' => true]); -``` - -You can call `setConfig` multiple times. It stores the config and merges it with previous settings. This should be kept in mind in the unlikely use-case when unsetting values. - - -:rocket: Installation with Composer ------------------------------------ - -```bash -composer require spekulatius/phpscraper -``` - -After the installation, the package will be picked up by the Composer autoloader. If you are using a common PHP application or framework such as Laravel or Symfony you can start scraping now :rocket: - -If you are using a framework such as Laravel, Symfony, Laminas, Phalcon, or CakePHP, you won't need this step. The autoloader is automatically included. -If not or you are building a standalone-scraper, please include the autoloader in `vendor/` at the top of your file: - -```php - - -Möchten Sie dieses Projekt unterstützen? [Schreib mir](https://peterthaleikis.com/contact). - - -Beispiele: Code sagt mehr als Tausend Worte. --------------------------------------------- - -Hier sind einige Beispiele dafür, was die Web-Scraping-Bibliothek an dieser Stelle tun kann: - -### Meta-Informationen Scrapen: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains: - * - * - * - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Get the information: -echo $web->author; // "Lorem ipsum" -echo $web->description; // "Lorem ipsum dolor etc." -echo $web->image; // "https://test-pages.phpscraper.de/assets/cat.jpg" -``` - -Nahezu alle Informationen können direkt als string oder array genutzt werden. - - -### Scrapen von Inhalten, beispielsweise Bilder: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. This page contains two images: - * - * absolute path - * relative path - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -var_dump($web->imagesWithDetails); -/** - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'absolute path', - * 'width' => null, - * 'height' => null, - * ], - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'relative path', - * 'width' => null, - * 'height' => null, - * ] - */ -``` - -Hier werden einige zusätzliche, *optionale* Informationen im Array als Details zurückgegeben. Alternativ ist für dieses Beispiel ist auch eine vereinfachte Liste nur mit den Bildern mit `$web->images` verfügbar: - -```php -// Wie oben. - -var_dump($web->images); -/** - * [ - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - * - * // Hinweis: Doppelt, da die Seite das Bild mehrfach enthält. - */ -``` - -Mehr Beispielcode finden Sie in den Einzelbeispielen und in den Tests. - - -Installation ------------- - -Die Installation erfolgt üblicherweise mit [Composer](https://getcomposer.org). - -### Installation mit Composer - -```bash -composer require spekulatius/phpscraper -``` - -Nach Abschluss der Installation wird das Paket vom Composer-Autoloader geladen. Damit wird in den meisten PHP applikationen sichergstellt, dass die Klassen entsprechend geladen werden können. Mit dem Scrapen kann direkt begonnen werden. Sie können nun eines der aufgeführten Beispiele oder weiteren Beispiele aus den `tests/` verwenden. - -### Verwendung in VanillaPHP-Projekten - -Wenn Sie ein VanillaPHP-Projekt bauen, müssen Sie den Autoloader oben im Skript einbinden: - -```php -require 'vendor/autoload.php'; -``` - -Wenn Sie ein Framework wie Laravel, Symfony, Laminas, Phalcon, oder CakePHP verwenden, brauchen Sie diesen Schritt nicht. Der Autoloader übernimmt die Arbeit. - - -Konfiguration -------------- - -Die weitere Konfiguration ist optional. Unterhalb finden Sie die gegenwärtig verfügbaren Optionen: - -### Proxy - -Falls Sie Proxies benötigen können Sie PHPScraper wie folgt konfigurieren: - -```php -$web->setConfig(['proxy' => 'http://user:password@127.0.0.1:3128']); -``` - -::: tip -Falls Sie nach einem günstigen Proxy suchen ist [IProyal](https://iproyal.com?r=119987) einen Blick wert. -::: - -### Timeout setzen - -Das `timeout` kann mit `setConfig` gesetzt werden: - -```php -$web->setConfig(['timeout' => 15]); -``` - -Der timeout kann mit `0` gedeaktiviert werden. - -### Disabling SSL - -Während es nicht empfohlen ist, kann es notwendig sein die SSL checks zu deaktivieren. Dies kann wie folgt erreicht werden: - -```php -$web->setConfig(['disable_ssl' => true]); -``` - -`setConfig` kann mehrfach aufgerufen werden. Es speichert die Konfiguration und merged frühere Einstellungen. Dies sollte bedacht werden, wenn man etwas zurücksetzen will. - - -Ein Problem gefunden und gefixt? Super! ---------------------------------------- - -Bevor Sie loslegen, machen Sie sich mit den [Contribution Guidelines](/contributing.html) vertraut. Bei Fragen bitte eine kurze Nachricht oder Email. - - -Tests: Damit es wirklich funktioniert! --------------------------------------- - -Der Code wird grob mit End-to-End-Tests abgedeckt. Dazu werden einfache Webseiten unter *https://test-pages.phpscraper.de/* gehostet, geladen und geparst mit [PHPUnit](https://phpunit.de/). Diese Tests sind auch als Beispiele geeignet - siehe `tests/`! - -Trotzdem gibt es wahrscheinlich Randfälle, die nicht funktionieren und Probleme verursachen können. Wenn Sie einen finden, melden Sie bitte einen Fehler auf GitHub. diff --git a/websites/de/apis/alibaba.md b/websites/de/apis/alibaba.md deleted file mode 100644 index 38cd877..0000000 --- a/websites/de/apis/alibaba.md +++ /dev/null @@ -1,16 +0,0 @@ -# Alibaba/AliExpress Scraper API - -Das Team hinter PHP Scraper arbeitet daran, kommerzielle APIs für verschiedene gängige Anwendungsfälle und Plattformen bereitzustellen. Diese APIs werden nicht selbst gehostet. Sie müssen sich keine Gedanken über rotierende IPs/Proxies machen und einen Headless-Browser wie Puppeteer verwenden. Mit einem einfachen API-Aufruf erhalten Sie alle erforderlichen Informationen. Die Dienste werden auf der Grundlage einer attraktiven, nutzungsabhängigen Gebührenstruktur bereitgestellt. - -Für Alibaba erwägen wir die Implementierung einer API mit folgendem Umfang. - -## Vorgeschlagene unterstützte Endpunkte - -- Suche nach Produkten nach Schlüsselwort -- Produktinformation abrufen - -Bitte beachten Sie, dass diese Informationen nicht endgültig sind und sich noch ändern können. - -## Plattform-Unterstützung - -Mit dem Ansatz, eine verwaltete API zu verwenden, müssen sich die Nutzer keine Gedanken mehr über rotierende Proxys, Skalierungsprobleme und Ausfälle machen. Außerdem wird eine breite Palette von Plattformen unterstützt. Sie können problemlos in NodeJS, Python (ohne Requests oder Beautifulsoap), Golang usw. integriert werden. Jede Plattform, die es erlaubt, GET-Anfragen auszuführen, kann so programmiert werden, dass sie Daten von diesem Dienst abruft. diff --git a/websites/de/apis/amazon.md b/websites/de/apis/amazon.md deleted file mode 100644 index c25b1ed..0000000 --- a/websites/de/apis/amazon.md +++ /dev/null @@ -1,22 +0,0 @@ -# Amazon Scraper API - -Das Team hinter PHP Scraper arbeitet daran, kommerzielle APIs für verschiedene gängige Anwendungsfälle und Plattformen bereitzustellen. Diese APIs werden nicht selbst gehostet. Sie müssen sich keine Gedanken über rotierende IPs/Proxies machen und einen Headless-Browser wie Puppeteer verwenden. Mit einem einfachen API-Aufruf erhalten Sie alle erforderlichen Informationen. Die Dienste werden auf der Grundlage einer attraktiven, nutzungsabhängigen Gebührenstruktur bereitgestellt. - -Für Amazon ziehen wir die Implementierung einer API mit folgendem Umfang in Betracht. - -## Vorgeschlagene unterstützte Endpunkte - -- Produktinformation abrufen -- Empfehlungen abrufen -- Informationen zu Bewertungen abrufen -- Verkäufer-Informationen abrufen -- Alle Verkäuferpreise abrufen -- Nach Produkten suchen mit Schlüsselwörter oder per Verkäufer-ID - -::: tip -Bitte beachten Sie, dass diese Liste der API-Endpunkte *nicht* endgültig ist und sich wahrscheinlich noch ändern wird. -::: - -## Plattform-Unterstützung - -Mit dem Ansatz, eine verwaltete API zu verwenden, müssen sich die Nutzer keine Gedanken mehr über rotierende Proxys, Skalierungsprobleme und Ausfälle machen. Außerdem wird eine breite Palette von Plattformen unterstützt. Sie können problemlos in NodeJS, Python (ohne Requests oder Beautifulsoap), Golang usw. integriert werden. Jede Plattform, die es erlaubt, GET-Anfragen auszuführen, kann so programmiert werden, dass sie Daten von diesem Dienst abruft. diff --git a/websites/de/apis/etsy.md b/websites/de/apis/etsy.md deleted file mode 100644 index 7f83693..0000000 --- a/websites/de/apis/etsy.md +++ /dev/null @@ -1,22 +0,0 @@ -# Etsy Scraper API - -Das Team hinter PHP Scraper arbeitet daran, kommerzielle APIs für verschiedene gängige Anwendungsfälle und Plattformen bereitzustellen. Diese APIs werden nicht selbst gehostet. Sie müssen sich keine Gedanken über rotierende IPs/Proxies machen und einen Headless-Browser wie Puppeteer verwenden. Mit einem einfachen API-Aufruf erhalten Sie alle erforderlichen Informationen. Die Dienste werden auf der Grundlage einer attraktiven, nutzungsabhängigen Gebührenstruktur bereitgestellt. - -Für Etsy ziehen wir die Implementierung einer API mit folgendem Umfang in Betracht. - -## Vorgeschlagene unterstützte Endpunkte - -- Produktinformation abrufen -- Empfehlungen abrufen -- Informationen zu Bewertungen abrufen -- Verkäufer-Informationen abrufen -- Alle Verkäuferpreise abrufen -- Nach Produkten suchen mit Schlüsselwörter oder per Verkäufer-ID - -::: tip -Bitte beachten Sie, dass diese Liste der API-Endpunkte *nicht* endgültig ist und sich wahrscheinlich noch ändern wird. -::: - -## Plattform-Unterstützung - -Mit dem Ansatz, eine verwaltete API zu verwenden, müssen sich die Nutzer keine Gedanken mehr über rotierende Proxys, Skalierungsprobleme und Ausfälle machen. Außerdem wird eine breite Palette von Plattformen unterstützt. Sie können problemlos in NodeJS, Python (ohne Requests oder Beautifulsoap), Golang usw. integriert werden. Jede Plattform, die es erlaubt, GET-Anfragen auszuführen, kann so programmiert werden, dass sie Daten von diesem Dienst abruft. diff --git a/websites/de/apis/facebook.md b/websites/de/apis/facebook.md deleted file mode 100644 index 4b5ccfa..0000000 --- a/websites/de/apis/facebook.md +++ /dev/null @@ -1,28 +0,0 @@ -# Facebook Scraper API - -Das Team hinter PHP Scraper arbeitet daran, kommerzielle APIs für verschiedene gängige Anwendungsfälle und Plattformen bereitzustellen. Diese APIs werden nicht selbst gehostet. Sie müssen sich keine Gedanken über rotierende IPs/Proxies machen und einen Headless-Browser wie Puppeteer verwenden. Mit einem einfachen API-Aufruf erhalten Sie alle erforderlichen Informationen. Die Dienste werden auf der Grundlage einer attraktiven, nutzungsabhängigen Gebührenstruktur bereitgestellt. - -Für Facebook erwägen wir die Implementierung einer API mit folgendem Umfang. - -## Vorgeschlagene unterstützte Endpunkte - -- Benutzer: Öffentliches Benutzerprofil -- Benutzer: Andere soziale Konten -- Benutzer: Freundesliste -- Benutzer: Bilder -- Benutzer: Standortbeiträge -- Benutzer: Benutzerbeiträge -- öffentliche Gruppen und private Gruppen mit Schlüssel: Öffentliches Gruppenprofil -- öffentliche Gruppen und private Gruppen mit Schlüssel: Mitgliederliste -- öffentliche Gruppen und private Gruppen mit Schlüssel: Bilder -- öffentliche Gruppen und private Gruppen mit Schlüssel: Standort Beiträge -- öffentliche Gruppen und private Gruppen mit Schlüssel: Beiträge -- Beitrag: Öffentliche Beitragsdetails (inkl. Kommentare, Likes, Likers, etc.) - -::: tip -Bitte beachten Sie, dass diese Liste der API-Endpunkte *nicht* endgültig ist und sich wahrscheinlich noch ändern wird. -::: - -## Plattform-Unterstützung - -Mit dem Ansatz, eine verwaltete API zu verwenden, müssen sich die Nutzer keine Gedanken mehr über rotierende Proxys, Skalierungsprobleme und Ausfälle machen. Außerdem wird eine breite Palette von Plattformen unterstützt. Sie können problemlos in NodeJS, Python (ohne Requests oder Beautifulsoap), Golang usw. integriert werden. Jede Plattform, die es erlaubt, GET-Anfragen auszuführen, kann so programmiert werden, dass sie Daten von diesem Dienst abruft. diff --git a/websites/de/apis/instagram.md b/websites/de/apis/instagram.md deleted file mode 100644 index 69591f4..0000000 --- a/websites/de/apis/instagram.md +++ /dev/null @@ -1,34 +0,0 @@ -# Instagram Scraper API - -Das Team hinter PHP Scraper arbeitet daran, kommerzielle APIs für verschiedene gängige Anwendungsfälle und Plattformen bereitzustellen. Diese APIs werden nicht selbst gehostet. Sie müssen sich keine Gedanken über rotierende IPs/Proxies machen und einen Headless-Browser wie Puppeteer verwenden. Mit einem einfachen API-Aufruf erhalten Sie alle erforderlichen Informationen. Die Dienste werden auf der Grundlage einer attraktiven, nutzungsabhängigen Gebührenstruktur bereitgestellt. - -Für Instagram erwägen wir die Implementierung einer API mit folgendem Umfang. - -## Vorgeschlagene unterstützte Endpunkte - -- Benutzer: Profil Details -- Benutzer: Highlights -- Benutzer: Beiträge -- Benutzer: Getaggte Beiträge -- Benutzer: Öffentliche Beiträge -- Benutzer: Follower -- Benutzer: Geschichten erhalten -- Benutzer: Aktueller Status -- Benutzer: Andere soziale Konten -- Öffentliche Beiträge: Kommentare -- Öffentlicher Beitrag: Likers -- Story-Downloader mit Konvertierung in mp4, mp3, etc. -- Hashtag-Beiträge -- Standort-Posts -- Standort-Suche -- Details zum Beitrag -- Verwandte Profile -- Suche - -::: tip -Bitte beachten Sie, dass diese Liste der API-Endpunkte *nicht* endgültig ist und sich wahrscheinlich noch ändern wird. -::: - -## Plattform-Unterstützung - -Mit dem Ansatz, eine verwaltete API zu verwenden, müssen sich die Nutzer keine Gedanken mehr über rotierende Proxys, Skalierungsprobleme und Ausfälle machen. Außerdem wird eine breite Palette von Plattformen unterstützt. Sie können problemlos in NodeJS, Python (ohne Requests oder Beautifulsoap), Golang usw. integriert werden. Jede Plattform, die es erlaubt, GET-Anfragen auszuführen, kann so programmiert werden, dass sie Daten von diesem Dienst abruft. diff --git a/websites/de/apis/linkedin.md b/websites/de/apis/linkedin.md deleted file mode 100644 index 7cdbb8a..0000000 --- a/websites/de/apis/linkedin.md +++ /dev/null @@ -1,21 +0,0 @@ -# LinkedIn Scraper API - -Das Team hinter PHP Scraper arbeitet daran, kommerzielle APIs für verschiedene gängige Anwendungsfälle und Plattformen bereitzustellen. Diese APIs werden nicht selbst gehostet. Sie müssen sich keine Gedanken über rotierende IPs/Proxies machen und einen Headless-Browser wie Puppeteer verwenden. Mit einem einfachen API-Aufruf erhalten Sie alle erforderlichen Informationen. Die Dienste werden auf der Grundlage einer attraktiven, nutzungsabhängigen Gebührenstruktur bereitgestellt. - -Für LinkedIn ziehen wir die Implementierung einer API mit folgendem Umfang in Betracht. - -## Vorgeschlagene unterstützte Endpunkte - -- Benutzer: Profil Details -- Benutzer: Beiträge -- Beitrag: Video Downloader und Konverter. -- Unternehmen: Profil-Details -- Job-Suche - -::: tip -Bitte beachten Sie, dass diese Liste der API-Endpunkte *nicht* endgültig ist und sich wahrscheinlich noch ändern wird. -::: - -## Plattform-Unterstützung - -Mit dem Ansatz, eine verwaltete API zu verwenden, müssen sich die Nutzer keine Gedanken mehr über rotierende Proxys, Skalierungsprobleme und Ausfälle machen. Außerdem wird eine breite Palette von Plattformen unterstützt. Sie können problemlos in NodeJS, Python (ohne Requests oder Beautifulsoap), Golang usw. integriert werden. Jede Plattform, die es erlaubt, GET-Anfragen auszuführen, kann so programmiert werden, dass sie Daten von diesem Dienst abruft. diff --git a/websites/de/apis/target.md b/websites/de/apis/target.md deleted file mode 100644 index f7a2ff4..0000000 --- a/websites/de/apis/target.md +++ /dev/null @@ -1,18 +0,0 @@ -# Target Scraper API - -Das Team hinter PHP Scraper arbeitet daran, kommerzielle APIs für verschiedene gängige Anwendungsfälle und Plattformen bereitzustellen. Diese APIs werden nicht selbst gehostet. Sie müssen sich keine Gedanken über rotierende IPs/Proxies machen und einen Headless-Browser wie Puppeteer verwenden. Mit einem einfachen API-Aufruf erhalten Sie alle erforderlichen Informationen. Die Dienste werden auf der Grundlage einer attraktiven, nutzungsabhängigen Gebührenstruktur bereitgestellt. - -Für Target ziehen wir die Implementierung einer API mit folgendem Umfang in Betracht. - -## Vorgeschlagene unterstützte Endpunkte - -- Produktdetails abrufen -- Schlüsselwortsuche für Produkte - -::: tip -Bitte beachten Sie, dass diese Liste der API-Endpunkte *nicht* endgültig ist und sich wahrscheinlich noch ändern wird. -::: - -## Plattform-Unterstützung - -Mit dem Ansatz, eine verwaltete API zu verwenden, müssen sich die Nutzer keine Gedanken mehr über rotierende Proxys, Skalierungsprobleme und Ausfälle machen. Außerdem wird eine breite Palette von Plattformen unterstützt. Sie können problemlos in NodeJS, Python (ohne Requests oder Beautifulsoap), Golang usw. integriert werden. Jede Plattform, die es erlaubt, GET-Anfragen auszuführen, kann so programmiert werden, dass sie Daten von diesem Dienst abruft. diff --git a/websites/de/apis/tiktok.md b/websites/de/apis/tiktok.md deleted file mode 100644 index 98fdb41..0000000 --- a/websites/de/apis/tiktok.md +++ /dev/null @@ -1,21 +0,0 @@ -# TikTok Scraper API - -Das Team hinter PHP Scraper arbeitet daran, kommerzielle APIs für verschiedene gängige Anwendungsfälle und Plattformen bereitzustellen. Diese APIs werden nicht selbst gehostet. Sie müssen sich keine Gedanken über rotierende IPs/Proxies machen und einen Headless-Browser wie Puppeteer verwenden. Mit einem einfachen API-Aufruf erhalten Sie alle erforderlichen Informationen. Die Dienste werden auf der Grundlage einer attraktiven, nutzungsabhängigen Gebührenstruktur bereitgestellt. - -Für TikTok erwägen wir die Implementierung einer API mit dem folgenden Umfang. - -## Vorgeschlagene unterstützte Endpunkte - -- Suche nach Tag -- Benutzer: Öffentliche Profildetails -- Benutzer: Andere soziale Konten -- Video-Details -- Video Download mit Konvertierung in mp4, mp3, etc. und ohne Wasserzeichen - -::: tip -Bitte beachten Sie, dass diese Liste der API-Endpunkte *nicht* endgültig ist und sich wahrscheinlich noch ändern wird. -::: - -## Plattform-Unterstützung - -Mit dem Ansatz, eine verwaltete API zu verwenden, müssen sich die Nutzer keine Gedanken mehr über rotierende Proxys, Skalierungsprobleme und Ausfälle machen. Außerdem wird eine breite Palette von Plattformen unterstützt. Sie können problemlos in NodeJS, Python (ohne Requests oder Beautifulsoap), Golang usw. integriert werden. Jede Plattform, die es erlaubt, GET-Anfragen auszuführen, kann so programmiert werden, dass sie Daten von diesem Dienst abruft. diff --git a/websites/de/apis/walmart.md b/websites/de/apis/walmart.md deleted file mode 100644 index 6a6838d..0000000 --- a/websites/de/apis/walmart.md +++ /dev/null @@ -1,18 +0,0 @@ -# Walmart Scraper API - -Das Team hinter PHP Scraper arbeitet daran, kommerzielle APIs für verschiedene gängige Anwendungsfälle und Plattformen bereitzustellen. Diese APIs werden nicht selbst gehostet. Sie müssen sich keine Gedanken über rotierende IPs/Proxies machen und einen Headless-Browser wie Puppeteer verwenden. Mit einem einfachen API-Aufruf erhalten Sie alle erforderlichen Informationen. Die Dienste werden auf der Grundlage einer attraktiven, nutzungsabhängigen Gebührenstruktur bereitgestellt. - -Für Walmart ziehen wir die Implementierung einer API mit folgendem Umfang in Betracht. - -## Vorgeschlagene unterstützte Endpunkte - -- Produktdetails abrufen -- Schlüsselwortsuche für Produkte - -::: tip -Bitte beachten Sie, dass diese Liste der API-Endpunkte *nicht* endgültig ist und sich wahrscheinlich noch ändern wird. -::: - -## Plattform-Unterstützung - -Mit dem Ansatz, eine verwaltete API zu verwenden, müssen sich die Nutzer keine Gedanken mehr über rotierende Proxys, Skalierungsprobleme und Ausfälle machen. Außerdem wird eine breite Palette von Plattformen unterstützt. Sie können problemlos in NodeJS, Python (ohne Requests oder Beautifulsoap), Golang usw. integriert werden. Jede Plattform, die es erlaubt, GET-Anfragen auszuführen, kann so programmiert werden, dass sie Daten von diesem Dienst abruft. diff --git a/websites/de/apis/zalando.md b/websites/de/apis/zalando.md deleted file mode 100644 index eb7f74c..0000000 --- a/websites/de/apis/zalando.md +++ /dev/null @@ -1,18 +0,0 @@ -# Zalando Scraper API - -Das Team hinter PHP Scraper arbeitet daran, kommerzielle APIs für verschiedene gängige Anwendungsfälle und Plattformen bereitzustellen. Diese APIs werden nicht selbst gehostet. Sie müssen sich keine Gedanken über rotierende IPs/Proxies machen und einen Headless-Browser wie Puppeteer verwenden. Mit einem einfachen API-Aufruf erhalten Sie alle erforderlichen Informationen. Die Dienste werden auf der Grundlage einer attraktiven, nutzungsabhängigen Gebührenstruktur bereitgestellt. - -Für Zalando erwägen wir die Implementierung einer API mit folgendem Umfang. - -## Vorgeschlagene unterstützte Endpunkte - -- Produktdetails abrufen -- Schlüsselwortsuche für Produkte - -::: tip -Bitte beachten Sie, dass diese Liste der API-Endpunkte *nicht* endgültig ist und sich wahrscheinlich noch ändern wird. -::: - -## Plattform-Unterstützung - -Mit dem Ansatz, eine verwaltete API zu verwenden, müssen sich die Nutzer keine Gedanken mehr über rotierende Proxys, Skalierungsprobleme und Ausfälle machen. Außerdem wird eine breite Palette von Plattformen unterstützt. Sie können problemlos in NodeJS, Python (ohne Requests oder Beautifulsoap), Golang usw. integriert werden. Jede Plattform, die es erlaubt, GET-Anfragen auszuführen, kann so programmiert werden, dass sie Daten von diesem Dienst abruft. diff --git a/websites/de/examples/extract-keywords.md b/websites/de/examples/extract-keywords.md deleted file mode 100644 index 68472c5..0000000 --- a/websites/de/examples/extract-keywords.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Extract%20Keywords&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Keywords Extrahieren - -Während es oft ausreicht, Inhalte zu scrapen, müssen Sie manchmal wichtige Begriffe und Phrasen (Keywords) aus diesen Inhalten extrahieren. PHPScraper ermöglicht es Ihnen, die Keywords der Website direkt zu extrahieren. Hierfür verwendet er: - -- den Titel der Website, -- die Meta-Tags, -- alle Überschriften, -- die Absätze auf der Seite, -- Link-Anker und Link-Titel sowie -- Titelattribute bei Bildern - -Auch wenn diese Schlüsselwörter extrahiert werden, bedeutet dies nicht, dass die Seite tatsächlich für diese Schlüsselwörter rangiert. Die endgültige Entscheidung darüber, für welche Schlüsselwörter eine Webseite rangiert, liegt bei der Suchmaschine. - -Das folgende Beispiel gibt eine Liste aller aus der Webseite extrahierten Keywords zurück: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navigation zur Testseite. -// Diese enthält 3 Absätze aus dem englischen Wikipedia-Artikel zu "lorem ipsum". -$web->go('https://test-pages.phpscraper.de/content/keywords.html'); - -// Überprüfen der Anzahl der Schlüsselwörter. -$keywords = $web->contentKeywords; -echo "Diese Seite enthält mindestens" . count($keywords) . " Schlüsselwörter/Phrasen.\n\n"; - -// Schleife durch die Schlüsselwörter -foreach ($keywords as $keyword) { - echo " - " . $keyword . "\n"; -} - -/** - * Ausgegeben wird: - * - * Diese Seite enthält mindestens 40 Schlüsselwörter/Phrasen. - * - * [...] - * - graphic - * - improper latin - * - introduced - * - keyword extraction tests - * - letraset transfer sheets - * - lorem ipsum - * - lorem ipsum php rake library lorem ipsum - * - lorem ipsum text - * - make - * - malorum - * - microsoft word - * - mid-1980s - * - nonsensical - * - page - * - paragraphs - * - philosopher cicero - * - php rake library - * - popular word processors including pages - * - popularized - * - removed - * - roman statesman - * - source - * [...] - */ -``` - -::: tip Tipp -Die Standardsprache (Gebietsschema) hierfür ist "en_US". Andere Sprachen, wie Deutsch, können als Parameter übergeben werden. Dies funktioniert derzeit nur für eine Auswahl von Sprachen. Weitere Informationen finden Sie in dieser [list](https://github.com/Donatello-za/rake-php-plus#currently-supported-languages). -::: - - -## Bewertung von Schlüsselwörtern - -Nicht jedes Keyword hat in den Ranking-Algorithmen der Suchmaschinen das gleiche Gewicht. Ein Mix aus verschiedenen Faktoren und SEO-Signalen entscheidet über die Gewichtung, die eine Suchmaschine einem Wort zuweist. Häufigkeit der Wörter, Länge der Texte und Variationen wie Synonyme können zu einer unterschiedlichen Gewichtung führen. - -PHPScraper ermöglicht es Ihnen, einen Hinweis auf die Gewichtung der Keywords in Form von Scores zu erhalten: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navigation zur Testseite. -// Diese enthält 3 Absätze aus dem englischen Wikipedia-Artikel zu "lorem ipsum". -$web->go('https://test-pages.phpscraper.de/content/keywords.html'); - -// Überprüfen der Anzahl der Schlüsselwörter. -$keywords = $web->contentKeywordsWithScores; -echo "Diese Seite enthält mindestens " . count($keywords) . " Schlüsselwörter/Phrasen.\n\n"; - -// Schleife durch die Schlüsselwörter -foreach ($keywords as $keyword => $score) { - echo sprintf(" - %s (%s)\n", $keyword, $score); -} - -/** - * Ausgegeben wird: - * - * Diese Seite enthält mindestens 40 Schlüsselwörter/Phrasen. - * - * [...] - * - 1960s (1.0) - * - added (1.0) - * - adopted lorem ipsum (11.0) - * - advertisements (1.0) - * - aldus employed (4.0) - * - corrupted version (4.0) - * - graphic (1.0) - * - improper latin (4.0) - * - introduced (1.0) - * - keyword extraction tests (9.0) - * - test (1.0) - * - microsoft word (5.3333333333333) - * - english wikipedia (4.0) - * - lorem ipsum (8.0) - * - lorem ipsum text (11.0) - * [...] - */ -``` - -::: tip Tipp -Die PHP-Funktionen [similar_text](https://www.php.net/manual/en/function.similar-text.php) und [levenshtein](https://www.php.net/manual/en/function.levenshtein.php) können Ihnen helfen, ähnliche Schlüsselwörter sowie Tippfehler-Varianten von Schlüsselwörtern zu identifizieren und zusammenzuführen. [Keyword Merge](https://github.com/spekulatius/keyword-merge) ist ein Composer-Paket, das beim Aussortieren ähnlicher Schlüsselwörter hilft. -::: diff --git a/websites/de/examples/headings.md b/websites/de/examples/headings.md deleted file mode 100644 index 3fbf9fb..0000000 --- a/websites/de/examples/headings.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Headings&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrapen von Überschriften - -Überschriften können nützlich sein, um sich einen Überblick über den Inhalt einer Website zu verschaffen. Das folgende Beispiel zeigt, wie man scrapen kann: - - - Eine einzelne Überschrift - - Alle Überschriften einer bestimmten Ebene (z.B. `

`) - - Alle Überschriften auf einer Seite - - -## Einzelne Überschrift Scrapen - -Das Einscannen einer einzelnen Überschrift ist einfach und kann anhand dieses Beispiels durchgeführt werden: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese enthält: - * - * Outline Test - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -// Ausgeben der H1-Überschrift -echo $web->h1[0]; // "Outline Test" -``` - -::: tip -Der [Website-Titel](/de/examples/scrape-website-title.html) und die Überschrift 1 (`

`) können unterschiedlich sein. Stellen Sie sicher, dass Sie die richtige abrufen. -::: - - -## Rubriken nach Ebene - -Es kann Fälle geben, die Überschriften einer bestimmten Ebene abgerufen werden sollen. Das folgende Beispiel zeigt, wie dies möglich ist: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese enthält: - * - *

Example 1

- *

Here would be an example.

- * - *

Example 2

- *

Here would be the second example.

- * - *

Example 3

- *

Here would be another example.

- */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -/** - * Gibt die h3-Überschriften zurück: - * - * [ - * 'Example 1', - * 'Example 2', - * 'Example 3' - * ] - */ -$web->h3; -``` - -Wenn keine Überschriften gefunden werden, bleibt das Feld leer. - - -## Alle Überschriften auf einer Seite - -Um auf alle Rubriken einer Seite zuzugreifen, können Sie die verschiedenen Ebenen von 1 bis 6 anwählen. Alternativ können Sie auch alle auf einmal aufrufen: - - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese Seite enthält: - * - *

We are testing here!

- *

This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

- * - *

Examples

- *

There are numerous examples on the website. Please check them out to get more context on how scraping works.

- * - *

Example 1

- *

Here would be an example.

- * - *

Example 2

- *

Here would be the second example.

- * - *

Example 3

- *

Here would be another example.

- */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -/** - * $headings enthält jetzt: - * - * [ - * [ - * 'We are testing here!' - * ], - * [ - * 'Examples' - * ], - * [ - * 'Example 1', - * 'Example 2', - * 'Example 3', - * ], - * [], - * [], - * [] - * ] - */ -$web->headings; -``` - -Wie Sie sehen können, enthält dies keine Informationen über die Struktur der Überschriften. Es geht nur darum zu wissen, welche Überschriften vorhanden sind. Wenn Sie eine [Gliederung](/de/examples/outline.html) haben möchten, müssen Sie die entsprechenden Methoden verwenden. diff --git a/websites/de/examples/lists.md b/websites/de/examples/lists.md deleted file mode 100644 index 4c02716..0000000 --- a/websites/de/examples/lists.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Lists&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Listen Scrapen - -Das Scraping von Listen folgt einem ähnlichen Ansatz wie anderes Scraping mit PHPScraper: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese Seite enthält: - * - *

Example 1: Unordered List

- *
    - *
  • Unordered list item 1
  • - *
  • Unordered list item 2
  • - *
  • Unordered list item with HTML
  • - *
- * - *

Example 2: Ordered List

- *
    - *
  1. Ordered list item 1
  2. - *
  3. Ordered list item 2
  4. - *
  5. Ordered list item with HTML
  6. - *
- */ -$web->go('https://test-pages.phpscraper.de/content/lists.html'); - -/** - * Nur unsortierte Listen (
    ) - * - * [ - * "type" => "ul", - * "children" => ... // Liste der ChildNodes - * "children_plain" => - * [ - * "Unordered list item 1" - * "Unordered list item 2" - * "Unordered list item with HTML" - * ] - * ] - */ -var_dump($web->unorderedLists); - - -/** - * Nur geordnete Listen (
      ) - * - * [ - * "type" => "ul", - * "children" => ... // Liste der ChildNodes - * "children_plain" => - * [ - * "Ordered list item 1" - * "Ordered list item 2" - * "Ordered list item with HTML" - * ] - * ] - */ -var_dump($web->orderedLists); - - -// Beide Listen zusammen (wie oben) -var_dump($web->lists); -``` - -::: warning Verschachtelte Listen -Im Moment werden verschachtelte Listen nicht gut verarbeitet. Verschachtelte Listen werden als `children` in das Ergebnis aufgenommen, um eine weitere Verarbeitung zu ermöglichen. -::: diff --git a/websites/de/examples/navigation.md b/websites/de/examples/navigation.md deleted file mode 100644 index f6f9954..0000000 --- a/websites/de/examples/navigation.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Navigate%20while%20Scraping&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Navigation - -Obwohl PHPScraper hauptsächlich dazu gedacht ist, Webseiten zu analysieren und Informationen zu sammeln, kannst du es auch benutzen, um auf Webseiten zu navigieren. Im Folgenden finden Sie Beispiele, wie Sie auf einer Website *surfen* können. - - -## Navigation über URLs - -Sie können zu jeder URL navigieren. Diese URLs stammen normalerweise aus den [geparsten Links](/de/examples/scrape-links.html). - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Wir beginnen mit der Testseite Nr. 1. -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -// Ausgaben des Titel, um zu sehen, ob wir tatsächlich auf der richtigen Seite sind... -echo $web->h1[0]; // 'Page #1' - - -// Wir navigieren zur Testseite #2 unter Verwendung der absoluten URL. -$web->clickLink('https://test-pages.phpscraper.de/navigation/2.html'); - -// Ausgaben des Titel, um zu sehen, ob wir tatsächlich auf der richtigen Seite sind... -echo $web->h1[0]; // 'Page #2' -``` - - -## Navigation mit Ankertexten - -Auf einer Website können Sie auf Links *klicken*, indem Sie deren Ankertexte verwenden: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Wir beginnen mit der Testseite Nr. 1. -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -/** - * Diese Seite enthält: - * - * 2 relative - */ - -// Ausgaben des Titel, um zu sehen, ob wir tatsächlich auf der richtigen Seite sind... -echo $web->h1[0]; // 'Page #1' - - -// Wir navigieren zur Testseite #2, indem wir den Text verwenden, der auf der Seite steht. -$web->clickLink('2 relative'); - -// Ausgaben des Titel, um zu sehen, ob wir tatsächlich auf der richtigen Seite sind... -echo $web->h1[0]; // 'Page #1' -``` - -Diese Grundfunktionalität sollte es Ihnen ermöglichen, auf Websites zu navigieren. diff --git a/websites/de/examples/outline.md b/websites/de/examples/outline.md deleted file mode 100644 index 8f93590..0000000 --- a/websites/de/examples/outline.md +++ /dev/null @@ -1,215 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scrape%20Content%20Outline&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Gliederung Extrahieren - -Auch wenn Sie nur auf die [`Überschriften`](/de/examples/headings.html) zugreifen möchten, um z.B. die Anzahl oder Länge der Überschriften zu verarbeiten, reicht dies nicht immer aus. In einigen Fällen müssen Sie vielleicht die tatsächliche Struktur des Inhalts ermitteln. Für diese Anwendungsfälle sollten Sie eine der folgenden Methoden in Betracht ziehen: - - - `outline` funktioniert ähnlich wie die zuvor erwähnte Methode `headings`. Sie gibt ebenfalls alle Überschriften zurück, behält aber die Struktur des Originaldokuments bei und liefert nur die Überschriftenebenen (z.B. `h1`) mit der Ausgabe. - - - Die Methode `outlineWithParagraphs` funktioniert ähnlich wie `outline`, mit dem Unterschied, dass dieser Aufruf auch die Absätze enthält. - - - `cleanOutlineWithParagraphs` funktioniert ähnlich wie `outlineWithParagraphs`, mit dem Unterschied, dass alle leeren HTML-Tags entfernt werden. - -Die folgenden Beispiele sollen helfen, die Funktionalität besser zu verstehen. Es sind spezielle Methoden für die [Schlüsselwort-Extraktion](/de/examples/extract-keywords.html) verfügbar. - - -## Extrahieren der Gliederung - -Die Gliederung des Inhalts ermöglicht es Ihnen, einen Index des Dokuments zu erstellen. Im folgenden Beispiel wird eine Markdown-Version der Überschriften des angeforderten Dokuments erstellt: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese Seite enthält: - * - *

      We are testing here!

      - * [...] - * - *

      Examples

      - * [...] - * - *

      Example 1

      - * [...] - * - *

      Example 2

      - * [...] - * - *

      Example 3

      - * [...] - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - -/** - * $outline wird gesetzt auf: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ] - * ] - */ -$outline = $web->outline; -``` - - -## Gliederung mit Absätzen extrahieren - -Die folgende Methode funktioniert ähnlich wie `outline`, aber sie schließt auch alle Absätze als Teil des zurückgegebenen Arrays ein: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese Seite enthält: - * - *

      We are testing here!

      - *

      This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

      - * - *

      Examples

      - *

      There are numerous examples on the website. Please check them out to get more context on how scraping works.

      - * - *

      Example 1

      - *

      Here would be an example.

      - * - *

      Example 2

      - *

      Here would be the second example.

      - * - *

      Example 3

      - *

      Here would be another example.

      - * - * - *

      - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - - -$content = $web->outlineWithParagraphs; -/** - * $content now contains: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "p", - * "content" => "This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example." - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "p", - * "content" => "There are numerous examples on the website. Please check them out to get more context on how scraping works." - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "p", - * "content" => "Here would be an example." - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "p", - * "content" => "Here would be the second example." - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ], [ - * "tag" => "p", - * "content" => "Here would be another example." - * ], [ - * "tag" => "p", - * "content" => "" - * ] - * ] - */ -``` - - -## Extrahieren der bereinigten Gliederung mit Absätzen - -Die folgende Methode funktioniert ähnlich wie `outlineWithParagraphs`, aber diese enthält keine leeren Überschriften oder Absätze als Teil des zurückgegebenen Arrays: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese Seite enthält: - * - *

      We are testing here!

      - *

      This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

      - * - *

      Examples

      - *

      There are numerous examples on the website. Please check them out to get more context on how scraping works.

      - * - *

      Example 1

      - *

      Here would be an example.

      - * - *

      Example 2

      - *

      Here would be the second example.

      - * - *

      Example 3

      - *

      Here would be another example.

      - * - * - *

      - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - - -$content = $web->cleanOutlineWithParagraphs; -/** - * $content enthält jetzt: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "p", - * "content" => "This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example." - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "p", - * "content" => "There are numerous examples on the website. Please check them out to get more context on how scraping works." - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "p", - * "content" => "Here would be an example." - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "p", - * "content" => "Here would be the second example." - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ], [ - * "tag" => "p", - * "content" => "Here would be another example." - * ] - * ] - */ -``` diff --git a/websites/de/examples/paragraphs.md b/websites/de/examples/paragraphs.md deleted file mode 100644 index 3911eed..0000000 --- a/websites/de/examples/paragraphs.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Content&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrapen von Text - -Das Scraping von Inhalten, vor allem von Absätzen, kann mit PHP Scraper leicht durchgeführt werden. Es gibt eine spezielle Methode, um auf die Absätze (`

      `) einer Website zuzugreifen. Die folgenden Beispiele zeigen, wie man auf den Inhalt/Text einer Website zugreifen kann. - - -## Alle Absätze abrufen - -Das folgende Beispiel gibt eine Liste aller Absätze (`

      `-Tags) auf der Website zurück: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navigation zur Testseite. Diese enthält 6 "lorem ipsum"-Absätze: -$web->go('https://test-pages.phpscraper.de/content/paragraphs.html'); - -// Überprüfen der Anzahl der Absätze: -echo "Diese Seite enthält " . count($web->paragraphs) . " Paragraphen.\n\n"; - -// Schleife durch die Absätze: -foreach ($web->paragraphs as $paragraph) { - echo " - " . $paragraph . "\n"; -} - -/** - * Ausgegeben wird: - * - * Diese Seite enthält 6 Absätze. - * - * - Maecenas eget ex sit amet urna porta fermentum at ut dui. Praesent lectus arcu, hendrerit sed mi vel, commodo lacinia velit. Nullam ac velit quis ante tristique scelerisque quis non metus. Pellentesque non aliquam elit, in tincidunt purus. Vestibulum fringilla cursus risus, eget ornare dolor feugiat vitae. Sed non porta lorem, eget ornare diam. Sed quam est, eleifend porttitor imperdiet sit amet, ultricies vel ipsum. Pellentesque mauris mauris, fermentum pretium ex quis, viverra mattis est. Donec laoreet sem nec arcu rhoncus lobortis. Duis id orci vel enim interdum aliquam. Integer eu ex ligula. Ut mattis nisi non malesuada ornare. In elit ligula, ultricies a aliquet eget, dictum sit amet neque. Quisque nulla sem, aliquam id molestie iaculis, consequat at augue. Nullam sollicitudin finibus eros in venenatis. Donec semper sagittis ipsum, et rhoncus magna ultricies eu. - - * - Quisque sed dolor ut nunc accumsan lacinia. Suspendisse vel eros faucibus massa feugiat tristique. Nullam vitae scelerisque felis, malesuada hendrerit felis. Quisque eleifend mi lorem, vitae elementum dolor bibendum et. Etiam et faucibus augue. Pellentesque viverra sagittis consequat. Nulla a mollis ex. Sed vel nisl mauris. Nulla consequat dui sed pulvinar interdum. Integer vehicula molestie quam non fringilla. Duis auctor sem ut purus fringilla, in lacinia dui finibus. Nulla rhoncus semper velit, eget semper tellus suscipit eget. Vestibulum massa tellus, tristique sit amet dolor et, ullamcorper porta turpis. Vivamus eget magna lacinia, pretium sem sed, gravida libero. - - * - Ut at nunc laoreet, vestibulum mauris in, volutpat magna. Aliquam sodales orci finibus porta convallis. Vestibulum sollicitudin felis a sem consequat luctus. Sed laoreet porta quam, non pharetra massa mattis semper. Phasellus aliquet tortor ut felis scelerisque, non dapibus justo tincidunt. Donec eu pulvinar nisi, sit amet elementum massa. Nulla in odio est. In neque ligula, tristique rhoncus orci eu, egestas ullamcorper est. Integer rhoncus vel quam vel placerat. In nec metus pellentesque elit accumsan molestie eu posuere odio. Sed at eros nec turpis vestibulum eleifend vel in erat. Etiam vel metus faucibus, tempus enim nec, elementum arcu. Ut nec blandit risus. Nam sapien nunc, tristique sit amet facilisis non, maximus a nulla. Pellentesque vel posuere libero. - - * - Morbi volutpat purus odio, vitae scelerisque diam consectetur sed. Cras turpis leo, hendrerit in tempus et, convallis in nibh. Mauris molestie facilisis odio, ac egestas erat ultrices pellentesque. Donec interdum leo quis ipsum sagittis venenatis. Etiam scelerisque mi at metus ullamcorper, vitae tristique est tincidunt. Vestibulum ut congue urna, eu sagittis quam. Phasellus eget arcu sapien. In hac habitasse platea dictumst. Morbi ultrices, felis in faucibus ornare, libero augue scelerisque urna, et feugiat nisl est ut velit. Phasellus felis quam, egestas a faucibus nec, dictum eget enim. In tempor a lacus id facilisis. - - * - Donec bibendum finibus neque quis viverra. Ut ut nulla venenatis, accumsan purus nec, ullamcorper nisi. Nulla bibendum dui sit amet velit venenatis, eget viverra nibh accumsan. Fusce pharetra, sem eu mattis varius, massa leo eleifend lectus, quis tempor elit ipsum sit amet lorem. Fusce viverra dictum tortor non sodales. Phasellus at lectus quis arcu finibus imperdiet sed eleifend nulla. Donec blandit egestas nibh ac euismod. Curabitur ac pretium eros. - - * - Duis pharetra magna at dolor scelerisque, nec luctus ex pretium. Suspendisse a ante lectus. Donec vehicula condimentum turpis, in hendrerit dui suscipit non. Nullam a ultricies felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent aliquet varius mauris nec pretium. Vivamus convallis tincidunt nisi, eget scelerisque dolor facilisis vitae. Pellentesque purus neque, sollicitudin sit amet mauris id, posuere posuere mi. Etiam vitae urna vitae turpis volutpat consectetur. Quisque ultrices, ex dapibus hendrerit convallis, diam massa suscipit diam, vulputate pharetra mi orci at massa. Aliquam vel urna tempor, congue justo id, pulvinar lorem. Nulla mattis vitae justo sed molestie. Nunc fermentum fringilla nibh, id fermentum nulla. Sed tincidunt ipsum id est efficitur, molestie aliquet lacus hendrerit. Fusce et nisl eros. - */ -``` - - -## Scrapen des ersten Absatzes - -Das Scraping des ersten Absatzes der Website kann durch Zugriff auf das erste Element des Arrays (Index 0) erfolgen. - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/content/paragraphs.html'); - -echo $web->paragraphs[0]; -/** - * Gibt den ersten Absatz aus: - * - * Maecenas eget ex sit amet urna porta fermentum at ut dui. Praesent lectus arcu, hendrerit sed mi vel, commodo lacinia velit. Nullam ac velit quis ante tristique scelerisque quis non metus. Pellentesque non aliquam elit, in tincidunt purus. Vestibulum fringilla cursus risus, eget ornare dolor feugiat vitae. Sed non porta lorem, eget ornare diam. Sed quam est, eleifend porttitor imperdiet sit amet, ultricies vel ipsum. Pellentesque mauris mauris, fermentum pretium ex quis, viverra mattis est. Donec laoreet sem nec arcu rhoncus lobortis. Duis id orci vel enim interdum aliquam. Integer eu ex ligula. Ut mattis nisi non malesuada ornare. In elit ligula, ultricies a aliquet eget, dictum sit amet neque. Quisque nulla sem, aliquam id molestie iaculis, consequat at augue. Nullam sollicitudin finibus eros in venenatis. Donec semper sagittis ipsum, et rhoncus magna ultricies eu. - */ -``` - -Leere p-tags würden zu leeren Strings im zurückgegebenen Array führen. Um dies zu vermeiden, können Sie stattdessen `$web->cleanParagraphs` aufrufen. Dadurch werden leere Absätze herausgefiltert und nur solche mit Inhalt zurückgegeben. Um auf den ersten Absatz mit Inhalt zuzugreifen, verwenden Sie `$web->cleanParagraphs[0]`. diff --git a/websites/de/examples/scrape-header-tags.md b/websites/de/examples/scrape-header-tags.md deleted file mode 100644 index a82f4d8..0000000 --- a/websites/de/examples/scrape-header-tags.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Header%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Header Tags Scrapen - -Die Header-Tags enthalten oft nützliche Informationen über eine Webseite und darüber, wie sie sich in die Gesamtstruktur der Website einfügt, zu der sie gehört. Die folgenden Beispiele zeigen, wie man auf bestimmte Informationen aus dem `` zugreift und Sammlungen um diese herum erstellt. - - -## Charset / Zeichensatz - -Um auf den definierten Zeichensatz zuzugreifen, können Sie die folgende Methode verwenden: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese enthält: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Gibt den charset aus: -echo $web->charset; // "utf-8" -``` - - -## Viewport - -In einigen Fällen, wie z.B. dem Viewport und den Meta-Keywords, stellt die Zeichenkette ein Array dar und wird als solches angegeben: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese enthält: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Gibt den Viewport als Array zurück. Es beinhaltet: - * - * [ - * 'width=device-width', - * 'initial-scale=1', - * 'shrink-to-fit=no', - * 'maximum-scale=1', - * 'user-scalable=no' - * ], - */ -var_dump($web->viewport); -``` - -Wenn Sie auf die ursprüngliche Reihenfolge zugreifen müssen, können Sie diese mit `viewportString` abrufen: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Gibt den Viewport als String zurück: - * - * "width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1, user-scalable=no" - */ -echo $web->viewportString; -``` - - -## Canonical URL - -Auf die kanonische URL kann, sofern vorhanden, wie im folgenden Beispiel gezeigt, zugegriffen werden: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese enthält: - * - * - */ -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -// Ausgabe der canonical URL -echo $web->canonical; // "https://test-pages.phpscraper.de/navigation/2.html" -``` - -::: tip Tipp -Wenn kein kanonischer Link gesetzt ist, gibt die Methode `null` zurück. -::: - - -## Content-Type - -Um auf den Inhaltstyp zuzugreifen, können Sie die folgenden Funktionen nutzen: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese enthält: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Ausgabe des contentType -echo $web->contentType; // "text/html; charset=utf-8" -``` - - -## CSFR Token - -Die CSFR-Token-Methode geht davon aus, dass das Token in einem Meta-Tag mit dem Namen "csrf-token" gespeichert ist. Dies ist der Standard für Laravel. Sie können mit folgendem Code darauf zugreifen: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese enthält: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Gibt den csrfToken aus: -echo $web->csrfToken; // "token" -``` - - -## Kombinierte Kopfzeilen-Tags - -Wenn Sie auf alle oben genannten Methoden zugreifen wollen, verwenden Sie die Methode `headers`. Sie ist definiert als: - -```php -/** - * @return array - */ -public function headers() -{ - return [ - 'charset' => $this->charset(), - 'contentType' => $this->contentType(), - 'viewport' => $this->viewport(), - 'canonical' => $this->canonical(), - 'csrfToken' => $this->csrfToken(), - ]; -} -``` - -Weitere Informationen zum Zugriff auf die [Meta-Tags](/de/examples/scrape-meta-tags.html). diff --git a/websites/de/examples/scrape-images.md b/websites/de/examples/scrape-images.md deleted file mode 100644 index 5186730..0000000 --- a/websites/de/examples/scrape-images.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Images&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Bilder Scrapen - -Sie fragen sich vielleicht, wie man mit PHPScraper Fotos, Bilder und andere Grafiken von einer Website scrapen kann. Wie bei anderen Funktionen auch, folgt das Scraping von Bildern & Fotos von einer Website einem ähnlichen Ansatz. Alle Grafiken wie Bilder, Fotos und Infografiken können zusammen mit Details wie Tag-Attributen oder nur als URL-Liste ausgelesen und analysiert werden. - - -## Bild-URLs Scrapen - -Das folgende Beispiel durchsucht eine Webseite nach Bildern und gibt absolute Bild-URLs als Array zurück. - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese Seite enthält zwei Bilder: - * - * absolute path - * relative path - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * [ - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - * - * @note - * - * Die Image URL ist doppelt enthalten, weil die Seite zweimal das gleiche Bild enthält: - * Einmal mit einem relativen Pfad und einmal mit einem absoluten Pfad. - * Die relativen Pfade werden standardmäßig in absolute Pfade aufgelöst. - */ -var_dump($web->images); -``` - -::: tip Tipp -Wenn keine Bilder gefunden werden, bleibt das Feld leer. Bilder können mit `$web->fetchAsset(...)` heruntergeladen werden. -::: - - -## Bild URLs mit Details Scrapen - -Wenn Sie mehr Details benötigen, können Sie mit den folgenden Anfragen auf die Attribute des Bild-Tags zugreifen: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'absolute path', - * 'width' => null, - * 'height' => null, - * ], - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'relative path', - * 'width' => null, - * 'height' => null, - * ] - */ -var_dump($web->imagesWithDetails); -``` - -::: tip SEO -Der `alt`-Text (mit den [Schlüsselwörtern des Inhalts](/de/examples/extract-keywords.html)) wird von Suchmaschinen für bildbasierte Suchen verwendet. Achten Sie darauf, ihn immer zu definieren. -::: - - -## Attribute Scrapen: Alt-Text, Breite und Höhe - -Die Attribute für "Alt", "Breite" und "Höhe" sind im ausführlichen Datensatz enthalten. - -Wenn Sie mehr Daten benötigen, müssen Sie entweder die Bibliothek erweitern oder ein Problem zur Prüfung einreichen. diff --git a/websites/de/examples/scrape-links.md b/websites/de/examples/scrape-links.md deleted file mode 100644 index 266e0fe..0000000 --- a/websites/de/examples/scrape-links.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Links&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Links Scrapen - -Das Scraping von Links funktioniert sehr ähnlich wie [image scraping](/de/examples/scrape-images.html). Sie können sowohl eine Liste von URLs ohne zusätzliche Informationen als auch eine detaillierte Liste mit `rel`, `target` und anderen Attributen abrufen. - - -## Einfache Link-Liste - -Das folgende Beispiel analysiert eine Webseite nach Links und gibt ein Array mit absoluten URLs zurück: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese enthält 6 Links zu placekitten.com mit unterschiedlichen Attributen: - * - *

      Different ways to wrap the attributes

      - *

      external kitten

      - *

      external kitten

      - *

      external kitten

      - * - *

      Named frame/window/tab

      - *

      external kitten

      - *

      external kitten

      - *

      external kitten

      - */ -$web->go('https://test-pages.phpscraper.de/links/target.html'); - -// Geben Sie die Anzahl der Links aus. -echo "Diese Seite enthält " . count($web->links) . " Links.\n\n"; - -// Schleife durch die Links -foreach ($web->links as $link) { - echo " - " . $link . "\n"; -} - -/** - * Kombiniert wird dies ausgegeben als: - * - * Diese Seite enthält 6 Links. - * - * - https://placekitten.com/408/287 - * - https://placekitten.com/444/333 - * - https://placekitten.com/444/321 - * - https://placekitten.com/408/287 - * - https://placekitten.com/444/333 - * - https://placekitten.com/444/321 - */ -``` - -Wenn die Seite keine Links enthalten soll, wird ein leeres Array zurückgegeben. - - -## Links mit Details - -Wenn Sie weitere Details benötigen, können Sie diese auf ähnliche Weise wie bei den Bildern abrufen. Nachstehend finden Sie ein Beispiel für den Zugriff auf die detaillierten Daten des ersten Links auf der Seite: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese Seite enthält eine Reihe von Links mit unterschiedlichen rel-Attributen. Um Platz zu sparen, wird nur der erste Link angezeigt: - * - * external kitten - */ -$web->go('https://test-pages.phpscraper.de/links/rel.html'); - -// Ermittelt den ersten Link auf der Seite. -$firstLink = $web->linksWithDetails[0]; - -/** - * $firstLink enthält jetzt: - * - * [ - * 'url' => 'https://placekitten.com/432/287', - * 'protocol' => 'https', - * 'text' => 'external kitten', - * 'title' => null, - * 'target' => null, - * 'rel' => 'nofollow', - * 'isNofollow' => true, - * 'isUGC' => false, - * 'isNoopener' => false, - * 'isNoreferrer' => false, - * ] - */ -``` - -Wenn Sie mehr Daten benötigen, müssen Sie entweder die Bibliothek erweitern oder eine Ausgabe zur Prüfung einreichen. - - -## Interne Links und externe Links - -PHPScraper erlaubt es alle, interne oder externe Links zurückzugeben. Das folgende Beispiel demonstriert `internalLinks` sowie `externalLinks`: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navigation zur Testseite. -$web->go('https://test-pages.phpscraper.de/links/base-href.html'); - -// Abrufen der Liste der internen Links (im Beispiel ist ein Bild verlinkt) -var_dump($web->internalLinks); -/** - * [ - * 'https://test-pages.phpscraper.de/assets/cat.jpg' - * ] - */ - -// Abrufen der Liste der externen Links -var_dump($web->externalLinks); -/** - * [ - * 'https://placekitten.com/408/287' - * ] - */ -``` diff --git a/websites/de/examples/scrape-meta-tags.md b/websites/de/examples/scrape-meta-tags.md deleted file mode 100644 index 2dcbda6..0000000 --- a/websites/de/examples/scrape-meta-tags.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Meta%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Meta Tags Scrapen - -Der Zugriff auf die Meta-Informationen erfolgt nach einem ähnlichen Muster wie bei den zuvor gezeigten [header-tags](/de/examples/scrape-header-tags.html). Nachfolgend finden Sie eine Reihe von Beispielen: - - -## Meta Autor, Beschreibung und Bild - -Das folgende Beispiel zeigt die Extraktion von drei Attributen: - -- der Meta-Autor, -- die Meta-Beschreibung und -- die Meta Image URL - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese enthält: - * - * - * - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Abrufen der Informationen: -echo $web->author; // "Lorem ipsum" -echo $web->description; // "Lorem ipsum dolor etc." -echo $web->image; // "https://test-pages.phpscraper.de/assets/cat.jpg" -``` - - -## Meta-Keywords - -Der Meta-Tag keywords ist natürlich ein Array und wird zu Ihrer Bequemlichkeit aufgeteilt: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese enthält: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -// Auslesen der Schlüsselwörter als Array -var_dump($web->keywords); // ['one', 'two', 'three'] -``` - -Alternatively, you can access the original keyword string: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -// Ausgabe der Schlüsselwörter als String -echo $web->keywordString; // "one, two, three" -``` - -::: tip Tipp -Dies bezieht sich nur auf die Schlüsselwörter im "keyword"-Meta-Tag. Sie können auch [die Schlüsselwörter des Inhalts](/de/examples/extract-keywords.html)) mit PHPScraper extrahieren. -::: - - -## Kombinierte Meta-Tags - -Wenn Sie auf alle Meta-Eigenschaften zugreifen möchten, können Sie die `metaTags`-Methode verwenden. Sie gibt die oben genannten Methoden als Array zurück. Sie ist definiert als: - -```php -/** - * Liefert die gesammelten Metadaten als Array - * - * @return array - */ -public function metaTags() -{ - return [ - 'author' => $this->author(), - 'image' => $this->image(), - 'keywords' => $this->keywords(), - 'description' => $this->description(), - ]; -} -``` - -Im obigen Beispiel würde es wie folgt verwendet werden: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -var_dump($web->metaTags); -/** - * Enthält: - * - * [ - * 'Lorem ipsum', - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ['one', 'two', 'three'], - * 'Lorem ipsum dolor etc.', - * ] - */ -``` - - -## Fehlende Meta-Tags - -Wenn Sie auf eine andere Meta-Eigenschaft zugreifen müssen, bitte lesen Sie die [Contribution Guidelines](/contributing.html) bevor Sie einen Pull Request öffnen oder ein [Issue auf GitHub](https://github.com/spekulatius/phpscraper/issues) aufmachen. diff --git a/websites/de/examples/scrape-social-media-meta-tags.md b/websites/de/examples/scrape-social-media-meta-tags.md deleted file mode 100644 index 72bd298..0000000 --- a/websites/de/examples/scrape-social-media-meta-tags.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Social%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Social Media Meta-Tags Scrapen - -Das Scraping von Social Media Sharing Tags von einer Website kann mit den folgenden Methoden durchgeführt werden. Die genaue Ergebnismenge hängt von den angegebenen Tags ab. Alle Tags werden berücksichtigt, solange sie sich im vorangestellten Namensraum befinden (z.B. `twitter:` für TwitterCards). - - -## Open-Graph (OG) Scrapen - -Das Abrufen von Open-Graph-Daten kann durchgeführt werden: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Die Seite enthält: - * - * - * - * - * - * - * - * - * - * @see https://test-pages.phpscraper.de/og/example.html - */ -$web->go('https://test-pages.phpscraper.de/og/example.html'); - -// Gibt 'Lorem Ipsum' aus: -echo $web->openGraph['og:title']; - -// Gibt 'Lorem ipsum dolor etc.' aus: -echo $web->openGraph['og:description']; - -// Das ganze OpenGraph-Set: -$data = $web->openGraph; - -/** - * $data enthält jetzt: - * - * [ - * 'og:site_name' => 'Lorem ipsum', - * 'og:type' => 'website', - * 'og:title' => 'Lorem Ipsum', - * 'og:description' => 'Lorem ipsum dolor etc.', - * 'og:url' => 'https://test-pages.phpscraper.de/meta/lorem-ipsum.html', - * 'og:image' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - */ -``` - -::: tip Tipp -Wurden keine Daten gefunden, wird das Array leer zurückgegeben. -::: - - -## Twitter-Card Scrapen - -Das Parsen der TwitterCard funktioniert ähnlich: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Die Seite enthält die folgende Twitter-Karte: - * - * - * - * - * - * - * - * - * @see https://test-pages.phpscraper.de/twittercard/example.html - */ -$web->go('https://test-pages.phpscraper.de/twittercard/example.html'); - -// Ausgegeben wird 'summary_large_image': -echo $web->twitterCard['twitter:card']; - -// Ausgegeben wird 'Lorem Ipsum': -echo $web->twitterCard['twitter:title']; - -// Die gesamte TwitterCard: -$data = $web->twitterCard; - -/** - * $data enthält jetzt: - * - * [ - * 'twitter:card' => 'summary_large_image', - * 'twitter:title' => 'Lorem Ipsum', - * 'twitter:description' => 'Lorem ipsum dolor etc.', - * 'twitter:url' => 'https://test-pages.phpscraper.de/meta/lorem-ipsum.html', - * 'twitter:image' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - */ -``` - -Ähnlich wie bei Open Graph wird das Array leer sein, wenn keine TwitterCard Tags gefunden wurden. diff --git a/websites/de/examples/scrape-website-title.md b/websites/de/examples/scrape-website-title.md deleted file mode 100644 index 550c883..0000000 --- a/websites/de/examples/scrape-website-title.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scrape%20Website%20Title&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Webseite-Titel Scrapen - -Das Scraping des Titels einer Website ist einfach. Die folgenden Beispiele zeigen, wie es mit PHPScraper funktioniert. - - -## Einfaches Beispiel - -Ein sehr einfaches Beispiel, wie man den Titel einer Website scrapen kann: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navigation zur Testseite - diese enthält den Titel-Tag "Lorem Ipsum" -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Enthält: - * - * Lorem Ipsum - */ - -// Gibt den Titel zurück. Dies sollte "Lorem Ipsum" zurückgeben. -var_dump($web->title); -``` - - -## Fehlender Titel - -Fehlt der Titel, wird `null` zurückgegeben: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navigation zur Testseite - diese enthält keinen Titel-Tag. -$web->go('https://test-pages.phpscraper.de/meta/missing.html'); - -// Gibt den Titel zurück. Dies sollte null zurückgeben. -var_dump($web->title); -``` - -Hinweis: Dies ist das Standardverhalten: Wenn ein Tag nicht gefunden wurde, weil er in der HTML-Quelle fehlt, wird `null` zurückgegeben. Wenn ein iterierbares Element leer ist (z.B. beim Scraping von Bildern von einer Seite ohne Bilder), wird ein leeres Array zurückgegeben. - - -## Besondere Zeichen - -Laden eines Website-Titels mit deutschen Umlauten - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Diese enthält: - * - * A page with plenty of German umlaute everywhere (ä ü ö) - */ -$web->go('https://test-pages.phpscraper.de/meta/german-umlaute.html'); - -// Ausgabe des Titels: "A page with plenty of German umlaute everywhere (ä ü ö)" -echo $web->title; -``` - -Es sollte in ähnlicher Weise mit allen UTF-8-Zeichen funktionieren. - - -## HTML-Elemente - -HTML-Entities sollten aufgelöst werden - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigation zur Testseite. Enthält: - * - * Cat & Mouse - */ -$web->go('https://test-pages.phpscraper.de/meta/html-entities.html'); - -// Ausgabe des Titels: "Cat & Mouse" -echo $web->title; -``` - -::: tip Tipp -Entities und Sonderzeichen wurden in der gesamten Bibliothek berücksichtigt. Wenn Sie eine Stelle finden, an der diese nicht wie erwartet funktionieren, melden Sie dies bitte unter [issue](https://github.com/spekulatius/PHPScraper/issues). -::: diff --git a/websites/de/misc/show-case.md b/websites/de/misc/show-case.md deleted file mode 100644 index 24372bc..0000000 --- a/websites/de/misc/show-case.md +++ /dev/null @@ -1,7 +0,0 @@ -# Show Case - -Zusätzlich zu den [Tutorials](/de/misc/tutorials.html) verwenden diese Bibliotheken und Composer-Pakete ebenfalls PHPScraper. Sie können sich den Code ansehen, um mehr über die einzelnen Anwendungsfälle zu erfahren. - -- [datlechin/flarum-link-preview](https://github.com/datlechin/flarum-link-preview): Link preview for Flarum Boards. - -If you'd like add your project please submit a PR. \ No newline at end of file diff --git a/websites/de/misc/sponsors.md b/websites/de/misc/sponsors.md deleted file mode 100644 index 1137ce3..0000000 --- a/websites/de/misc/sponsors.md +++ /dev/null @@ -1,13 +0,0 @@ -# Sponsoren - -PHP Scraper wird unterstützt von: - - - -## Sponsor werden - -Vielen Dank für Ihr Interesse, PHP Scraper zu unterstützen! PHP Scraper bietet Ihnen auf Ihre Bedürfnisse zugeschnittene Sponsoring-Pakete an. Bitte [melden Sie sich](https://peterthaleikis.com/contact), um Details zu besprechen. - -## Kommerzielle Unterstützung - -Unterstützung für kommerzielle Anwendungen, kommerzielle Lizenzen, kundenspezifische Entwicklung und ähnliches kann [besprochen](https://peterthaleikis.com/contact) werden. Wir freuen uns, Ihr Projekt zu unterstützen. diff --git a/websites/de/misc/support.md b/websites/de/misc/support.md deleted file mode 100644 index 2932fc2..0000000 --- a/websites/de/misc/support.md +++ /dev/null @@ -1,13 +0,0 @@ -# Unterstützung - -## Weitere Beispiele - -Wenn Sie weitere Beispiele benötigen, sehen Sie sich die [tests](https://github.com/spekulatius/phpscraper/tree/master/tests) an. Diese enthalten weitere Beispiele für das Auslesen von Daten aus Websites. - -## Fehler und andere Probleme - -Sollten Sie Fehler oder Probleme ähnlicher Art bemerken, melden Sie bitte ein [Thema auf GitHub](https://github.com/spekulatius/PHPScraper/issues). Vergessen Sie nicht, die detaillierten Informationen anzugeben, um das Problem zu replizieren. - -## Kommerzieller Support - -Unterstützung für kommerzielle Anwendungen, kommerzielle Lizenzen, benutzerdefinierte Entwicklung usw. kann [besprochen](https://peterthaleikis.com/contact) werden. diff --git a/websites/de/misc/tutorials.md b/websites/de/misc/tutorials.md deleted file mode 100644 index 7f7bbad..0000000 --- a/websites/de/misc/tutorials.md +++ /dev/null @@ -1,7 +0,0 @@ -# PHP Scraping Tutorials - -Die folgenden Tutorials verwenden PHPScraper und könnten hilfreich sein, mehr über die verschiedenen Möglichkeiten der Nutzung von PHPScraper zu lernen. - -- ... - -Bitte beachten Sie, dass die Tutorials nicht überprüft wurden und veraltet sein könnten. \ No newline at end of file diff --git a/websites/es/README.md b/websites/es/README.md deleted file mode 100644 index a530709..0000000 --- a/websites/es/README.md +++ /dev/null @@ -1,169 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP%20Scraper:%20Devolviendo%20la%20simplicidad%20al%20scraping%20y%20al%20crawling&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -PHP Scraper: Devolviendo la simplicidad al scraping y al crawling -================================================================= - -![PHP Scraper: Devolviendo la simplicidad al scraping y al crawling](logo-light.png) - -*de [Peter Thaleikis](https://peterthaleikis.com)* - -El raspado de la web usando PHP puede hacerse más fácilmente. Esta es una envoltura de opinión alrededor de algunas grandes bibliotecas de PHP para hacer el acceso a la web más fácil. - -Los ejemplos cuentan la historia mucho mejor. Echa un vistazo. - -::: tip Nota -Este sitio web de documentación en español es WIP. Por favor, eleve un PR en GitHub si encuentra algún error. Gracias! -::: - - -La idea 💡️ ----------- - -Acceder a sitios web y recoger información básica de la web es demasiado complejo. Esta envoltura alrededor de [Goutte](https://github.com/FriendsOfPHP/Goutte) lo hace más fácil. Te ahorra el uso de XPath y demás, dándote acceso directo a todo lo que necesitas. Web scraping con PHP reimaginado. - - -Apoyos 💪️ -------------- - -Este proyecto está patrocinado por: - - - -¿Quieres patrocinar este proyecto? [Escríbeme](https://peterthaleikis.com/contact). - - -Ejemplos --------- - -Aquí hay algunos ejemplos de lo que la biblioteca de raspado web puede hacer en este momento: - -### Scrape Meta Information: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de pruebas. Contiene: - * - * - * - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Obtener la información: -echo $web->author; // "Lorem ipsum" -echo $web->description; // "Lorem ipsum dolor etc." -echo $web->image; // "https://test-pages.phpscraper.de/assets/cat.jpg" -``` - -La mayor parte de la información se puede acceder directamente, ya sea como cadena o como matriz. - - -### Raspado de contenidos, como imágenes: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de prueba. Esta página contiene dos imágenes: - * - * absolute path - * relative path - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -var_dump($web->imagesWithDetails); -/** - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'absolute path', - * 'width' => null, - * 'height' => null, - * ], - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'relative path', - * 'width' => null, - * 'height' => null, - * ] - */ -``` - -Alguna información *opcionalmente* se devuelve como un array con detalles. Para este ejemplo, una simple lista de imágenes está disponible usando `$web->images` también. Esto debería facilitar el raspado de la web. - -Se puede encontrar más código de ejemplo en los ejemplos y pruebas. - - -Instalación ------------- - -La instalación suele realizarse mediante [Composer](https://getcomposer.org). - -### Instalación con Composer - -```bash -composer require spekulatius/phpscraper -``` - -Una vez completada la instalación, el paquete será recogido por el autocargador de Composer. En las aplicaciones y frameworks típicos de PHP como Laravel o Symfony ya puedes empezar a hacer scraping. Ahora puedes usar cualquiera de los ejemplos anotados o los ejemplos en la carpeta `tests/`. - -### Uso en proyectos VanillaPHP - -Si estás construyendo un proyecto VanillaPHP, necesitarás incluir el autoloader en tu script en la parte superior de tu script PHP: - -```php -require 'vendor/autoload.php'; -``` - -Si estás usando un framework como Laravel, Symfony, Laminas, Phalcon o CakePHP, no necesitarás este paso. El autoloader se incluye automáticamente. - - -Configuración -------------- - -La configuración adicional es opcional. A continuación se muestran las opciones correctamente disponibles. - -### Soporte de Proxy - -Si necesita proxies, puede configurar el soporte de proxy con `setConfig`: - -```php -$web->setConfig(['proxy' => 'http://user:password@127.0.0.1:3128']); -``` - -### Timeout - -Puedes establecer el `timeout` usando `setConfig`: - -```php -$web->setConfig(['timeout' => 15]); -``` - -Si se pone el tiempo de espera a cero, se desactivará. - -### Desactivación de SSL - -Aunque no se recomienda, puede ser necesario desactivar las comprobaciones de SSL. Puede hacerlo utilizando: - -```php -$web->setConfig(['disable_ssl' => true]); -``` - -Puedes llamar a `setConfig` varias veces. Almacena la configuración y la fusiona con los ajustes anteriores. Esto debe tenerse en cuenta en el improbable caso de uso cuando se desestablecen los valores. - - -¿Has encontrado un error y lo has arreglado? ¡Impresionante! ----------------------------------- -Antes de empezar, familiarícese con las [directrices de contribución](/contributing.html). Si tiene alguna pregunta, no dude en ponerse en contacto con nosotros. - - -Pruebas: Asegurarse de que funciona. ----------------------------- - -El código está cubierto a grandes rasgos con pruebas de extremo a extremo. Para ello, se alojan páginas web sencillas en *https://test-pages.phpscraper.de/*, cargado y analizado usando [PHPUnit](https://phpunit.de/). Estas pruebas también son adecuadas como ejemplos - véase `tests/`! - -Dicho esto, es probable que haya casos límite que no funcionen y puedan causar problemas. Si encuentras uno, por favor, levanta un bug en GitHub. diff --git a/websites/es/apis/alibaba.md b/websites/es/apis/alibaba.md deleted file mode 100644 index aa29e44..0000000 --- a/websites/es/apis/alibaba.md +++ /dev/null @@ -1,18 +0,0 @@ -# Alibaba/AliExpress Scraper API - -El equipo detrás de PHP Scraper está trabajando en la provisión de APIs comerciales para varios casos de uso común así como para plataformas. Estas APIs no son auto-alojadas. No tendrá que preocuparse de rotar IPs/proxies, ejecutando un navegador sin cabeza como Puppeteer. Una simple llamada a la API le permitirá obtener toda la información necesaria. Los servicios serán proporcionados en una atractiva estructura de tarifas dependiente del uso. - -Para Alibaba estamos considerando la implementación de una API con el siguiente alcance. - -## Puntos finales propuestos - -- Búsqueda de productos por palabra clave -- Obtener información sobre el producto - -::: tip CONSEJO -Tenga en cuenta que esta lista de puntos finales de la API no es *final* y es probable que cambie. -::: - -## Soporte de la plataforma - -Con el enfoque de utilizar una API gestionada, los usuarios se liberan de preocuparse por la rotación de proxies, los problemas de escalado y las interrupciones. Además, se admite una amplia gama de plataformas. Se puede integrar fácilmente en NodeJS, Python (sin peticiones ni beautifulsoap), Golang, etc. Cualquier plataforma que permita ejecutar peticiones GET puede ser programada para solicitar datos de este servicio. diff --git a/websites/es/apis/amazon.md b/websites/es/apis/amazon.md deleted file mode 100644 index 20e270b..0000000 --- a/websites/es/apis/amazon.md +++ /dev/null @@ -1,22 +0,0 @@ -# Amazon Scraper API - -El equipo detrás de PHP Scraper está trabajando en la provisión de APIs comerciales para varios casos de uso común así como para plataformas. Estas APIs no son auto-alojadas. No tendrá que preocuparse de rotar IPs/proxies, ejecutando un navegador sin cabeza como Puppeteer. Una simple llamada a la API le permitirá obtener toda la información necesaria. Los servicios serán proporcionados en una atractiva estructura de tarifas dependiente del uso. - -Para Amazon estamos considerando la implementación de una API con el siguiente alcance. - -## Puntos finales propuestos - -- Obtener información del producto -- Obtener recomendaciones -- Obtener información de la revisión -- Obtener información del vendedor -- Obtener todos los precios de los vendedores -- Buscar productos por palabra clave o ID de vendedor - -::: tip CONSEJO -Tenga en cuenta que esta lista de puntos finales de la API no es *final* y es probable que cambie. -::: - -## Soporte de plataforma - -Con el enfoque de utilizar una API gestionada, los usuarios se liberan de preocuparse por la rotación de proxies, los problemas de escalado y las interrupciones. Además, se admite una amplia gama de plataformas. Se puede integrar fácilmente en NodeJS, Python (sin peticiones ni beautifulsoap), Golang, etc. Cualquier plataforma que permita ejecutar peticiones GET puede ser programada para solicitar datos de este servicio. diff --git a/websites/es/apis/etsy.md b/websites/es/apis/etsy.md deleted file mode 100644 index 30ce38a..0000000 --- a/websites/es/apis/etsy.md +++ /dev/null @@ -1,22 +0,0 @@ -# Etsy Scraper API - -El equipo detrás de PHP Scraper está trabajando en la provisión de APIs comerciales para varios casos de uso común así como para plataformas. Estas APIs no son auto-alojadas. No tendrá que preocuparse de rotar IPs/proxies, ejecutando un navegador sin cabeza como Puppeteer. Una simple llamada a la API le permitirá obtener toda la información necesaria. Los servicios serán proporcionados en una atractiva estructura de tarifas dependiente del uso. - -Para Etsy estamos considerando la implementación de una API con el siguiente alcance. - -## Puntos finales propuestos - -- Obtener información del producto -- Obtener recomendaciones -- Obtener información de la revisión -- Obtener información del vendedor -- Obtener todos los precios de los vendedores -- Buscar productos por palabra clave o ID de vendedor - -::: tip CONSEJO -Tenga en cuenta que esta lista de puntos finales de la API no es *final* y es probable que cambie. -::: - -## Soporte de plataforma - -Con el enfoque de utilizar una API gestionada, los usuarios se liberan de preocuparse por la rotación de proxies, los problemas de escalado y las interrupciones. Además, se admite una amplia gama de plataformas. Se puede integrar fácilmente en NodeJS, Python (sin peticiones ni beautifulsoap), Golang, etc. Cualquier plataforma que permita ejecutar peticiones GET puede ser programada para solicitar datos de este servicio. diff --git a/websites/es/apis/facebook.md b/websites/es/apis/facebook.md deleted file mode 100644 index 99c86ec..0000000 --- a/websites/es/apis/facebook.md +++ /dev/null @@ -1,28 +0,0 @@ -# Facebook Scraper API - -El equipo detrás de PHP Scraper está trabajando en proveer APIs comerciales para varios casos de uso común así como plataformas. Estas APIs no son auto-alojadas. No tendrás que preocuparte por rotar IPs/proxies, ejecutando un navegador sin cabeza como Puppeteer. Una simple llamada a la API le permitirá obtener toda la información necesaria. Los servicios serán proporcionados en una atractiva estructura de tarifas dependiente del uso. - -Para Facebook estamos considerando la implementación de una API con el siguiente alcance. - -## Puntos finales propuestos - -- Usuario: Perfil de usuario público -- Usuario: Otras cuentas sociales -- Usuario: Lista de amigos -- Usuario: Imágenes -- Usuario: Mensajes de ubicación -- Usuario: Mensajes de usuario -- Público Grupos y grupos privados con clave: Perfil del grupo público -- Público Grupos y grupos privados con clave: Lista de miembros -- Público Grupos y grupos privados con clave: Imágenes -- Público Grupos y grupos privados con clave: Perfil del grupo público Mensajes de ubicación -- Público Grupos y grupos privados con clave: Mensajes Mensajes -- Mensajes: Detalles del post público (incluyendo comentarios, likes, likers, etc.) - -::: tip CONSEJO -Tenga en cuenta que esta lista de puntos finales de la API no es *final* y es probable que cambie. -::: - -## Soporte de la plataforma - -Con el enfoque de utilizar una API gestionada, los usuarios se liberan de preocuparse por la rotación de proxies, los problemas de escalado y las interrupciones. Además, se admite una amplia gama de plataformas. Se puede integrar fácilmente en NodeJS, Python (sin peticiones ni beautifulsoap), Golang, etc. Cualquier plataforma que permita ejecutar peticiones GET puede ser programada para solicitar datos de este servicio. diff --git a/websites/es/apis/instagram.md b/websites/es/apis/instagram.md deleted file mode 100644 index 489cffb..0000000 --- a/websites/es/apis/instagram.md +++ /dev/null @@ -1,34 +0,0 @@ -# Instagram Scraper API - -El equipo detrás de PHP Scraper está trabajando en proporcionar APIs comerciales para varios casos de uso común, así como plataformas. Estas APIs no son auto-alojadas. No tendrás que preocuparte de rotar IPs/proxies, ejecutando un navegador headless como Puppeteer. Una simple llamada a la API le permitirá obtener toda la información necesaria. Los servicios serán proporcionados en una atractiva estructura de tarifas dependiente del uso. - -Para Instagram estamos considerando la implementación de una API con el siguiente alcance. - -## Puntos finales propuestos - -- Usuario: Detalles del perfil -- Usuario: Destacados -- Usuario: Mensajes -- Usuario: Mensajes etiquetados -- Usuario: Mensajes públicos -- Usuario: Seguidores -- Usuario: Obtener historias -- Usuario: Estado actual -- Usuario: Otras cuentas sociales -- Mensajes Públicos: Comentarios -- Publicación pública: Likers -- Descargador de historias con conversión a mp4, mp3, etc. -- Mensajes con Hashtags -- Mensajes de ubicación -- Búsqueda por ubicación -- Detalles del puesto -- Perfiles relacionados -- Buscar - -::: tip CONSEJO -Tenga en cuenta que esta lista de puntos finales de la API no es *final* y es probable que cambie. -::: - -## Soporte de la plataforma - -Con el enfoque de utilizar una API gestionada, los usuarios se liberan de preocuparse por la rotación de proxies, los problemas de escalado y las interrupciones. Además, se admite una amplia gama de plataformas. Se puede integrar fácilmente en NodeJS, Python (sin peticiones ni beautifulsoap), Golang, etc. Cualquier plataforma que permita ejecutar peticiones GET puede ser programada para solicitar datos de este servicio. diff --git a/websites/es/apis/linkedin.md b/websites/es/apis/linkedin.md deleted file mode 100644 index 4715801..0000000 --- a/websites/es/apis/linkedin.md +++ /dev/null @@ -1,21 +0,0 @@ -# LinkedIn Scraper API - -El equipo detrás de PHP Scraper está trabajando en proveer APIs comerciales para varios casos de uso común así como plataformas. Estas APIs no son auto-alojadas. No tendrás que preocuparte de rotar IPs/proxies, ejecutando un navegador headless como Puppeteer. Una simple llamada a la API le permitirá obtener toda la información necesaria. Los servicios serán proporcionados en una atractiva estructura de tarifas dependiente del uso. - -Para LinkedIn estamos considerando la implementación de una API con el siguiente alcance. - -## Puntos finales propuestos - -- Usuario: Detalles del perfil -- Usuario: Mensajes -- Puestos: Descargador y convertidor de vídeo. -- Empresa: Detalles del perfil -- Búsqueda de empleo - -::: tip CONSEJO -Tenga en cuenta que esta lista de puntos finales de la API no es *final* y es probable que cambie. -::: - -## Soporte de la plataforma - -Con el enfoque de utilizar una API gestionada, los usuarios se liberan de preocuparse por la rotación de proxies, los problemas de escalado y las interrupciones. Además, se admite una amplia gama de plataformas. Se puede integrar fácilmente en NodeJS, Python (sin peticiones ni beautifulsoap), Golang, etc. Cualquier plataforma que permita ejecutar peticiones GET puede ser programada para solicitar datos de este servicio. diff --git a/websites/es/apis/target.md b/websites/es/apis/target.md deleted file mode 100644 index c0da65e..0000000 --- a/websites/es/apis/target.md +++ /dev/null @@ -1,18 +0,0 @@ -# Target Scraper API - -El equipo detrás de PHP Scraper está trabajando en proveer APIs comerciales para varios casos de uso común así como plataformas. Estas APIs no son auto-alojadas. No tendrá que preocuparse de rotar IPs/proxies, ejecutando un navegador sin cabeza como Puppeteer. Una simple llamada a la API le permitirá obtener toda la información necesaria. Los servicios serán proporcionados en una atractiva estructura de tarifas dependiente del uso. - -Para Target estamos considerando la implementación de una API con el siguiente alcance. - -## Puntos finales propuestos - -- Obtener detalles del producto -- Búsqueda de productos por palabra clave - -::: tip CONSEJO -Tenga en cuenta que esta lista de puntos finales de la API no es *final* y es probable que cambie. -::: - -## Soporte de la plataforma - -Con el enfoque de utilizar una API gestionada, los usuarios se liberan de preocuparse por la rotación de proxies, los problemas de escalado y las interrupciones. Además, se admite una amplia gama de plataformas. Se puede integrar fácilmente en NodeJS, Python (sin peticiones ni beautifulsoap), Golang, etc. Cualquier plataforma que permita ejecutar peticiones GET puede ser programada para solicitar datos de este servicio. diff --git a/websites/es/apis/tiktok.md b/websites/es/apis/tiktok.md deleted file mode 100644 index bd71897..0000000 --- a/websites/es/apis/tiktok.md +++ /dev/null @@ -1,21 +0,0 @@ -# TikTok Scraper API - -El equipo detrás de PHP Scraper está trabajando en la provisión de APIs comerciales para varios casos de uso común así como para plataformas. Estas APIs no son auto-alojadas. No tendrá que preocuparse de rotar IPs/proxies, ejecutando un navegador sin cabeza como Puppeteer. Una simple llamada a la API le permitirá obtener toda la información necesaria. Los servicios serán proporcionados en una atractiva estructura de tarifas dependiente del uso. - -Para TikTok estamos considerando la implementación de una API con el siguiente alcance. - -## Puntos finales soportados propuestos - -- Búsqueda por etiqueta -- Usuario: Detalles del perfil público -- Usuario: Otras cuentas sociales -- Detalles del vídeo -- Descarga de vídeo con conversión a mp4, mp3, etc. y sin marca de agua - -::: tip CONSEJO -Tenga en cuenta que esta lista de puntos finales de la API no es *final* y es probable que cambie. -::: - -## Soporte de la plataforma - -Con el enfoque de utilizar una API gestionada, los usuarios se liberan de preocuparse por la rotación de proxies, los problemas de escalado y las interrupciones. Además, se admite una amplia gama de plataformas. Se puede integrar fácilmente en NodeJS, Python (sin peticiones ni beautifulsoap), Golang, etc. Cualquier plataforma que permita ejecutar peticiones GET puede ser programada para solicitar datos de este servicio. diff --git a/websites/es/apis/walmart.md b/websites/es/apis/walmart.md deleted file mode 100644 index 604587a..0000000 --- a/websites/es/apis/walmart.md +++ /dev/null @@ -1,18 +0,0 @@ -# Walmart Scraper API - -El equipo detrás de PHP Scraper está trabajando en proveer APIs comerciales para varios casos de uso común así como plataformas. Estas APIs no son auto-alojadas. No tendrá que preocuparse de rotar IPs/proxies, ejecutando un navegador sin cabeza como Puppeteer. Una simple llamada a la API le permitirá obtener toda la información necesaria. Los servicios serán proporcionados en una atractiva estructura de tarifas dependiente del uso. - -Para Walmart estamos considerando la implementación de una API con el siguiente alcance. - -## Puntos finales propuestos - -- Obtener detalles del producto -- Búsqueda de productos por palabra clave - -::: tip CONSEJO -Tenga en cuenta que esta lista de puntos finales de la API no es *final* y es probable que cambie. -::: - -## Soporte de la plataforma - -Con el enfoque de utilizar una API gestionada, los usuarios se liberan de preocuparse por la rotación de proxies, los problemas de escalado y las interrupciones. Además, se admite una amplia gama de plataformas. Se puede integrar fácilmente en NodeJS, Python (sin peticiones ni beautifulsoap), Golang, etc. Cualquier plataforma que permita ejecutar peticiones GET puede ser programada para solicitar datos de este servicio. diff --git a/websites/es/apis/zalando.md b/websites/es/apis/zalando.md deleted file mode 100644 index 68a93d4..0000000 --- a/websites/es/apis/zalando.md +++ /dev/null @@ -1,18 +0,0 @@ -# Zalando Scraper API - -El equipo detrás de PHP Scraper está trabajando en proporcionar APIs comerciales para varios casos de uso común, así como plataformas. Estas APIs no son auto-alojadas. No tendrá que preocuparse de rotar IPs/proxies, ejecutando un navegador sin cabeza como Puppeteer. Una simple llamada a la API le permitirá obtener toda la información necesaria. Los servicios serán proporcionados en una atractiva estructura de tarifas dependiente del uso. - -Para Zalando estamos considerando la implementación de una API con el siguiente alcance. - -## Puntos finales propuestos - -- Obtener detalles del producto -- Búsqueda de productos por palabra clave - -::: tip CONSEJO -Tenga en cuenta que esta lista de puntos finales de la API no es *final* y es probable que cambie. -::: - -## Soporte de la plataforma - -Con el enfoque de utilizar una API gestionada, los usuarios se liberan de preocuparse por la rotación de proxies, los problemas de escalado y las interrupciones. Además, se admite una amplia gama de plataformas. Se puede integrar fácilmente en NodeJS, Python (sin peticiones ni beautifulsoap), Golang, etc. Cualquier plataforma que permita ejecutar peticiones GET puede ser programada para solicitar datos de este servicio. diff --git a/websites/es/examples/extract-keywords.md b/websites/es/examples/extract-keywords.md deleted file mode 100644 index a893f39..0000000 --- a/websites/es/examples/extract-keywords.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Extract%20Keywords&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Extraer palabras clave - -Mientras que raspar el contenido es a menudo suficiente, a veces se requiere extraer términos y frases significativas (palabras clave) de este contenido. PHPScraper le permite extraer las palabras clave del sitio web directamente. Para ello utiliza: - -- el título del sitio web, -- los meta tags, -- todos los encabezados, -- los párrafos de la página, -- los anclajes y los títulos de los enlaces, así como -- los atributos del título de las imágenes - -Aunque se extraigan estas frases de palabras clave, no significa que la página se clasifique realmente para estas palabras clave. La decisión final sobre qué palabras clave clasifica una página web corresponde al motor de búsqueda. - -El siguiente ejemplo devolverá una lista de todas las palabras clave extraídas de la página web: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navega a la página de prueba. -// Contiene 3 párrafos del artículo de Wikipedia en inglés para "lorem ipsum" -$web->go('https://test-pages.phpscraper.de/content/keywords.html'); - -// Comprobar el número de palabras clave. -$keywords = $web->contentKeywords; -echo "Esta página contiene al menos " . count($keywords) . " palabras clave/frases.\n\n"; - -// Recorrer en bucle las palabras clave -foreach ($keywords as $keyword) { - echo " - " . $keyword . "\n"; -} - -/** - * Se imprimirá: - * - * Esta página contiene al menos 40 palabras clave/frases. - * - * [...] - * - graphic - * - improper latin - * - introduced - * - keyword extraction tests - * - letraset transfer sheets - * - lorem ipsum - * - lorem ipsum php rake library lorem ipsum - * - lorem ipsum text - * - make - * - malorum - * - microsoft word - * - mid-1980s - * - nonsensical - * - page - * - paragraphs - * - philosopher cicero - * - php rake library - * - popular word processors including pages - * - popularized - * - removed - * - roman statesman - * - source - * [...] - */ -``` - -::: tip CONSEJO -El idioma por defecto (locale) es `en_US`. Se pueden pasar otros idiomas como parámetro. Actualmente sólo funciona para una selección de idiomas. Consulte esta [lista](https://github.com/Donatello-za/rake-php-plus#currently-supported-languages) para obtener más información. -::: - - -## Puntuación de las palabras clave - -No todas las palabras clave tienen el mismo peso en los algoritmos de clasificación de los motores de búsqueda. Una mezcla de varios factores y señales de SEO decide el peso que un motor de búsqueda asigna a una palabra. La frecuencia de las palabras, la longitud de los textos y las variaciones, como los sinónimos, pueden dar lugar a una ponderación diferente. - -PHPScraper le permite obtener una indicación del peso de las palabras clave en forma de puntuación: - - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navega a la página de prueba. -// Contiene 3 párrafos del artículo de Wikipedia en inglés para "lorem ipsum" -$web->go('https://test-pages.phpscraper.de/content/keywords.html'); - -// Comprobar el número de palabras clave. -$keywords = $web->contentKeywordsWithScores; -echo "Esta página contiene al menos " . count($keywords) . " palabras clave/frases.\n\n"; - -// Recorrer en bucle las palabras clave -foreach ($keywords as $keyword => $score) { - echo sprintf(" - %s (%s)\n", $keyword, $score); -} - -/** - * Se imprimirá: - * - * Esta página contiene al menos 40 palabras clave/frases. - * - * [...] - * - 1960s (1.0) - * - added (1.0) - * - adopted lorem ipsum (11.0) - * - advertisements (1.0) - * - aldus employed (4.0) - * - corrupted version (4.0) - * - graphic (1.0) - * - improper latin (4.0) - * - introduced (1.0) - * - keyword extraction tests (9.0) - * - test (1.0) - * - microsoft word (5.3333333333333) - * - english wikipedia (4.0) - * - lorem ipsum (8.0) - * - lorem ipsum text (11.0) - * [...] - */ -``` - -::: tip CONSEJO -Las funciones PHP [similar_text](https://www.php.net/manual/en/function.similar-text.php) y [levenshtein](https://www.php.net/manual/en/function.levenshtein.php) pueden ayudarle a identificar y fusionar palabras clave similares, así como variaciones tipográficas de palabras clave. [Keyword Merge](https://github.com/spekulatius/keyword-merge) es un paquete de compositor que ayuda a clasificar palabras clave similares. -::: diff --git a/websites/es/examples/headings.md b/websites/es/examples/headings.md deleted file mode 100644 index 8e9c0af..0000000 --- a/websites/es/examples/headings.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Headings&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Recolección de encabezados - -Los encabezados pueden ser útiles para hacerse una idea del contenido de un sitio web. El siguiente ejemplo muestra cómo hacer scraping: - - - Un solo encabezado - - Todos los encabezamientos de un nivel determinado (por ejemplo, `

      `) - - Todos los encabezamientos de una página - - -## Raspado de un solo encabezado - -Raspar un solo encabezado es fácil y se puede hacer siguiendo este ejemplo: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de pruebas. Contiene: - * - * Outline Test - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -// Imprimir la cabecera H1 -echo $web->h1[0]; // "Outline Test" -``` - -::: tip CONSEJO -El [título del sitio web](/es/examples/scrape-website-title.html) y el encabezado 1 (`

      `) pueden ser diferentes. Asegúrese de recuperar el correcto. -::: - - -## Rúbricas por nivel - -Puede haber casos en los que desee recuperar todos los títulos de un nivel determinado. El siguiente ejemplo muestra cómo hacerlo: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de pruebas. Contiene: - * - *

      Example 1

      - *

      Here would be an example.

      - * - *

      Example 2

      - *

      Here would be the second example.

      - * - *

      Example 3

      - *

      Here would be another example.

      - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -/** - * Obtenga los encabezados h3: - * - * [ - * 'Example 1', - * 'Example 2', - * 'Example 3' - * ] - */ -$web->h3; -``` - -Si no se encuentra ningún encabezamiento, la matriz se deja vacía. - - -## Todos los encabezados de una página - -Para acceder a todos los encabezados de una página, puede hacerlo accediendo a los diferentes niveles del 1 al 6. O, alternativamente, puede acceder a todos a la vez: - - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de la prueba. Esta página contiene: - * - *

      We are testing here!

      - *

      This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

      - * - *

      Examples

      - *

      There are numerous examples on the website. Please check them out to get more context on how scraping works.

      - * - *

      Example 1

      - *

      Here would be an example.

      - * - *

      Example 2

      - *

      Here would be the second example.

      - * - *

      Example 3

      - *

      Here would be another example.

      - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -/** - * $headings contiene ahora: - * - * [ - * [ - * 'We are testing here!' - * ], - * [ - * 'Examples' - * ], - * [ - * 'Example 1', - * 'Example 2', - * 'Example 3', - * ], - * [], - * [], - * [] - * ] - */ -$web->headings; -``` - -Como puede ver, esto no contiene ninguna información sobre la estructura de los encabezados. Es puramente para saber qué encabezados existen. Si quiere tener un [esquema](/es/examples/outline.html) tendrá que utilizar los métodos relacionados. diff --git a/websites/es/examples/lists.md b/websites/es/examples/lists.md deleted file mode 100644 index de41767..0000000 --- a/websites/es/examples/lists.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Lists&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Listas de raspado - -El raspado de listas sigue un enfoque similar al de otros raspados con PHPScraper: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegar a la página de prueba. Esta página contiene: - * - *

      Example 1: Unordered List

      - *
        - *
      • Unordered list item 1
      • - *
      • Unordered list item 2
      • - *
      • Unordered list item with HTML
      • - *
      - * - *

      Example 2: Ordered List

      - *
        - *
      1. Ordered list item 1
      2. - *
      3. Ordered list item 2
      4. - *
      5. Ordered list item with HTML
      6. - *
      - */ -$web->go('https://test-pages.phpscraper.de/content/lists.html'); - -/** - * Sólo listas desordenadas (
        ) - * - * [ - * "type" => "ul", - * "children" => ... // Lista de childNodes - * "children_plain" => - * [ - * "Unordered list item 1" - * "Unordered list item 2" - * "Unordered list item with HTML" - * ] - * ] - */ -var_dump($web->unorderedLists); - - -/** - * Sólo listas ordenadas (
          ) - * - * [ - * "type" => "ul", - * "children" => ... // Lista de childNodes - * "children_plain" => - * [ - * "Ordered list item 1" - * "Ordered list item 2" - * "Ordered list item with HTML" - * ] - * ] - */ -var_dump($web->orderedLists); - -// Ambas listas combinadas (como la anterior) -var_dump($web->lists); -``` - -::: warning Listas anidadas -Por el momento, esto no maneja bien las listas anidadas. Las listas anidadas se incluyen en el resultado como `hijos` para permitir su procesamiento posterior. -::: diff --git a/websites/es/examples/navigation.md b/websites/es/examples/navigation.md deleted file mode 100644 index 279414c..0000000 --- a/websites/es/examples/navigation.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Navigate%20while%20Scraping&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Navegación - -Aunque PHPScraper está pensado principalmente para analizar sitios web y recopilar información, también se puede utilizar para navegar por sitios web. A continuación hay ejemplos de formas de *navegar* por un sitio web. - - -## Navegación usando URLs - -Puedes navegar a cualquier URL. Estas URLs suelen proceder de los [enlaces analizados](/es/examples/scrape-links.html). - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Comenzamos en la página de prueba #1. -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -// Imprime el título para ver si estamos en la página correcta... -echo $web->h1[0]; // 'Page #1' - - -// Navegamos a la página de prueba #2 usando la URL absoluta. -$web->clickLink('https://test-pages.phpscraper.de/navigation/2.html'); - -// Imprime el título para ver si estamos en la página correcta... -echo $web->h1[0]; // 'Page #2' -``` - - -## Navegación con textos de anclaje - -En un sitio web se puede *hacer clic* en los enlaces utilizando sus textos de anclaje: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Comenzamos en la página de prueba #1. -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -/** - * Esta página contiene: - * - * 2 relative - */ - -// Imprime el título para ver si estamos en la página correcta... -echo $web->h1[0]; // 'Page #1' - - -// Navegamos a la página de prueba #2 usando el texto que tiene en la página. -$web->clickLink('2 relativo'); - -// Imprime el título para ver si estamos en la página correcta... -echo $web->h1[0]; // 'Page #2' -``` - -Esta funcionalidad básica debería permitirle navegar por los sitios web. diff --git a/websites/es/examples/outline.md b/websites/es/examples/outline.md deleted file mode 100644 index 2d1b4cd..0000000 --- a/websites/es/examples/outline.md +++ /dev/null @@ -1,215 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scrape%20Content%20Outline&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Extracción de contornos - -Si bien es posible que quiera acceder sólo a los [`encabezados`](/es/examples/headings.html) para procesar, por ejemplo, el número o la longitud de los epígrafes, no siempre es suficiente. En algunos casos puede ser necesario identificar la estructura real del contenido. Para estos casos de uso, puede considerar uno de estos métodos: - - - `outline` funciona de forma similar al método `headings` mencionado anteriormente. También devuelve todos los encabezados, pero mantiene la estructura del documento original en su lugar y proporciona los niveles de encabezado (por ejemplo, `h1`) solo con la salida. - - - El método `outlineWithParagraphs` funciona de forma similar a `outline`, con la diferencia de que esta llamada también incluye los párrafos. - - - `CleanOutlineWithParagraphs` funciona de forma similar a `outlineWithParagraphs`, con la diferencia de que se eliminan las etiquetas HTML vacías. - -Los siguientes ejemplos deberían ayudar a entender mejor la funcionalidad. Hay métodos dedicados para la [extracción de palabras clave](/es/examples/extract-keywords.html) disponibles. - - -## Extraer el esquema - -El esquema del contenido permite construir un índice del documento. El siguiente ejemplo construye una versión markdown de los encabezados del documento solicitado: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de la prueba. Esta página contiene: - * - *

          We are testing here!

          - * [...] - * - *

          Examples

          - * [...] - * - *

          Example 1

          - * [...] - * - *

          Example 2

          - * [...] - * - *

          Example 3

          - * [...] - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - -/** - * $outline se establecerá para que contenga: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ] - * ] - */ -$outline = $web->outline; -``` - - -## Extraer el esquema con párrafos - -El siguiente método funciona de manera similar a `outline`, pero también incluye los párrafos como parte del array devuelto: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de la prueba. Esta página contiene: - * - *

          We are testing here!

          - *

          This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

          - * - *

          Examples

          - *

          There are numerous examples on the website. Please check them out to get more context on how scraping works.

          - * - *

          Example 1

          - *

          Here would be an example.

          - * - *

          Example 2

          - *

          Here would be the second example.

          - * - *

          Example 3

          - *

          Here would be another example.

          - * - * - *

          - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - - -$content = $web->outlineWithParagraphs; -/** - * $content ahora contiene: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "p", - * "content" => "This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example." - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "p", - * "content" => "There are numerous examples on the website. Please check them out to get more context on how scraping works." - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "p", - * "content" => "Here would be an example." - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "p", - * "content" => "Here would be the second example." - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ], [ - * "tag" => "p", - * "content" => "Here would be another example." - * ], [ - * "tag" => "p", - * "content" => "" - * ] - * ] - */ -``` - - -## Extraer el esquema depurado con los párrafos - -El siguiente método funciona de manera similar a `outlineWithParagraphs`, pero no incluye ningún encabezado o párrafo vacío como parte del array devuelto: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de la prueba. Esta página contiene: - * - *

          We are testing here!

          - *

          This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

          - * - *

          Examples

          - *

          There are numerous examples on the website. Please check them out to get more context on how scraping works.

          - * - *

          Example 1

          - *

          Here would be an example.

          - * - *

          Example 2

          - *

          Here would be the second example.

          - * - *

          Example 3

          - *

          Here would be another example.

          - * - * - *

          - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - - -$content = $web->cleanOutlineWithParagraphs; -/** - * $content ahora contiene: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "p", - * "content" => "This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example." - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "p", - * "content" => "There are numerous examples on the website. Please check them out to get more context on how scraping works." - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "p", - * "content" => "Here would be an example." - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "p", - * "content" => "Here would be the second example." - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ], [ - * "tag" => "p", - * "content" => "Here would be another example." - * ] - * ] - */ -``` diff --git a/websites/es/examples/paragraphs.md b/websites/es/examples/paragraphs.md deleted file mode 100644 index 6777585..0000000 --- a/websites/es/examples/paragraphs.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Content&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Texto de raspado - -El raspado de contenido, sobre todo de párrafos, se puede hacer fácilmente usando PHP Scraper. Hay un método dedicado para acceder a los párrafos (`

          `) en un sitio web. Los siguientes ejemplos muestran cómo acceder al contenido/textos de un sitio web. - - -## Obtener todos los párrafos - -El siguiente ejemplo devolverá una lista de todos los párrafos (etiquetas `

          `) del sitio web: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navegue a la página de prueba. Contiene 6 párrafos lorem ipsum -$web->go('https://test-pages.phpscraper.de/content/paragraphs.html'); - -// Comprueba el número de párrafos. -echo "Esta página contiene " . count($web->paragraphs) . " párrafos.\n\n"; - -// Recorrer los párrafos en bucle -foreach ($web->paragraphs as $paragraph) { - echo " - " . $paragraph . "\n"; -} - -/** - * Se imprimirá: - * - * Esta página contiene 6 apartados. - * - * - Maecenas eget ex sit amet urna porta fermentum at ut dui. Praesent lectus arcu, hendrerit sed mi vel, commodo lacinia velit. Nullam ac velit quis ante tristique scelerisque quis non metus. Pellentesque non aliquam elit, in tincidunt purus. Vestibulum fringilla cursus risus, eget ornare dolor feugiat vitae. Sed non porta lorem, eget ornare diam. Sed quam est, eleifend porttitor imperdiet sit amet, ultricies vel ipsum. Pellentesque mauris mauris, fermentum pretium ex quis, viverra mattis est. Donec laoreet sem nec arcu rhoncus lobortis. Duis id orci vel enim interdum aliquam. Integer eu ex ligula. Ut mattis nisi non malesuada ornare. In elit ligula, ultricies a aliquet eget, dictum sit amet neque. Quisque nulla sem, aliquam id molestie iaculis, consequat at augue. Nullam sollicitudin finibus eros in venenatis. Donec semper sagittis ipsum, et rhoncus magna ultricies eu. - - * - Quisque sed dolor ut nunc accumsan lacinia. Suspendisse vel eros faucibus massa feugiat tristique. Nullam vitae scelerisque felis, malesuada hendrerit felis. Quisque eleifend mi lorem, vitae elementum dolor bibendum et. Etiam et faucibus augue. Pellentesque viverra sagittis consequat. Nulla a mollis ex. Sed vel nisl mauris. Nulla consequat dui sed pulvinar interdum. Integer vehicula molestie quam non fringilla. Duis auctor sem ut purus fringilla, in lacinia dui finibus. Nulla rhoncus semper velit, eget semper tellus suscipit eget. Vestibulum massa tellus, tristique sit amet dolor et, ullamcorper porta turpis. Vivamus eget magna lacinia, pretium sem sed, gravida libero. - - * - Ut at nunc laoreet, vestibulum mauris in, volutpat magna. Aliquam sodales orci finibus porta convallis. Vestibulum sollicitudin felis a sem consequat luctus. Sed laoreet porta quam, non pharetra massa mattis semper. Phasellus aliquet tortor ut felis scelerisque, non dapibus justo tincidunt. Donec eu pulvinar nisi, sit amet elementum massa. Nulla in odio est. In neque ligula, tristique rhoncus orci eu, egestas ullamcorper est. Integer rhoncus vel quam vel placerat. In nec metus pellentesque elit accumsan molestie eu posuere odio. Sed at eros nec turpis vestibulum eleifend vel in erat. Etiam vel metus faucibus, tempus enim nec, elementum arcu. Ut nec blandit risus. Nam sapien nunc, tristique sit amet facilisis non, maximus a nulla. Pellentesque vel posuere libero. - - * - Morbi volutpat purus odio, vitae scelerisque diam consectetur sed. Cras turpis leo, hendrerit in tempus et, convallis in nibh. Mauris molestie facilisis odio, ac egestas erat ultrices pellentesque. Donec interdum leo quis ipsum sagittis venenatis. Etiam scelerisque mi at metus ullamcorper, vitae tristique est tincidunt. Vestibulum ut congue urna, eu sagittis quam. Phasellus eget arcu sapien. In hac habitasse platea dictumst. Morbi ultrices, felis in faucibus ornare, libero augue scelerisque urna, et feugiat nisl est ut velit. Phasellus felis quam, egestas a faucibus nec, dictum eget enim. In tempor a lacus id facilisis. - - * - Donec bibendum finibus neque quis viverra. Ut ut nulla venenatis, accumsan purus nec, ullamcorper nisi. Nulla bibendum dui sit amet velit venenatis, eget viverra nibh accumsan. Fusce pharetra, sem eu mattis varius, massa leo eleifend lectus, quis tempor elit ipsum sit amet lorem. Fusce viverra dictum tortor non sodales. Phasellus at lectus quis arcu finibus imperdiet sed eleifend nulla. Donec blandit egestas nibh ac euismod. Curabitur ac pretium eros. - - * - Duis pharetra magna at dolor scelerisque, nec luctus ex pretium. Suspendisse a ante lectus. Donec vehicula condimentum turpis, in hendrerit dui suscipit non. Nullam a ultricies felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent aliquet varius mauris nec pretium. Vivamus convallis tincidunt nisi, eget scelerisque dolor facilisis vitae. Pellentesque purus neque, sollicitudin sit amet mauris id, posuere posuere mi. Etiam vitae urna vitae turpis volutpat consectetur. Quisque ultrices, ex dapibus hendrerit convallis, diam massa suscipit diam, vulputate pharetra mi orci at massa. Aliquam vel urna tempor, congue justo id, pulvinar lorem. Nulla mattis vitae justo sed molestie. Nunc fermentum fringilla nibh, id fermentum nulla. Sed tincidunt ipsum id est efficitur, molestie aliquet lacus hendrerit. Fusce et nisl eros. - */ -``` - - -## Raspando el primer párrafo - -La extracción del primer párrafo de la página web puede hacerse accediendo al primer elemento del array (índice 0). - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/content/paragraphs.html'); - -echo $web->paragraphs[0]; -/** - * Imprime el primer párrafo: - * - * Maecenas eget ex sit amet urna porta fermentum at ut dui. Praesent lectus arcu, hendrerit sed mi vel, commodo lacinia velit. Nullam ac velit quis ante tristique scelerisque quis non metus. Pellentesque non aliquam elit, in tincidunt purus. Vestibulum fringilla cursus risus, eget ornare dolor feugiat vitae. Sed non porta lorem, eget ornare diam. Sed quam est, eleifend porttitor imperdiet sit amet, ultricies vel ipsum. Pellentesque mauris mauris, fermentum pretium ex quis, viverra mattis est. Donec laoreet sem nec arcu rhoncus lobortis. Duis id orci vel enim interdum aliquam. Integer eu ex ligula. Ut mattis nisi non malesuada ornare. In elit ligula, ultricies a aliquet eget, dictum sit amet neque. Quisque nulla sem, aliquam id molestie iaculis, consequat at augue. Nullam sollicitudin finibus eros in venenatis. Donec semper sagittis ipsum, et rhoncus magna ultricies eu. - */ -``` - -Los p-tags vacíos conducirían a cadenas vacías en el array devuelto. Para evitar esto puede llamar a `$web->cleanParagraphs` en su lugar. Esto filtrará los párrafos vacíos y sólo devolverá los que tengan contenido. Para acceder al primer párrafo con contenido utilice `$web->cleanParagraphs[0]`. diff --git a/websites/es/examples/scrape-header-tags.md b/websites/es/examples/scrape-header-tags.md deleted file mode 100644 index d5a18a0..0000000 --- a/websites/es/examples/scrape-header-tags.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Header%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Raspado de etiquetas de cabecera - -Las etiquetas de cabecera suelen contener información útil sobre una página web y cómo encaja en la estructura general del sitio web del que forma parte. Los siguientes ejemplos muestran cómo acceder a determinadas piezas de información de la etiqueta `` y a colecciones en torno a ellas. - - -## Charset - -Para acceder al conjunto de caracteres definido, puede utilizar el siguiente método: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de pruebas. Contiene: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Imprimir el charset -echo $web->charset; // "utf-8" -``` - - -## Viewport - -En algunos casos, como el viewport y las meta keywords, la cadena representa un array y se proporcionará como tal: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de la prueba. Contiene: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Obtenga la ventana gráfica como una matriz. Debe contener: - * - * [ - * 'width=device-width', - * 'initial-scale=1', - * 'shrink-to-fit=no', - * 'maximum-scale=1', - * 'user-scalable=no' - * ], - */ -var_dump($web->viewport); -``` - -Si necesitas acceder a la cadena original "viewport", puedes utilizar `viewportString`: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Obtiene el viewport como una cadena. Imprime: - * - * "width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1, user-scalable=no" - */ -echo $web->viewportString; -``` - - -## URL canónica - -La URL canónica, si se da, se puede acceder como se muestra en el siguiente ejemplo: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de pruebas. Contiene: - * - * - */ -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -// Imprimir la URL canónica -echo $web->canonical; // "https://test-pages.phpscraper.de/navigation/2.html" -``` - -::: tip CONSEJO -Si no se establece un enlace canónico, el método devuelve `null`. -::: - - -## Content-Type - -Para acceder al tipo de contenido puede utilizar la siguiente funcionalidad: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de pruebas. Contiene: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Imprimir el tipo de contenido -echo $web->contentType; // "text/html; charset=utf-8" -``` - - -## CSFR Token - -El método del token CSFR asume que el token se almacena en una etiqueta meta con el nombre "csrf-token". Este es el valor por defecto de Laravel. Puedes acceder a él usando el siguiente código: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de pruebas. Contiene: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Obtener el csrfToken -echo $web->csrfToken; // "token" -``` - - -## Etiquetas de cabecera combinadas - -Si desea acceder a todos los métodos mencionados anteriormente, utilice el método `headers`. Se define como: - -```php -/** - * @return array - */ -public function headers() -{ - return [ - 'charset' => $this->charset(), - 'contentType' => $this->contentType(), - 'viewport' => $this->viewport(), - 'canonical' => $this->canonical(), - 'csrfToken' => $this->csrfToken(), - ]; -} -``` - -Más información sobre el acceso a las [metaetiquetas](/es/examples/scrape-meta-tags.html). diff --git a/websites/es/examples/scrape-images.md b/websites/es/examples/scrape-images.md deleted file mode 100644 index d8f0491..0000000 --- a/websites/es/examples/scrape-images.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Images&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Raspado de imágenes - -Puede que te preguntes cómo raspar fotos, imágenes y otros gráficos de un sitio web utilizando PHPScraper. Al igual que con otras funcionalidades, el scraping de imágenes & fotos de un sitio web sigue un enfoque similar. Todos los gráficos como imágenes, fotos e infografías pueden ser raspados y analizados junto con detalles como atributos de etiquetas o sólo como una lista de URL. - - -## Scrape Image URLs - -El siguiente ejemplo analiza una página web en busca de imágenes y devuelve las URLs absolutas de las imágenes como un array. - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue a la página de prueba. Esta página contiene dos imágenes: - * - * absolute path - * relative path - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * [ - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - * - * @Nota: - * Doble porque es dos veces la misma imagen: - * Una con una ruta relativa y otra con una ruta absoluta. - * Las rutas relativas se resuelven en rutas absolutas por defecto. - */ -var_dump($web->images); -``` - -::: tip CONSEJO -Si no se encuentra ninguna imagen, la matriz queda vacía. -::: - - -## Raspado de imágenes con detalles - -Si necesita más detalles, las siguientes peticiones le permiten acceder a los atributos de la etiqueta de la imagen: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'absolute path', - * 'width' => null, - * 'height' => null, - * ], - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'relative path', - * 'width' => null, - * 'height' => null, - * ] - */ -var_dump($web->imagesWithDetails); -``` - -::: tip SEO -El texto `alt` (con las [palabras clave del contenido](/es/examples/extract-keywords.html)) es utilizado por los motores de búsqueda para las búsquedas basadas en imágenes. Asegúrese de definirlo siempre. -::: - - -## Atributos de raspado: Alt, Anchura y Altura - -Los atributos para `alt`, `width` y `height` están incluidos en el conjunto de datos detallados. - -Si necesita más datos, tendrá que ampliar la biblioteca o enviar una incidencia para su consideración. diff --git a/websites/es/examples/scrape-links.md b/websites/es/examples/scrape-links.md deleted file mode 100644 index af2c935..0000000 --- a/websites/es/examples/scrape-links.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Links&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Enlaces de raspado - -El scraping de enlaces funciona de forma muy similar al [image scraping](/es/examples/scrape-images.html). Puede recuperar una lista de URL sin ninguna información adicional, así como una lista detallada que contenga `rel`, `target` así como otros atributos. - - -## Lista de enlaces simples - -El siguiente ejemplo analiza una página web en busca de enlaces y devuelve un array de URLs absolutas: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de prueba. Contiene 6 enlaces a placekitten.com con diferentes atributos: - * - *

          Different ways to wrap the attributes

          - *

          external kitten

          - *

          external kitten

          - *

          external kitten

          - * - *

          Named frame/window/tab

          - *

          external kitten

          - *

          external kitten

          - *

          external kitten

          - */ -$web->go('https://test-pages.phpscraper.de/links/target.html'); - -// Imprime el número de enlaces. -echo "Esta página contiene " . count($web->links) . " enlaces.\n\n"; - -// Recorrer los enlaces en bucle -foreach ($web->links as $link) { - echo " - " . $link . "\n"; -} - -/** - * Combinado esto se imprimirá: - * - * Esta página contiene 6 enlaces. - * - * - https://placekitten.com/408/287 - * - https://placekitten.com/444/333 - * - https://placekitten.com/444/321 - * - https://placekitten.com/408/287 - * - https://placekitten.com/444/333 - * - https://placekitten.com/444/321 - */ -``` - -Si la página no debe contener ningún enlace, se devuelve un array vacío. - - -## Enlaces con detalles - -Si necesitas más detalles puedes acceder a ellos de forma similar a como se hace en las imágenes. A continuación se muestra un ejemplo para acceder a los datos detallados del primer enlace de la página: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de prueba. Esta página contiene varios enlaces con diferentes atributos rel. Para ahorrar espacio sólo el primero: - * - * external kitten - */ -$web->go('https://test-pages.phpscraper.de/links/rel.html'); - -// Obtener el primer enlace de la página. -$firstLink = $web->linksWithDetails[0]; - -/** - * $firstLink contiene ahora: - * - * [ - * 'url' => 'https://placekitten.com/432/287', - * 'protocol' => 'https', - * 'text' => 'external kitten', - * 'title' => null, - * 'target' => null, - * 'rel' => 'nofollow', - * 'isNofollow' => true, - * 'isUGC' => false, - * 'isNoopener' => false, - * 'isNoreferrer' => false, - * ] - */ -``` - -Si necesita más datos, tendrá que ampliar la biblioteca o presentar una edición para su consideración. - - -## Enlaces internos y externos - -PHPScraper permite devolver sólo enlaces internos o externos. Lo siguiente demuestra ambas cosas: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navega a la página de prueba. -$web->go('https://test-pages.phpscraper.de/links/base-href.html'); - -// Obtener la lista de enlaces internos (en el ejemplo se enlaza una imagen) -var_dump($web->internalLinks); -/** - * [ - * 'https://test-pages.phpscraper.de/assets/cat.jpg' - * ] - */ - -// Obtener la lista de enlaces externos -var_dump($web->externalLinks); -/** - * [ - * 'https://placekitten.com/408/287' - * ] - */ -``` diff --git a/websites/es/examples/scrape-meta-tags.md b/websites/es/examples/scrape-meta-tags.md deleted file mode 100644 index adfc65e..0000000 --- a/websites/es/examples/scrape-meta-tags.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Meta%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape Meta Tags - -El acceso a la información meta sigue un patrón similar al mostrado anteriormente [etiquetas de cabecera](/es/examples/scrape-header-tags.html). A continuación se muestran algunos ejemplos: - - -## Meta Autor, Descripción e Imagen - -El siguiente ejemplo muestra la extracción de tres atributos: - -- el Meta Autor, -- la Meta Descripción y -- la URL de la meta imagen - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de pruebas. Contiene: - * - * - * - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Obtener la información: -echo $web->author; // "Lorem ipsum" -echo $web->description; // "Lorem ipsum dolor etc." -echo $web->image; // "https://test-pages.phpscraper.de/assets/cat.jpg" -``` - - -## Meta Keywords - -La meta etiqueta de palabras clave es naturalmente una matriz y será dividida para su conveniencia: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de pruebas. Contiene: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -// Volcar las palabras clave como un array -var_dump($web->keywords); // ['one', 'two', 'three'] -``` - -También puede acceder a la cadena de palabras clave original: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -// Imprime las palabras clave en forma de cadena -echo $web->keywordString; // "one, two, three" -``` - -::: tip CONSEJO -Esto se refiere únicamente a las palabras clave de la metaetiqueta "keyword". También puede [extraer las palabras clave del contenido](/es/examples/extract-keywords.html)) utilizando PHPScraper. -::: - - -## Meta Etiquetas Combinadas - -Si desea acceder a todas las meta propiedades puede utilizar el método `metaTags`. Devuelve los métodos mencionados anteriormente como un array. Se define como: - -```php -/** - * obtener la meta recogida como un array - * - * @return array - */ -public function metaTags() -{ - return [ - 'author' => $this->author(), - 'image' => $this->image(), - 'keywords' => $this->keywords(), - 'description' => $this->description(), - ]; -} -``` - -A partir del ejemplo anterior se utilizaría lo siguiente: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -var_dump($web->metaTags); -/** - * Contiene: - * - * [ - * 'Lorem ipsum', - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ['one', 'two', 'three'], - * 'Lorem ipsum dolor etc.', - * ] - */ -``` - - -## Falta de metaetiquetas - -Si necesita acceder a otra metapropiedad puede considerar [contribuir](/contributing.html) al paquete o enviando un [issue en GitHub](https://github.com/spekulatius/phpscraper/issues). diff --git a/websites/es/examples/scrape-social-media-meta-tags.md b/websites/es/examples/scrape-social-media-meta-tags.md deleted file mode 100644 index 39fdfae..0000000 --- a/websites/es/examples/scrape-social-media-meta-tags.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Social%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape Social Media Meta Tags - -El raspado de las etiquetas de compartición de las redes sociales de un sitio web puede realizarse mediante los siguientes métodos. El conjunto exacto de resultados depende de las etiquetas proporcionadas. Se incluyen todas las etiquetas, siempre que estén en el espacio de nombres prefijado (por ejemplo, `twitter:` para Twitter Cards). - - -## Datos de Open-Graph (OG) - -Se pueden obtener datos de gráficos abiertos: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegar a la página de la prueba. La página contiene: - * - * - * - * - * - * - * - * - * - * @see https://test-pages.phpscraper.de/og/example.html - */ -$web->go('https://test-pages.phpscraper.de/og/example.html'); - -// Debería imprimirse 'Lorem Ipsum' -echo $web->openGraph['og:title']; - -// Debería imprimir "Lorem ipsum dolor etc. -echo $web->openGraph['og:description']; - -// Todo el conjunto: -$data = $web->openGraph; - -/** - * $data ahora contiene: - * - * [ - * 'og:site_name' => 'Lorem ipsum', - * 'og:type' => 'website', - * 'og:title' => 'Lorem Ipsum', - * 'og:description' => 'Lorem ipsum dolor etc.', - * 'og:url' => 'https://test-pages.phpscraper.de/meta/lorem-ipsum.html', - * 'og:image' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - */ -``` - -::: tip CONSEJO -Si no se encuentran datos, el array se devolverá vacío. -::: - - -## Twitter Card - -El análisis de la Twitter Card funciona de forma similar: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue a la página de prueba. La página contiene la siguiente tarjeta de Twitter: - * - * - * - * - * - * - * - * - * @see https://test-pages.phpscraper.de/twittercard/example.html - */ -$web->go('https://test-pages.phpscraper.de/twittercard/example.html'); - -// Debería imprimirse 'summary_large_image' -echo $web->twitterCard['twitter:card']; - -// Debería imprimirse 'Lorem Ipsum' -echo $web->twitterCard['twitter:title']; - -// Todo el conjunto. -$data = $web->twitterCard; - -/** - * $data contiene ahora: - * - * [ - * 'twitter:card' => 'summary_large_image', - * 'twitter:title' => 'Lorem Ipsum', - * 'twitter:description' => 'Lorem ipsum dolor etc.', - * 'twitter:url' => 'https://test-pages.phpscraper.de/meta/lorem-ipsum.html', - * 'twitter:image' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - */ -``` - -De forma similar a Open Graph, la matriz estará vacía si no se han encontrado etiquetas de Twitter Card. diff --git a/websites/es/examples/scrape-website-title.md b/websites/es/examples/scrape-website-title.md deleted file mode 100644 index 6ebe3b4..0000000 --- a/websites/es/examples/scrape-website-title.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scrape%20Website%20Title&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Raspando el título de un sitio web - -Raspar el título de un sitio web es sencillo. Los siguientes ejemplos muestran cómo funciona utilizando PHPScraper. - - -## Ejemplo simple - -Ejemplo muy simple de cómo raspar el título de un sitio web: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navegue a la página de prueba - ésta sí contiene una etiqueta de título "Lorem Ipsum" -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Contiene: - * - * Lorem Ipsum - */ - -// Obtener el título. Esto devolverá: "Lorem Ipsum" -var_dump($web->title); -``` - - -## Falta el título - -Se devolverá `null` si falta el título: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navega a la página de prueba - ésta no contiene una etiqueta de título. -$web->go('https://test-pages.phpscraper.de/meta/missing.html'); - -// Obtener el título. Esto devolverá null. -var_dump($web->title); -``` - -Nota: Este es el comportamiento por defecto: Si no se encuentra una etiqueta porque falta en el HTML fuente, se devolverá `null`. Si un elemento iterable está vacío (por ejemplo, si se extraen imágenes de una página sin imágenes), se devolverá un array vacío. - - -## Caracteres especiales - -Cargar el título de un sitio web con la diéresis alemana - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navegue hasta la página de pruebas. Contiene: - * - * A page with plenty of German umlaute everywhere (ä ü ö) - */ -$web->go('https://test-pages.phpscraper.de/meta/german-umlaute.html'); - -// Imprime el título: "A page with plenty of German umlaute everywhere (ä ü ö)" -echo $web->title; -``` - -Debería funcionar de forma similar con cualquier carácter UTF-8. - - -## Entidades HTML - -Las entidades HTML deben resolverse - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navega hasta la página de la prueba. Contiene: - * - * Cat & Mouse - */ -$web->go('https://test-pages.phpscraper.de/meta/html-entities.html'); - -// Imprime el título: "Cat & Mouse" -echo $web->title; -``` - -::: tip CONSEJO -Se han tenido en cuenta las entidades y los caracteres especiales en toda la biblioteca. Si encuentra un lugar donde no funcionan como se espera, por favor, plantee un [problema](https://github.com/spekulatius/PHPScraper/issues). -::: diff --git a/websites/es/misc/show-case.md b/websites/es/misc/show-case.md deleted file mode 100644 index 4fbc4d1..0000000 --- a/websites/es/misc/show-case.md +++ /dev/null @@ -1,7 +0,0 @@ -# Show Case - -Además de los [tutoriales](/es/misc/tutorials.html), estas bibliotecas y paquetes de composición usan PHPScraper. Puede revisar el código para obtener más información sobre los casos de uso particulares. - -- [datlechin/flarum-link-preview](https://github.com/datlechin/flarum-link-preview): Vista previa del enlace para Flarum Boards. - -Si desea agregar su proyecto, envíe un PR. \ No newline at end of file diff --git a/websites/es/misc/sponsors.md b/websites/es/misc/sponsors.md deleted file mode 100644 index 8e60430..0000000 --- a/websites/es/misc/sponsors.md +++ /dev/null @@ -1,13 +0,0 @@ -# Sponsors - -PHP Scraper es compatible con: - - - -## Convertirse en patrocinador - -Gracias por su interés en convertirse en patrocinador de PHP Scraper. PHP Scraper ofrece paquetes de patrocinio personalizados según sus necesidades. Por favor [contacte](https://peterthaleikis.com/contact) para discutir los detalles. - -## Soporte Comercial - -El soporte para aplicaciones comerciales, licencias comerciales, desarrollo personalizado, y similares puede ser [discutido](https://peterthaleikis.com/contact). Estaremos encantados de apoyar su proyecto. diff --git a/websites/es/misc/support.md b/websites/es/misc/support.md deleted file mode 100644 index a311a7b..0000000 --- a/websites/es/misc/support.md +++ /dev/null @@ -1,13 +0,0 @@ -# Apoyo - -## Más ejemplos - -Si necesita más ejemplos, consulte los [tests](https://github.com/spekulatius/phpscraper/tree/master/tests). Estos contienen otros ejemplos de cómo raspar datos de sitios web. - -## Bugs y otros problemas - -Si observa algún error o problema de naturaleza similar, por favor, plantee una [cuestión en GitHub](https://github.com/spekulatius/PHPScraper/issues). No olvides incluir la información detallada para replicar el problema. - -## Soporte comercial - -El soporte para aplicaciones comerciales, licencias comerciales, desarrollo personalizado, etc. puede ser [discutido](https://peterthaleikis.com/contact). diff --git a/websites/es/misc/tutorials.md b/websites/es/misc/tutorials.md deleted file mode 100644 index 46c49b1..0000000 --- a/websites/es/misc/tutorials.md +++ /dev/null @@ -1,7 +0,0 @@ -# PHP Scraping Tutorials - -Los siguientes tutoriales utilizan PHPScraper y podrían ayudar a aprender más sobre las diversas formas de utilizar PHPScraper. - -*Próximamente* - -Por favor, tenga en cuenta que los tutoriales no están revisados y pueden estar desactualizados. \ No newline at end of file diff --git a/websites/examples/custom-selectors.md b/websites/examples/custom-selectors.md deleted file mode 100644 index 4f35477..0000000 --- a/websites/examples/custom-selectors.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHPScraper:%20Scraping%20Custom%20Elements&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Custom xPath Selectors - -While PHP Scraper supports various simple and xPath-free options to access content you are free to use xPath selectors. - -The following examples of custom selectors should be seen as a starting point for any custom information you need to scrape. - -::: tip -If you are struggling with xPath, you might find [this cheatsheet](https://devhints.io/xpath) useful. -::: - - -## Select an element using the ID attribute - -The following example shows how to use an xPath selector with an ID. The result will be the text of the element via `->text()`: - -```php -// Init and load the test page. -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/content/selectors.html'); - -// Select `->text()` using an ID. -echo $web->filter("//*[@id='by-id']")->text(); // "Content by ID" -``` - -::: tip -This example uses `->text()` to get the textual content. You can also sub-select items on the same [html5](https://github.com/Masterminds/html5-php) element. -::: - - -## Select elements by tag name - -Selecting elements by tags is shown below. The result will be an array containing the text of the elements: - -```php -// Init and load the test page. -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/content/selectors.html'); - -// Filter using the ID -echo $web->filter("//h1")->text(); // "Selector Tests (h1)" - -// Select single string using first and chain `->text()` -echo $web->filterFirst("//h1")->text(); // 'Selector Tests (h1)' - -// Select as array using `filterTexts`: -echo $web->filterTexts("//h1"); // ['Selector Tests (h1)'] -``` - -::: tip -While SEO best practices recommend having only one `

          `-tag per page, it is still technically possible to have multiple. To ensure you are able to scrap any number of headings this method will return a list instead of a string. -::: - - -## Select elements using a CSS class - -Using a CSS class to select elements is, of course, possible too. Similarly to the tag selection, the result will be an array containing the text of the elements: - -```php -// Init and load the test page. -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/content/selectors.html'); - -// Filter using the CSS class -echo $web->filter("//*[@class='by-class']"); // "Selector Tests" -``` - -## Troubleshooting - -When using custom selectors, PHPScraper hands you the full power of Guotte. You will also receive all errors directly from Guotte instead of PHPScraper (for now). - -Below are some common errors while working with custom xPaths: - -### `PHP Fatal error: Uncaught InvalidArgumentException: The current node list is empty.` - -This will happen if your current selection is empty: No element was found matching your query. You might need to adjust your query to select elements. - -### `PHP Warning: DOMXPath::query(): Invalid expression` - -This means your xPath is incorrect. Usually, this error occurs in `vendor/symfony/dom-crawler/Crawler.php on line 919`. - -Make sure to format the xPath query correctly. The examples above show the required format, including the Asterix: `//*[...]`. diff --git a/websites/examples/extract-keywords.md b/websites/examples/extract-keywords.md deleted file mode 100644 index 6ad2885..0000000 --- a/websites/examples/extract-keywords.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Extract%20Keywords&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Extract Keywords - -While scraping content is often enough, sometimes you require to extract significant terms and phrases (keywords) from this content. PHPScraper allows you to extract the keywords of the website directly. For this it uses: - -- the title of the website, -- the meta tags, -- all headings, -- the paragraphs on the page, -- link anchors and link titles as well as -- title attributes on images - -While these keyword phrases are extracted it doesn't mean the page actually ranks for these keywords. The final decision on which keywords a web-page ranks is with the search engine. - -The following example will return a list of all keywords extracted from the web-page: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navigate to the test page. -// It contains 3 paragraphs from the English Wikipedia article for "lorem ipsum" -$web->go('https://test-pages.phpscraper.de/content/keywords.html'); - -// Check the number of keywords. -$keywords = $web->contentKeywords; -echo "This page contains at least " . count($keywords) . " keywords/phrases.\n\n"; - -// Loop through the keywords -foreach ($keywords as $keyword) { - echo " - " . $keyword . "\n"; -} - -/** - * Will print out: - * - * This page contains at least 40 keywords/phrases. - * - * [...] - * - graphic - * - improper latin - * - introduced - * - keyword extraction tests - * - letraset transfer sheets - * - lorem ipsum - * - lorem ipsum php rake library lorem ipsum - * - lorem ipsum text - * - make - * - malorum - * - microsoft word - * - mid-1980s - * - nonsensical - * - page - * - paragraphs - * - philosopher cicero - * - php rake library - * - popular word processors including pages - * - popularized - * - removed - * - roman statesman - * - source - * [...] - */ -``` - -::: tip -The default language (locale) for this is `en_US`. Other languages can be passed as a parameter. This currently works only for a selection of languages. Check this [list](https://github.com/Donatello-za/rake-php-plus#currently-supported-languages) for further information. -::: - - -## Scoring of Keywords - -Not every keyword has the same weight in the ranking-algorithms of search engines. A mix of several factors and SEO-signals decides on the weight a search engine assigns to a word. Frequency of words, length of the texts, and variations such as synonyms can lead to different weighting. - -PHPScraper allows you to get an indication of keyword weights in the form of scores: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navigate to the test page. -// It contains 3 paragraphs from the English Wikipedia article for "lorem ipsum" -$web->go('https://test-pages.phpscraper.de/content/keywords.html'); - -// Check the number of keywords. -$keywords = $web->contentKeywordsWithScores; -echo "This page contains at least " . count($keywords) . " keywords/phrases.\n\n"; - -// Loop through the keywords -foreach ($keywords as $keyword => $score) { - echo sprintf(" - %s (%s)\n", $keyword, $score); -} - -/** - * Will print out: - * - * This page contains at least 40 keywords/phrases. - * - * [...] - * - 1960s (1.0) - * - added (1.0) - * - adopted lorem ipsum (11.0) - * - advertisements (1.0) - * - aldus employed (4.0) - * - corrupted version (4.0) - * - graphic (1.0) - * - improper latin (4.0) - * - introduced (1.0) - * - keyword extraction tests (9.0) - * - test (1.0) - * - microsoft word (5.3333333333333) - * - english wikipedia (4.0) - * - lorem ipsum (8.0) - * - lorem ipsum text (11.0) - * [...] - */ -``` - -::: tip -The PHP-functions [similar_text](https://www.php.net/manual/en/function.similar-text.php) and [levenshtein](https://www.php.net/manual/en/function.levenshtein.php) can help you identify and merge similar keywords as well as typo variations of keywords. [Keyword Merge](https://github.com/spekulatius/keyword-merge) is a composer package to help sorting out similar keywords. -::: diff --git a/websites/examples/headings.md b/websites/examples/headings.md deleted file mode 100644 index 77d998b..0000000 --- a/websites/examples/headings.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Headings&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape Headings - -Heading can be useful to get an idea of the content on a website. The following example shows how to scrape: - - - A single Heading - - All headings of a particular level (e.g. `

          `) - - All headings on a page - - -## Scrape Single Heading - -Scraping a single heading is easy and be done following this example: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains: - * - * Outline Test - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -// Print the H1 heading -echo $web->h1[0]; // "Outline Test" -``` - -::: tip -The [website title](/examples/scrape-website-title.html) and heading 1 (`

          `) can be different. Make sure you retrieve the correct one. -::: - - -## Headings by Level - -There might be cases, in which all headings of a particular level should be retrieved. The example below shows how to do so: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains: - * - *

          Example 1

          - *

          Here would be an example.

          - * - *

          Example 2

          - *

          Here would be the second example.

          - * - *

          Example 3

          - *

          Here would be another example.

          - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -/** - * Return the h3 headings: - * - * [ - * 'Example 1', - * 'Example 2', - * 'Example 3' - * ] - */ -$web->h3; -``` - -If no headings are found, the array is left empty. - - -## All Headings on a Page - -To access all headings on a page, you can do so by accessing the different levels from 1 to 6. Or, alternatively, you can access all at once: - - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. This page contains: - * - *

          We are testing here!

          - *

          This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

          - * - *

          Examples

          - *

          There are numerous examples on the website. Please check them out to get more context on how scraping works.

          - * - *

          Example 1

          - *

          Here would be an example.

          - * - *

          Example 2

          - *

          Here would be the second example.

          - * - *

          Example 3

          - *

          Here would be another example.

          - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -/** - * $headings contains now: - * - * [ - * [ - * 'We are testing here!' - * ], - * [ - * 'Examples' - * ], - * [ - * 'Example 1', - * 'Example 2', - * 'Example 3', - * ], - * [], - * [], - * [] - * ] - */ -$web->headings; -``` - -As you can see, this doesn't contain any information about the structure the headings are in. It's purely to know which headings exist. If you like to have an [outline](/examples/outline.html) you will need use the related methods. diff --git a/websites/examples/lists.md b/websites/examples/lists.md deleted file mode 100644 index 6b4a4a2..0000000 --- a/websites/examples/lists.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Lists&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape Lists - -Scraping lists follows a similar approach as other scraping with PHPScraper: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. This page contains: - * - *

          Example 1: Unordered List

          - *
            - *
          • Unordered list item 1
          • - *
          • Unordered list item 2
          • - *
          • Unordered list item with HTML
          • - *
          - * - *

          Example 2: Ordered List

          - *
            - *
          1. Ordered list item 1
          2. - *
          3. Ordered list item 2
          4. - *
          5. Ordered list item with HTML
          6. - *
          - */ -$web->go('https://test-pages.phpscraper.de/content/lists.html'); - -/** - * Only unordered lists (
            ) - * - * [ - * "type" => "ul", - * "children" => ... // List of childNodes - * "children_plain" => - * [ - * "Unordered list item 1" - * "Unordered list item 2" - * "Unordered list item with HTML" - * ] - * ] - */ -var_dump($web->unorderedLists); - - -/** - * Only ordered lists (
              ) - * - * [ - * "type" => "ul", - * "children" => ... // List of childNodes - * "children_plain" => - * [ - * "Ordered list item 1" - * "Ordered list item 2" - * "Ordered list item with HTML" - * ] - * ] - */ -var_dump($web->orderedLists); - - -// Both lists combined (as above) -var_dump($web->lists); -``` - -::: warning Nested Lists -At the moment, this doesn't handle nested lists well. Nested lists are included in the result as `children` to allow further processing. -::: diff --git a/websites/examples/navigation.md b/websites/examples/navigation.md deleted file mode 100644 index 12081f6..0000000 --- a/websites/examples/navigation.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Navigate%20while%20Scraping&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Navigation - -While PHPScraper is mostly intended to parse websites and collect information, you can also use it to navigate websites. Below are examples of ways to *surf* around a website. - - -## Navigation using URLs - -You can navigate to any URL. These URLs usually come from the [parsed links](/examples/scrape-links.html). - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// We start on test page #1. -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -// Print the title to see if we actually at the right page... -echo $web->h1[0]; // 'Page #1' - - -// We navigate to the test page #2 using the absolute URL. -$web->clickLink('https://test-pages.phpscraper.de/navigation/2.html'); - -// Print the title to see if we actually at the right page... -echo $web->h1[0]; // 'Page #2' -``` - - -## Navigation using Anchor Texts - -On a website you can *click* on links using their anchor texts: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// We start on test page #1. -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -/** - * This page contains: - * - * 2 relative - */ - -// Print the title to see if we actually at the right page... -echo $web->h1[0]; // 'Page #1' - - -// We navigate to the test page #2 using the text it has on the page. -$web->clickLink('2 relative'); - -// Print the title to see if we actually at the right page... -echo $web->h1[0]; // 'Page #2' -``` - -This basic functionality should allow you to navigate websites. diff --git a/websites/examples/outline.md b/websites/examples/outline.md deleted file mode 100644 index f476699..0000000 --- a/websites/examples/outline.md +++ /dev/null @@ -1,215 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scrape%20Content%20Outline&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Outline Extraction - -While you might only want to access the [`headings`](/examples/headings.html), for example, the number of headings it might not always be enough. In some cases, you might need to identify the actual structure of the content. For these use cases you might want to consider one of these methods: - - - `outline` works similar as the previously mentioned `headings` method. It also returns all headings, but it keeps the structure of the original document in place and provides the heading levels (e.g. `h1`) alone with the output. - - - `outlineWithParagraphs` works similar as `outline` does, the difference is that this call also includes the paragraphs. - - - `cleanOutlineWithParagraphs` works similar as `outlineWithParagraphs` does, the difference any empty HTML tags are removed. - -The following examples should help to understand the functionality better. There are dedicated methods for [keyword extraction](/examples/extract-keywords.html) available. - - -## Extract the Outline - -The outline of the content allows you build an index of the document. The following example builds a markdown version of the headings in the requested document: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. This page contains: - * - *

              We are testing here!

              - * [...] - * - *

              Examples

              - * [...] - * - *

              Example 1

              - * [...] - * - *

              Example 2

              - * [...] - * - *

              Example 3

              - * [...] - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - -/** - * $outline will be set to contains: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ] - * ] - */ -$outline = $web->outline; -``` - - -## Extract the Outline with Paragraphs - -The following method works in a similar manner as `outline`, but it also includes any paragraphs as part of the returned array: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. This page contains: - * - *

              We are testing here!

              - *

              This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

              - * - *

              Examples

              - *

              There are numerous examples on the website. Please check them out to get more context on how scraping works.

              - * - *

              Example 1

              - *

              Here would be an example.

              - * - *

              Example 2

              - *

              Here would be the second example.

              - * - *

              Example 3

              - *

              Here would be another example.

              - * - * - *

              - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - - -$content = $web->outlineWithParagraphs; -/** - * $content now contains: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "p", - * "content" => "This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example." - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "p", - * "content" => "There are numerous examples on the website. Please check them out to get more context on how scraping works." - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "p", - * "content" => "Here would be an example." - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "p", - * "content" => "Here would be the second example." - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ], [ - * "tag" => "p", - * "content" => "Here would be another example." - * ], [ - * "tag" => "p", - * "content" => "" - * ] - * ] - */ -``` - - -## Extract the cleaned up Outline with Paragraphs - -The following method works in a similar manner as `outlineWithParagraphs`, but it doesn't include any empty empty headings or paragraphs as part of the returned array: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. This page contains: - * - *

              We are testing here!

              - *

              This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

              - * - *

              Examples

              - *

              There are numerous examples on the website. Please check them out to get more context on how scraping works.

              - * - *

              Example 1

              - *

              Here would be an example.

              - * - *

              Example 2

              - *

              Here would be the second example.

              - * - *

              Example 3

              - *

              Here would be another example.

              - * - * - *

              - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - - -$content = $web->cleanOutlineWithParagraphs; -/** - * $content now contains: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "p", - * "content" => "This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example." - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "p", - * "content" => "There are numerous examples on the website. Please check them out to get more context on how scraping works." - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "p", - * "content" => "Here would be an example." - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "p", - * "content" => "Here would be the second example." - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ], [ - * "tag" => "p", - * "content" => "Here would be another example." - * ] - * ] - */ -``` diff --git a/websites/examples/paragraphs.md b/websites/examples/paragraphs.md deleted file mode 100644 index 500615a..0000000 --- a/websites/examples/paragraphs.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Content&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape Text - -Scraping content, mostly paragraphs, can be done easily using PHP Scraper. There is a dedicated method to access the paragraphs (`

              `) on a website. The following examples show how to access the content/texts on a website. - - -## Getting all Paragraphs - -The following example will return a list of all paragraphs (`

              `-tags) on the website: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navigate to the test page. It contains 6 "lorem ipsum" paragraphs: -$web->go('https://test-pages.phpscraper.de/content/paragraphs.html'); - -// Check the number of paragraphs: -echo "This page contains " . count($web->paragraphs) . " paragraphs.\n\n"; - -// Loop through the paragraphs: -foreach ($web->paragraphs as $paragraph) { - echo " - " . $paragraph . "\n"; -} - -/** - * Will print out: - * - * This page contains 6 paragraphs. - * - * - Maecenas eget ex sit amet urna porta fermentum at ut dui. Praesent lectus arcu, hendrerit sed mi vel, commodo lacinia velit. Nullam ac velit quis ante tristique scelerisque quis non metus. Pellentesque non aliquam elit, in tincidunt purus. Vestibulum fringilla cursus risus, eget ornare dolor feugiat vitae. Sed non porta lorem, eget ornare diam. Sed quam est, eleifend porttitor imperdiet sit amet, ultricies vel ipsum. Pellentesque mauris mauris, fermentum pretium ex quis, viverra mattis est. Donec laoreet sem nec arcu rhoncus lobortis. Duis id orci vel enim interdum aliquam. Integer eu ex ligula. Ut mattis nisi non malesuada ornare. In elit ligula, ultricies a aliquet eget, dictum sit amet neque. Quisque nulla sem, aliquam id molestie iaculis, consequat at augue. Nullam sollicitudin finibus eros in venenatis. Donec semper sagittis ipsum, et rhoncus magna ultricies eu. - - * - Quisque sed dolor ut nunc accumsan lacinia. Suspendisse vel eros faucibus massa feugiat tristique. Nullam vitae scelerisque felis, malesuada hendrerit felis. Quisque eleifend mi lorem, vitae elementum dolor bibendum et. Etiam et faucibus augue. Pellentesque viverra sagittis consequat. Nulla a mollis ex. Sed vel nisl mauris. Nulla consequat dui sed pulvinar interdum. Integer vehicula molestie quam non fringilla. Duis auctor sem ut purus fringilla, in lacinia dui finibus. Nulla rhoncus semper velit, eget semper tellus suscipit eget. Vestibulum massa tellus, tristique sit amet dolor et, ullamcorper porta turpis. Vivamus eget magna lacinia, pretium sem sed, gravida libero. - - * - Ut at nunc laoreet, vestibulum mauris in, volutpat magna. Aliquam sodales orci finibus porta convallis. Vestibulum sollicitudin felis a sem consequat luctus. Sed laoreet porta quam, non pharetra massa mattis semper. Phasellus aliquet tortor ut felis scelerisque, non dapibus justo tincidunt. Donec eu pulvinar nisi, sit amet elementum massa. Nulla in odio est. In neque ligula, tristique rhoncus orci eu, egestas ullamcorper est. Integer rhoncus vel quam vel placerat. In nec metus pellentesque elit accumsan molestie eu posuere odio. Sed at eros nec turpis vestibulum eleifend vel in erat. Etiam vel metus faucibus, tempus enim nec, elementum arcu. Ut nec blandit risus. Nam sapien nunc, tristique sit amet facilisis non, maximus a nulla. Pellentesque vel posuere libero. - - * - Morbi volutpat purus odio, vitae scelerisque diam consectetur sed. Cras turpis leo, hendrerit in tempus et, convallis in nibh. Mauris molestie facilisis odio, ac egestas erat ultrices pellentesque. Donec interdum leo quis ipsum sagittis venenatis. Etiam scelerisque mi at metus ullamcorper, vitae tristique est tincidunt. Vestibulum ut congue urna, eu sagittis quam. Phasellus eget arcu sapien. In hac habitasse platea dictumst. Morbi ultrices, felis in faucibus ornare, libero augue scelerisque urna, et feugiat nisl est ut velit. Phasellus felis quam, egestas a faucibus nec, dictum eget enim. In tempor a lacus id facilisis. - - * - Donec bibendum finibus neque quis viverra. Ut ut nulla venenatis, accumsan purus nec, ullamcorper nisi. Nulla bibendum dui sit amet velit venenatis, eget viverra nibh accumsan. Fusce pharetra, sem eu mattis varius, massa leo eleifend lectus, quis tempor elit ipsum sit amet lorem. Fusce viverra dictum tortor non sodales. Phasellus at lectus quis arcu finibus imperdiet sed eleifend nulla. Donec blandit egestas nibh ac euismod. Curabitur ac pretium eros. - - * - Duis pharetra magna at dolor scelerisque, nec luctus ex pretium. Suspendisse a ante lectus. Donec vehicula condimentum turpis, in hendrerit dui suscipit non. Nullam a ultricies felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent aliquet varius mauris nec pretium. Vivamus convallis tincidunt nisi, eget scelerisque dolor facilisis vitae. Pellentesque purus neque, sollicitudin sit amet mauris id, posuere posuere mi. Etiam vitae urna vitae turpis volutpat consectetur. Quisque ultrices, ex dapibus hendrerit convallis, diam massa suscipit diam, vulputate pharetra mi orci at massa. Aliquam vel urna tempor, congue justo id, pulvinar lorem. Nulla mattis vitae justo sed molestie. Nunc fermentum fringilla nibh, id fermentum nulla. Sed tincidunt ipsum id est efficitur, molestie aliquet lacus hendrerit. Fusce et nisl eros. - */ -``` - - -## Scrape the First Paragraph - -Scraping the first paragraph of the website can be done by accessing the first element of the array (index 0). - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/content/paragraphs.html'); - -echo $web->paragraphs[0]; -/** - * Prints the first paragraph: - * - * Maecenas eget ex sit amet urna porta fermentum at ut dui. Praesent lectus arcu, hendrerit sed mi vel, commodo lacinia velit. Nullam ac velit quis ante tristique scelerisque quis non metus. Pellentesque non aliquam elit, in tincidunt purus. Vestibulum fringilla cursus risus, eget ornare dolor feugiat vitae. Sed non porta lorem, eget ornare diam. Sed quam est, eleifend porttitor imperdiet sit amet, ultricies vel ipsum. Pellentesque mauris mauris, fermentum pretium ex quis, viverra mattis est. Donec laoreet sem nec arcu rhoncus lobortis. Duis id orci vel enim interdum aliquam. Integer eu ex ligula. Ut mattis nisi non malesuada ornare. In elit ligula, ultricies a aliquet eget, dictum sit amet neque. Quisque nulla sem, aliquam id molestie iaculis, consequat at augue. Nullam sollicitudin finibus eros in venenatis. Donec semper sagittis ipsum, et rhoncus magna ultricies eu. - */ -``` - -Empty p-tags would lead to empty strings in the returned array. To avoid this you can call `$web->cleanParagraphs` instead. This will filter empty paragraphs and only return those with content. To access the first paragraph with content use `$web->cleanParagraphs[0]`. diff --git a/websites/examples/parse-csv-json-and-xml-files.md b/websites/examples/parse-csv-json-and-xml-files.md deleted file mode 100644 index 3268ca9..0000000 --- a/websites/examples/parse-csv-json-and-xml-files.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scrape%20Common%20File%20Types&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape CSV, XML and JSON - -PHPScraper can process common plain file types such as `csv`, `json`, `xml` from strings or URLs for you. Most functionality described below works for all three types. Special cases are noted. The following topics are covered: - -[[toc]] - - -## Parsing of CSV/XML/JSON strings - -If you have a string that represents a CSV, XML or JSON, PHPScraper can assist in validating and parsing it: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Parse a JSON string -$json = $web->parseJson($jsonString); - -// Parse an XML string -$xml = $web->parseXml($xmlString); - -// Parse a CSV string -$csv = $web->parseCsv($csvString); -``` - -This can be useful when chaining steps or accessing embedded elements such as schema data. - - -## Fetching and Parsing of CSV/XML/JSON URLs - -PHPScraper can assist with fetching and parsing the contents of remote resources (URLs) containing JSON-, CSV- or XML data: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Fetches URL and parses contents to JSON. -$json = $web - ->parseJson('https://test-pages.phpscraper.de/index.json'); - -// Fetches URL and parses contents to XML. -$xml = $web - ->parseXml('https://test-pages.phpscraper.de/sitemap.xml'); - -// Fetches URL and parses contents into a simple array. -$csv = $web - ->parseCsv('https://test-pages.phpscraper.de/test.csv'); - -// Fetches URL and generates an asso. array (map) with the first line as keys. -$csv = $web - ->parseCsvWithHeader('https://test-pages.phpscraper.de/test.csv'); -``` - -Each of the methods above can be accessed in various ways. Using `parseCsv` as an example, you can use any of the methods as following: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Option 1: Pass in the absolute URL -$csv = $web - ->parseCsv('https://test-pages.phpscraper.de/test.csv'); - -// Option 2: Navigate to a relative URL for parsing. -$csv = $web - ->go('https://test-pages.phpscraper.de/meta/feeds.html') - ->parseCsv('/test.csv'); - -// Option 3: Navigate with `go` or `clickLink` and call the parser. -$csv = $web - ->go('https://test-pages.phpscraper.de/test.csv') - ->parseCsv(); -``` - -::: tip Multiple Methods -The examples above apply to the following methods: - -- `parseJson` -- `parseXml` -- `parseCsv` -- `parseCsvWithHeader` (resolves into an asso. array) -::: - -## Parsing a CSV String with Headers - -CSV can be parsed into various data structures. PHPScraper comes with two options built-in to parse CSV. Given the following example file: - -```bash -$ curl https://test-pages.phpscraper.de/test.csv - -date,value -1945-02-06,4.20 -1952-03-11,42 -``` - -The standard parser `parseCsv` returns a simple array with casted values: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -print_r( - $web->parseCsv('https://test-pages.phpscraper.de/test.csv') -); -/** - * [ - * ['date', 'value'], - * ['1945-02-06', 4.20], - * ['1952-03-11', 42], - * ] - */ -``` - -`parseCsvWithHeader` parses the content and uses the first line as headers and returns an associative array (map): - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -print_r( - $web->parseCsvWithHeader('https://test-pages.phpscraper.de/test.csv') -); - -/** - * [ - * ['date' => '1945-02-06', 'value' => 4.20], - * ['date' => '1952-03-11', 'value' => 42], - * ] - */ -``` - -::: tip Type Casting -Native types such as `int` and `float` are automatically cast to PHP-native types. -::: - -## Providing CSV Parsing Parameters - -You might want to define which *separate*, *enclosure*, and *escape* to use. You can do so by passing an options array along: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Direct access: -$csv = $web - ->parseCsv('https://test-pages.phpscraper.de/test-custom.csv', '|', '"'); - -// Alternative syntax using `go` first: -$csv = $web - ->go('https://test-pages.phpscraper.de/test.csv') - ->parseCsv(null, '|', '"'); -``` diff --git a/websites/examples/scrape-feeds.md b/websites/examples/scrape-feeds.md deleted file mode 100644 index 14a6bdf..0000000 --- a/websites/examples/scrape-feeds.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scrape%20Feeds&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape Feeds - -PHPScraper can identify and process feeds (RSS feeds, sitemaps, etc.) for you. The following feed-specific features are implemented: - -[[toc]] - - -## Identify RSS Feed URLs - -Websites can define RSS feeds in the head section of their markup. PHPScraper allows to identify any RSS feeds noted on the current page using `rssUrls`: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains: - * - * - * - */ - -print_r( - $web - ->go('https://test-pages.phpscraper.de/meta/feeds.html') - ->rssUrls -); - -/** - * [ - * 'https://test-pages.phpscraper.de/absolute.xml', - * 'https://test-pages.phpscraper.de/relative.xml' - * ] - */ -``` - - -## Parse RSS feeds - -The `rss()`-method can be used to parse RSS feeds. If called without any parameter `rssUrls` will be used: - -```php -// Init and go to any page of the domain. This sets the base URL. -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/feeds.html'); - -// Same as `$web->rss(...$web->rssUrls)` -$rss = $web->rss(); -``` - -You can also parse RSS feeds by passing one or more URLs in: - -```php -// Single URL. -$rss = $web->rss($web->rssUrls[0]); - -// Multiple URLs -$rss = $web->rss( - 'https://example.com/feed_1.xml', - 'https://example.com/feed_2.xml' -); -``` - -This result contains an array structure with selected properties. The array structure contains instances of `DataTransferObjects\FeedEntry` with properties for `link` and `title`. - -::: tip Complete Details -If you need all details, please fallback on `$web->rssRaw(...)`. It can be called like `$web->rss(...)` and returns an array structure. -::: - - -## Parse XML Sitemaps - -You can parse XML sitemaps using `sitemap()`: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Get the sitemap for the current website (if it exists). - * This assumes the default URL `/sitemap.xml` is used. - * - * @throws \Exception (e.g. network). - */ -$sitemap = $web - ->go('https://example.com') - ->sitemap(); - -// You can pass in the desired URL: -$sitemap = $web->sitemap('https://example.com/custom_sitemap.xml'); -``` - -This result contains only selected properties. It returns an array of `DataTransferObjects\FeedEntry` with the `link` property. - -::: tip Complete Details -If you need all details, please fallback on `$web->sitemapRaw(...)`. It can be called like `$web->sitemap()` and returns an array structure. -::: - - -## Parse Static Search Indexes - -You can parse static search indexes using `searchIndex()`: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Get the search index for the current website (if it exists). -// This assumes the default URL `/index.json` is used. -$searchIndex = $web - ->go('https://example.com') - ->searchIndex(); - -// You can pass in the desired URL: -$searchIndex = $web->searchIndex('https://example.com/custom_index.json'); -``` - -**This result contains only selected properties.** It returns an array of `DataTransferObjects\FeedEntry` with properties `link`, `title`, and `description`. - -::: tip Complete Details -If you need all details, please fallback on `$web->searchIndexRaw(...)`. It can be called like `$web->searchIndex()` and returns an array structure. -::: \ No newline at end of file diff --git a/websites/examples/scrape-header-tags.md b/websites/examples/scrape-header-tags.md deleted file mode 100644 index 83075ff..0000000 --- a/websites/examples/scrape-header-tags.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Header%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape Header Tags - -The header tags often contain useful information about a web-page and how it fits into the overall structure of the website it is part of. The following examples show how to access particular pieces of information from the `` and collections around these. - - -## Charset - -To access the defined charset, you can use the following method: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Print the charset -echo $web->charset; // "utf-8" -``` - - -## Viewport - -In some cases, such as the viewport and the meta keywords, the string is representing an array and will be provided as such: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Returns the viewport as an array. For the example it contains: - * - * [ - * 'width=device-width', - * 'initial-scale=1', - * 'shrink-to-fit=no', - * 'maximum-scale=1', - * 'user-scalable=no' - * ], - */ -var_dump($web->viewport); -``` - -If you need to access the original "viewport"-string, you can use `viewportString`: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Returns the viewport as a string. It prints: - * - * "width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1, user-scalable=no" - */ -echo $web->viewportString; -``` - - -## Canonical URL - -The canonical URL, if given, can be accessed as shown in the example below: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains: - * - * - */ -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -// Print the canonical URL: -echo $web->canonical; // "https://test-pages.phpscraper.de/navigation/2.html" -``` - -::: tip -If no canonical link is set, the method returns `null`. -::: - - -## Content-Type - -To access the content type you can use the following functionality: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Print the contentType: -echo $web->contentType; // "text/html; charset=utf-8" -``` - - -## CSFR Token - -The CSFR token method assumes that the token is stored in a meta tag with the name "csrf-token". This is the default for Laravel. You can access it using the following code: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Returns the csrfToken: -echo $web->csrfToken; // "token" -``` - - -## Combined Header Tags - -You can use the `headers`-method if you want all of the above-mentioned methods. It is defined as: - -```php -/** - * @return array - */ -public function headers() -{ - return [ - 'charset' => $this->charset(), - 'contentType' => $this->contentType(), - 'viewport' => $this->viewport(), - 'canonical' => $this->canonical(), - 'csrfToken' => $this->csrfToken(), - ]; -} -``` - -More information on accessing the [meta tags](/examples/scrape-meta-tags.html). diff --git a/websites/examples/scrape-images.md b/websites/examples/scrape-images.md deleted file mode 100644 index f5473af..0000000 --- a/websites/examples/scrape-images.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Images&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape Images - -You might wonder how to scrape photos, images and other graphics from a website using PHPScraper. As with other functionality, scraping the images & photos from a website follows a similar approach. All graphics such as images, photos, and infographics can be scraped and parsed along with details such as tag attributes or only as an URL list. - - -## Scrape Image URLs - -The following example parses a web-page for images and returns absolute image URLs as an array. - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. This page contains two images: - * - * absolute path - * relative path - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * [ - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - * - * @note - * The URL is listed twice because it's included twice on the page: - * Once with a relative path and once with an absolute path. - * The relative paths are resolved to absolute paths by default. - */ -var_dump($web->images); -``` - -::: tip -If no images are found, the array remains empty. You can download images using `$web->fetchAsset(...)`. -::: - - -## Scrape Images with Details - -If you are in need of more details the following requests allows you to access attributes of the image tag: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'absolute path', - * 'width' => null, - * 'height' => null, - * ], - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'relative path', - * 'width' => null, - * 'height' => null, - * ] - */ -var_dump($web->imagesWithDetails); -``` - -::: tip SEO -The `alt`-text (with the [keywords of the content](/examples/extract-keywords.html)) is used by search engines for image-based searches. Make sure to always define it. -::: - - -## Scrape Attributes: Alt, Width and Height - -The attributes for `alt`, `width` and `height` are included in the detailed data set. - -If you require more data, you will either need to extend the library or submit an issue for consideration. - - -## Fetching Assets - -If you want to fetch assets, you can do so using `fetchAsset`: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$sharingImage = $web->fetchAsset($web->image); -``` diff --git a/websites/examples/scrape-links.md b/websites/examples/scrape-links.md deleted file mode 100644 index 6327332..0000000 --- a/websites/examples/scrape-links.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Links&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape Links - -The scraping of links works very similar to [image scraping](/examples/scrape-images.html). You can retrieve a list of URL without any additional information as well as a detailed list containing `rel`, `target` as well as other attributes. - - -## Simple Link List - -The following example parses a web-page for any links and returns an array of absolute URLs: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains 6 links to placekitten.com with different attributes: - * - *

              Different ways to wrap the attributes

              - *

              external kitten

              - *

              external kitten

              - *

              external kitten

              - * - *

              Named frame/window/tab

              - *

              external kitten

              - *

              external kitten

              - *

              external kitten

              - */ -$web->go('https://test-pages.phpscraper.de/links/target.html'); - -// Print the number of links. -echo "This page contains " . count($web->links) . " links.\n\n"; - -// Loop through the links -foreach ($web->links as $link) { - echo " - " . $link . "\n"; -} - -/** - * Combined this will print out: - * - * This page contains 6 links. - * - * - https://placekitten.com/408/287 - * - https://placekitten.com/444/333 - * - https://placekitten.com/444/321 - * - https://placekitten.com/408/287 - * - https://placekitten.com/444/333 - * - https://placekitten.com/444/321 - */ -``` - -If the page shouldn't contain any links, an empty array is returned. - - -## Links with Details - -If you are in need of more details you can access these in a similar way as on the images. Below is an example to access the detailed data of the first link on the page: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. This page contains several links with different rel attributes. To save space only the first one: - * - * external kitten - */ -$web->go('https://test-pages.phpscraper.de/links/rel.html'); - -// Get the first link on the page. -$firstLink = $web->linksWithDetails[0]; - -/** - * $firstLink contains now: - * - * [ - * 'url' => 'https://placekitten.com/432/287', - * 'protocol' => 'https', - * 'text' => 'external kitten', - * 'title' => null, - * 'target' => null, - * 'rel' => 'nofollow', - * 'isNofollow' => true, - * 'isUGC' => false, - * 'isNoopener' => false, - * 'isNoreferrer' => false, - * ] - */ -``` - -If you require more data, you will either need to extend the library or submit an issue for consideration. - - -## Internal Links and External Links - -PHPScraper allows to return only internal or external links. The following demonstrates both: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navigate to the test page. -$web->go('https://test-pages.phpscraper.de/links/base-href.html'); - -// Get the list of internal links (in the example an image is linked) -var_dump($web->internalLinks); -/** - * [ - * 'https://test-pages.phpscraper.de/assets/cat.jpg' - * ] - */ - -// Get the list of external links -var_dump($web->externalLinks); -/** - * [ - * 'https://placekitten.com/408/287' - * ] - */ -``` diff --git a/websites/examples/scrape-meta-tags.md b/websites/examples/scrape-meta-tags.md deleted file mode 100644 index 1e998ff..0000000 --- a/websites/examples/scrape-meta-tags.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Meta%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape Meta Tags - -Accessing the meta information follows a similar pattern as the previously shown [header tags](/examples/scrape-header-tags.html). Below are examples to explain: - - -## Meta Author, Description and Image - -The following example shows the extraction of three attributes: - -- the Meta Author, -- the Meta Description and -- the Meta Image URL - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains: - * - * - * - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Get the information: -echo $web->author; // "Lorem ipsum" -echo $web->description; // "Lorem ipsum dolor etc." -echo $web->image; // "https://test-pages.phpscraper.de/assets/cat.jpg" -``` - - -## Meta Keywords - -The keywords meta-tag is naturally an array and will be split for your convenience: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -// Dump the keywords as an array -var_dump($web->keywords); // ['one', 'two', 'three'] -``` - -Alternatively, you can access the original keyword string: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -// Print the keywords as string -echo $web->keywordString; // "one, two, three" -``` - -::: tip -This refers only to the keywords in the "keyword" meta-tag. You can also [extract the content keywords](/examples/extract-keywords.html)) using PHPScraper. -::: - - -## Combined Meta Tags - -You can use the `metaTags`-method if you would like to access all meta properties. It returns the above-mentioned methods as an array. It is defined as: - -```php -/** - * get the meta collected as an array - * - * @return array - */ -public function metaTags() -{ - return [ - 'author' => $this->author(), - 'image' => $this->image(), - 'keywords' => $this->keywords(), - 'description' => $this->description(), - ]; -} -``` - -From the example above it would be used as follows: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -var_dump($web->metaTags); -/** - * Contains: - * - * [ - * 'Lorem ipsum', - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ['one', 'two', 'three'], - * 'Lorem ipsum dolor etc.', - * ] - */ -``` - - -## Missing Meta Tags - -This is similar to the PHP-native function [`get_meta_tags`](https://www.php.net/manual/en/function.get-meta-tags.php) but might not cover all use cases. If you need to access another meta property, please read the [contribution guidelines](/contributing.html) before opening a pull request or submitting an [issue on GitHub](https://github.com/spekulatius/phpscraper/issues). diff --git a/websites/examples/scrape-social-media-meta-tags.md b/websites/examples/scrape-social-media-meta-tags.md deleted file mode 100644 index 24e7836..0000000 --- a/websites/examples/scrape-social-media-meta-tags.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Social%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape Social Media Meta Tags - -Scraping social media sharing tags from a website can be done using the following methods. The exact result set depends on the provided tags. All tags are included, as long as these are in the prefixed namespace (e.g. `twitter:` for Twitter Cards). - - -## Open-Graph (OG) Data - -Fetching open-graph data can be done: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. Page contains: - * - * - * - * - * - * - * - * - * - * @see https://test-pages.phpscraper.de/og/example.html - */ -$web->go('https://test-pages.phpscraper.de/og/example.html'); - -// Prints 'Lorem Ipsum': -echo $web->openGraph['og:title']; - -// Prints 'Lorem ipsum dolor etc.': -echo $web->openGraph['og:description']; - -// The whole OpenGraph-set: -$data = $web->openGraph; - -/** - * $data now contains: - * - * [ - * 'og:site_name' => 'Lorem ipsum', - * 'og:type' => 'website', - * 'og:title' => 'Lorem Ipsum', - * 'og:description' => 'Lorem ipsum dolor etc.', - * 'og:url' => 'https://test-pages.phpscraper.de/meta/lorem-ipsum.html', - * 'og:image' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - */ -``` - -::: tip -If not data was found, the array will be returned empty. -::: - - -## Twitter Card - -Parsing the Twitter Card works similarly: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. The page contains the following Twitter Card: - * - * - * - * - * - * - * - * - * @see https://test-pages.phpscraper.de/twittercard/example.html - */ -$web->go('https://test-pages.phpscraper.de/twittercard/example.html'); - -// Should print out 'summary_large_image' -echo $web->twitterCard['twitter:card']; - -// Should print out 'Lorem Ipsum' -echo $web->twitterCard['twitter:title']; - -// The whole set. -$data = $web->twitterCard; - -/** - * $data contains now: - * - * [ - * 'twitter:card' => 'summary_large_image', - * 'twitter:title' => 'Lorem Ipsum', - * 'twitter:description' => 'Lorem ipsum dolor etc.', - * 'twitter:url' => 'https://test-pages.phpscraper.de/meta/lorem-ipsum.html', - * 'twitter:image' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - */ -``` - -In similar fashion to Open Graph, the array will be empty if no Twitter Card tags have been found. diff --git a/websites/examples/scrape-website-title.md b/websites/examples/scrape-website-title.md deleted file mode 100644 index 26950cd..0000000 --- a/websites/examples/scrape-website-title.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scrape%20Website%20Title&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scrape Website Title - -Scraping the title from a website is simple. The following examples show how it works using PHPScraper. - - -## Simple Example - -Very simple example of how to scrape the title of a website: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navigate to the test page - this one does contain a title-tag "Lorem Ipsum" -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Contains: - * - * Lorem Ipsum - */ - -// Fetch the title. This will return: "Lorem Ipsum" -var_dump($web->title); -``` - - -## Missing Title - -`null` will be returned if the title is missing: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Navigate to the test page - this one doesn't contain a title-tag. -$web->go('https://test-pages.phpscraper.de/meta/missing.html'); - -// Fetch the title. This will return null. -var_dump($web->title); -``` - -Note: This is the default behaviour: If a tag wasn't found because it's missing in the source HTML, `null` will be returned. If an iteratable item is empty (e.g. scraping images from a page without images), an empty array will be returned. - - -## Special Characters - -Load a website title with German Umlaute - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. It contains: - * - * A page with plenty of German umlaute everywhere (ä ü ö) - */ -$web->go('https://test-pages.phpscraper.de/meta/german-umlaute.html'); - -// Print the title: "A page with plenty of German umlaute everywhere (ä ü ö)" -echo $web->title; -``` - -It should work similarly with any UTF-8 characters. - - -## HTML Entities - -HTML Entities should be resolved - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Navigate to the test page. Contains: - * - * Cat & Mouse - */ -$web->go('https://test-pages.phpscraper.de/meta/html-entities.html'); - -// Print the title: "Cat & Mouse" -echo $web->title; -``` - -::: tip -Entities and special characters have been considered throughout the library. If you find a place where these don't work as expected, please raise an [issue](https://github.com/spekulatius/PHPScraper/issues). -::: diff --git a/websites/fr/README.md b/websites/fr/README.md deleted file mode 100644 index 208c12a..0000000 --- a/websites/fr/README.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP%20Scraper:%20Rendre%20sa%20simplicité%20au%20Scraping%20et%20au%20Crawling&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -PHP Scraper: Rendre sa simplicité au Scraping et au Crawling -============================================================ - -![PHP Scraper: Rendre sa simplicité au Scraping et au Crawling](logo-light.png) - -*de [Peter Thaleikis](https://peterthaleikis.com)* - -PHPScraper est une bibliothèque de scraper pour PHP, construite avec la notion de simplicité en tête. Il s'agit d'un wrapper fait à partir de quelques grandes bibliothèques PHP pour rendre l'accès au web plus facile. - -Les exemples valent mieux que mille mots. Jetez-y un coup d'œil ! - -::: tip Note -Ce site de documentation en français est en cours d'élaboration. Veuillez élever un PR sur GitHub si vous trouvez des erreurs. Merci ! -::: - - -L'idée 💡️ ----------- - -Accéder aux sites web et collecter les informations de base du web est trop complexe. Cette enveloppe autour de [Goutte](https://github.com/FriendsOfPHP/Goutte) rend les choses plus faciles. Il vous épargne XPath et autres, en vous donnant un accès direct à tout ce dont vous avez besoin. Le scraping Web avec PHP: un nouveau concept. - - -Supporters 💪️ -------------- - -Ce projet est sponsorisé par: - - - -Vous souhaitez devenir sponsor de ce projet? [Écrivez-moi](https://peterthaleikis.com/contact). - - -Exemples --------- - -Voici quelques exemples de ce que la bibliothèque de scraping web peut faire à ce stade: - -### Scrape Meta Information: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Elle contient: - * - * - * - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Obtenir l'information: -echo $web->author; // "Lorem ipsum" -echo $web->description; // "Lorem ipsum dolor etc." -echo $web->image; // "https://test-pages.phpscraper.de/assets/cat.jpg" -``` - -La plupart des autres informations sont accessibles directement, sous forme de chaîne ou de tableau.. - - -### Racler du contenu, comme des images: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Cette page contient deux images: - * - * absolute path - * relative path - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -var_dump($web->imagesWithDetails); -/** - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'absolute path', - * 'width' => null, - * 'height' => null, - * ], - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'relative path', - * 'width' => null, - * 'height' => null, - * ] - */ -``` - -Certaines informations *optionnellement* sont retournées comme un tableau avec des détails. Pour cet exemple, une simple liste d'images est disponible en utilisant `$web->images` aussi. Cela devrait faciliter votre travail de scraping web. - -Vous trouverez plus d'exemples de code dans les exemples individuels et dans les tests. - - -Installation ------------- - -L'installation se fait généralement en utilisant [Composer](https://getcomposer.org). - -### Installation avec Composer - -```bash -composer require spekulatius/phpscraper -``` - -Une fois l'installation terminée, le paquet sera récupéré par l'autoloader de Composer. Dans les applications et frameworks PHP typiques tels que Laravel ou Symfony, vous pouvez commencer à faire du scraping maintenant. Vous pouvez maintenant utiliser n'importe lequel des exemples mentionnés ou des exemples dans le dossier `tests/`. - -### Utilisation dans les projets VanillaPHP - -Si vous construisez un projet VanillaPHP, vous devrez inclure l'autoloader dans votre script au début de votre script PHP: - -```php -require 'vendor/autoload.php'; -``` - -Si vous utilisez un framework tel que Laravel, Symfony, Laminas, Phalcon ou CakePHP, vous n'aurez pas besoin de cette étape. L'autoloader est automatiquement inclus. - - -Configuration -------------- - -Une configuration supplémentaire est facultative. Voici les options correctement disponibles. - -### Support des proxys - -Si vous avez besoin de proxys, vous pouvez configurer le support des proxys avec `setConfig` : - -```php -$web->setConfig(['proxy' => 'http://user:password@127.0.0.1:3128']); -``` - -### Timeout - -Vous pouvez définir le `timeout` en utilisant `setConfig`: - -```php -$web->setConfig(['timeout' => 15]); -``` - -La mise à `0` (zéro) du délai d'attente le désactivera. - -### Désactivation de SSL - -Bien que cela ne soit pas recommandé, il peut être nécessaire de désactiver les contrôles SSL. Vous pouvez le faire en utilisant : - -```php -$web->setConfig(['disable_ssl' => true]); -``` - -Vous pouvez appeler `setConfig` plusieurs fois. Il stocke la configuration et la fusionne avec les paramètres précédents. Ceci doit être gardé à l'esprit dans le cas improbable d'une utilisation pour annuler des valeurs. - - -Vous avez trouvé un bug et l'avez corrigé ? C'est génial ! ----------------------------------- - -Avant de commencer, familiarisez-vous avec les éléments suivants [directives de contribution](/contributing.html). Si vous avez des questions, n'hésitez pas à nous contacter. - - -Tests: S'assurer que ça marche ! ----------------------------- - -Le code est grossièrement couvert par des tests de bout en bout. Pour cela, des pages web simples sont hébergées sur *https://test-pages.phpscraper.de/*, chargées et analysées à l'aide de [PHPUnit](https://phpunit.de/). Ces tests peuvent également servir d'exemples - voir `tests/` ! - -Ceci étant dit, il y a probablement des edge cases qui ne fonctionnent pas et qui peuvent causer des problèmes. Si vous en trouvez un, veuillez signaler un bug sur GitHub. - -Dédicaces ----------------------------- -Remerciements à mon ami [@yesnoornext](https://twitter.com/yesnoornext) pour son aide précieuse sur ce projet. diff --git a/websites/fr/apis/alibaba.md b/websites/fr/apis/alibaba.md deleted file mode 100644 index 93f16b1..0000000 --- a/websites/fr/apis/alibaba.md +++ /dev/null @@ -1,18 +0,0 @@ -# API pour scraper Alibaba/AliExpress - -L'équipe à l'origine de PHP Scraper s'efforce de fournir des API commerciales pour divers cas d'utilisation courants ainsi que pour des plateformes. Ces API ne sont pas auto-hébergées. Vous n'aurez pas à vous soucier de la rotation des IP/proxies, ni à utiliser un navigateur sans tête comme Puppeteer. Un simple appel à l'API vous permettra d'obtenir toutes les informations requises. Les services seront fournis sur la base d'une structure tarifaire attractive dépendant de l'utilisation. - -Pour Alibaba, nous envisageons la mise en œuvre d'une API avec la portée suivante. - -## Endpoints supportés proposés - -- Recherche de produits par mot-clé -- Obtenir des informations sur les produits - -::: tip Conseil -Veuillez noter que cette liste de points d'accès aux API n'est *pas* définitive et qu'elle est susceptible de changer. -::: - -## Support de la plateforme - -Grâce à l'approche consistant à utiliser une API gérée, les utilisateurs n'ont plus à se soucier de la rotation des proxies, des problèmes de mise à l'échelle et des pannes. En outre, un large éventail de plateformes est pris en charge. Vous pouvez facilement l'intégrer à NodeJS, Python (sans requêtes ou beautifulsoap), Golang, etc. Toute plateforme qui permet d'exécuter des requêtes GET peut être programmée pour demander des données à ce service. diff --git a/websites/fr/apis/amazon.md b/websites/fr/apis/amazon.md deleted file mode 100644 index e71853c..0000000 --- a/websites/fr/apis/amazon.md +++ /dev/null @@ -1,22 +0,0 @@ -# API pour scraper Amazon - -L'équipe à l'origine de PHP Scraper s'efforce de fournir des API commerciales pour divers cas d'utilisation courants ainsi que pour des plateformes. Ces API ne sont pas auto-hébergées. Vous n'aurez pas à vous soucier de la rotation des IPs/proxies, ni à utiliser un navigateur sans tête comme Puppeteer. Un simple appel à l'API vous permettra d'obtenir toutes les informations requises. Les services seront fournis sur la base d'une structure tarifaire attractive dépendant de l'utilisation. - -Pour Amazon, nous envisageons la mise en œuvre d'une API avec la portée suivante. - -## Points de terminaison supportés proposés - -- Obtenir des informations sur le produit -- Obtenir des recommandations -- Obtenir des informations sur les évaluations -- Obtenir des informations sur les vendeurs -- Obtenir tous les prix des vendeurs -- Recherche de produits par mot-clé ou par identifiant de vendeur - -::: tip Conseil -Veuillez noter que cette liste de points d'accès aux API n'est *pas* définitive et qu'elle est susceptible de changer. -::: - -## Support de la plate-forme - -Grâce à l'approche consistant à utiliser une API gérée, les utilisateurs n'ont plus à se soucier de la rotation des proxies, des problèmes de mise à l'échelle et des pannes. En outre, un large éventail de plateformes est pris en charge. Vous pouvez facilement intégrer NodeJS, Python (sans requests ou beautifulsoap), Golang, etc. Toute plateforme qui permet d'exécuter des requêtes GET peut être programmée pour demander des données à ce service. diff --git a/websites/fr/apis/etsy.md b/websites/fr/apis/etsy.md deleted file mode 100644 index dfb8510..0000000 --- a/websites/fr/apis/etsy.md +++ /dev/null @@ -1,22 +0,0 @@ -# API pour scraper Etsy - -L'équipe à l'origine de PHP Scraper s'efforce de fournir des API commerciales pour divers cas d'utilisation courants ainsi que pour des plateformes. Ces API ne sont pas auto-hébergées. Vous n'aurez pas à vous soucier de la rotation des IPs/proxies, ni à utiliser un navigateur sans tête comme Puppeteer. Un simple appel à l'API vous permettra d'obtenir toutes les informations requises. Les services seront fournis sur la base d'une structure tarifaire attractive dépendant de l'utilisation. - -Pour Etsy, nous envisageons la mise en œuvre d'une API avec la portée suivante. - -## Endpoints supportés proposés - -- Obtenir des informations sur le produit -- Obtenir des recommandations -- Obtenir des informations sur les évaluations -- Obtenir des informations sur les vendeurs -- Obtenir tous les prix des vendeurs -- Recherche de produits par mot-clé ou par identifiant de vendeur - -::: tip Conseil -Veuillez noter que cette liste de points d'accès aux API n'est *pas* définitive et qu'elle est susceptible de changer. -::: - -## Support de la plate-forme - -Grâce à l'approche consistant à utiliser une API gérée, les utilisateurs n'ont plus à se soucier de la rotation des proxies, des problèmes de mise à l'échelle et des pannes. En outre, un large éventail de plateformes est pris en charge. Vous pouvez facilement intégrer NodeJS, Python (sans requests ou beautifulsoap), Golang, etc. Toute plateforme qui permet d'exécuter des requêtes GET peut être programmée pour demander des données à ce service. diff --git a/websites/fr/apis/facebook.md b/websites/fr/apis/facebook.md deleted file mode 100644 index 90a69b6..0000000 --- a/websites/fr/apis/facebook.md +++ /dev/null @@ -1,28 +0,0 @@ -# API pour scraper Facebook - -L'équipe à l'origine de PHP Scraper s'efforce de fournir des API commerciales pour divers cas d'utilisation courants ainsi que pour des plateformes. Ces API ne sont pas auto-hébergées. Vous n'aurez pas à vous soucier de la rotation des IPs/proxies, de l'utilisation d'un navigateur sans tête tel que Puppeteer. Un simple appel à l'API vous permettra d'obtenir toutes les informations requises. Les services seront fournis sur la base d'une structure tarifaire attractive dépendant de l'utilisation. - -Pour Facebook, nous envisageons la mise en œuvre d'une API avec la portée suivante. - -## Endpoints pris en charge proposés - -- Utilisateur: profil utilisateur public -- Utilisateur: autres comptes sociaux -- Utilisateur: Liste d'amis -- Utilisateur: Images -- Utilisateur: Messages de localisation -- Utilisateur: Messages de l'utilisateur -- Groupes publics et groupes privés avec clé: Profil du groupe public -- Groupes publics et groupes privés avec clé: Liste des membres -- Public Groupes et groupes privés avec clé: Images -- Public Groupes et groupes privés avec clé: Messages de localisation -- Public Groupes et groupes privés avec clé: Messages -- Messages: Détails du message public (y compris les commentaires, les "likes", les "likers", etc.) - -::: tip Conseil -Veuillez noter que cette liste de points d'accès aux API n'est *pas* définitive et qu'elle est susceptible de changer. -::: - -## Support de la plate-forme - -Grâce à l'approche consistant à utiliser une API gérée, les utilisateurs n'ont plus à se soucier de la rotation des proxies, des problèmes de mise à l'échelle et des pannes. En outre, un large éventail de plateformes est pris en charge. Vous pouvez facilement intégrer NodeJS, Python (sans requests ou beautifulsoap), Golang, etc. Toute plateforme qui permet d'exécuter des requêtes GET peut être programmée pour demander des données à ce service. diff --git a/websites/fr/apis/instagram.md b/websites/fr/apis/instagram.md deleted file mode 100644 index b32c5e0..0000000 --- a/websites/fr/apis/instagram.md +++ /dev/null @@ -1,34 +0,0 @@ -# API pour scraper Instagram - -L'équipe derrière PHP Scraper travaille à fournir des API commerciales pour divers cas d'utilisation courants ainsi que pour des plateformes. Ces API ne sont pas auto-hébergées. Vous n'aurez pas à vous soucier de la rotation des IP/proxies, de l'utilisation d'un navigateur sans tête tel que Puppeteer. Un simple appel à l'API vous permettra d'obtenir toutes les informations requises. Les services seront fournis sur la base d'une structure tarifaire attractive dépendant de l'utilisation. - -Pour Instagram, nous envisageons la mise en œuvre d'une API avec la portée suivante. - -## Endpoints supportés proposés - -- Utilisateur: détails du profil -- Utilisateur: Faits marquants -- Utilisateur: Messages -- Utilisateur: Messages marqués -- Utilisateur: Messages publics -- Utilisateur: Suiveurs -- Utilisateur: Obtenir des histoires -- Utilisateur: Statut actuel -- Utilisateur: Autres comptes sociaux -- Messages publics: Commentaires -- Messages publics: J'aime -- Story downloader avec conversion en mp4, mp3, etc. -- Messages avec hashtag -- Messages sur l'emplacement -- Recherche d'emplacement -- Détails du message -- Profils connexes -- Recherche - -::: tip Conseil -Veuillez noter que cette liste de points d'accès aux API n'est *pas* définitive et qu'elle est susceptible de changer. -::: - -## Support de la plate-forme - -Grâce à l'approche consistant à utiliser une API gérée, les utilisateurs n'ont plus à se soucier de la rotation des proxies, des problèmes de mise à l'échelle et des pannes. En outre, un large éventail de plateformes est pris en charge. Vous pouvez facilement intégrer NodeJS, Python (sans requests ou beautifulsoap), Golang, etc. Toute plateforme qui permet d'exécuter des requêtes GET peut être programmée pour demander des données à ce service. diff --git a/websites/fr/apis/linkedin.md b/websites/fr/apis/linkedin.md deleted file mode 100644 index 6938630..0000000 --- a/websites/fr/apis/linkedin.md +++ /dev/null @@ -1,21 +0,0 @@ -# API pour scraper LinkedIn - -L'équipe à l'origine de PHP Scraper s'efforce de fournir des API commerciales pour divers cas d'utilisation courants ainsi que pour des plateformes. Ces API ne sont pas auto-hébergées. Vous n'aurez pas à vous soucier de la rotation des IP/proxies, ni à utiliser un navigateur sans tête tel que Puppeteer. Un simple appel à l'API vous permettra d'obtenir toutes les informations requises. Les services seront fournis sur la base d'une structure tarifaire attractive dépendant de l'utilisation. - -Pour LinkedIn, nous envisageons la mise en œuvre d'une API avec la portée suivante. - -## Endpoints supportés proposés - -- Utilisateur: Détails du profil -- Utilisateur: Messages -- Post: Téléchargeur et convertisseur de vidéo. -- Entreprise: Détails du profil -- Recherche d'emploi - -::: tip Conseil -Veuillez noter que cette liste de points d'accès aux API n'est *pas* définitive et qu'elle est susceptible de changer. -::: - -## Support de la plate-forme - -Grâce à l'approche consistant à utiliser une API gérée, les utilisateurs n'ont plus à se soucier de la rotation des proxies, des problèmes de mise à l'échelle et des pannes. En outre, un large éventail de plateformes est pris en charge. Vous pouvez facilement intégrer NodeJS, Python (sans requests ou beautifulsoap), Golang, etc. Toute plateforme qui permet d'exécuter des requêtes GET peut être programmée pour demander des données à ce service. diff --git a/websites/fr/apis/target.md b/websites/fr/apis/target.md deleted file mode 100644 index fd5420f..0000000 --- a/websites/fr/apis/target.md +++ /dev/null @@ -1,18 +0,0 @@ -# API pour scraper Target - -L'équipe à l'origine de PHP Scraper travaille à la fourniture d'API commerciales pour divers cas d'utilisation courants ainsi que pour des plateformes. Ces API ne sont pas auto-hébergées. Vous n'aurez pas à vous soucier de la rotation des IPs/proxies, ni à utiliser un navigateur sans tête comme Puppeteer. Un simple appel à l'API vous permettra d'obtenir toutes les informations requises. Les services seront fournis sur la base d'une structure tarifaire attractive dépendant de l'utilisation. - -Pour Target, nous envisageons la mise en œuvre d'une API avec la portée suivante. - -## Endpoints supportés proposés - -- Obtenir des détails sur le produit -- Recherche de produits par mot-clé - -::: tip Conseil -Veuillez noter que cette liste de points d'accès aux API n'est *pas* définitive et qu'elle est susceptible de changer. -::: - -## Support de la plate-forme - -Grâce à l'approche consistant à utiliser une API gérée, les utilisateurs n'ont plus à se soucier de la rotation des proxies, des problèmes de mise à l'échelle et des pannes. En outre, un large éventail de plateformes est pris en charge. Vous pouvez facilement intégrer NodeJS, Python (sans requests ou beautifulsoap), Golang, etc. Toute plateforme qui permet d'exécuter des requêtes GET peut être programmée pour demander des données à ce service. diff --git a/websites/fr/apis/tiktok.md b/websites/fr/apis/tiktok.md deleted file mode 100644 index 3e1d0a2..0000000 --- a/websites/fr/apis/tiktok.md +++ /dev/null @@ -1,21 +0,0 @@ -# API pour scraper TikTok - -L'équipe à l'origine de PHP Scraper s'efforce de fournir des API commerciales pour divers cas d'utilisation courants ainsi que pour des plateformes. Ces API ne sont pas auto-hébergées. Vous n'aurez pas à vous soucier de la rotation des IP/proxies, ni à utiliser un navigateur sans tête tel que Puppeteer. Un simple appel à l'API vous permettra d'obtenir toutes les informations requises. Les services seront fournis sur la base d'une structure tarifaire attractive dépendant de l'utilisation. - -Pour TikTok, nous envisageons la mise en œuvre d'une API avec la portée suivante. - -## Endpoints supportés proposés - -- Recherche par Tag -- Utilisateur: Détails du profil public -- Utilisateur: Autres comptes sociaux -- Détails de la vidéo -- Téléchargement de vidéos avec conversion en mp4, mp3, etc. et sans filigrane - -::: tip Conseil -Veuillez noter que cette liste de points d'accès aux API n'est *pas* définitive et qu'elle est susceptible de changer. -::: - -## Support de la plate-forme - -Grâce à l'approche consistant à utiliser une API gérée, les utilisateurs n'ont plus à se soucier de la rotation des proxies, des problèmes de mise à l'échelle et des pannes. En outre, un large éventail de plateformes est pris en charge. Vous pouvez facilement intégrer NodeJS, Python (sans requests ou beautifulsoap), Golang, etc. Toute plateforme qui permet d'exécuter des requêtes GET peut être programmée pour demander des données à ce service. diff --git a/websites/fr/apis/walmart.md b/websites/fr/apis/walmart.md deleted file mode 100644 index e6cbf82..0000000 --- a/websites/fr/apis/walmart.md +++ /dev/null @@ -1,18 +0,0 @@ -# API pour scraper Walmart - -L'équipe à l'origine de PHP Scraper travaille à la fourniture d'API commerciales pour divers cas d'utilisation courants ainsi que pour des plateformes. Ces API ne sont pas auto-hébergées. Vous n'aurez pas à vous soucier de la rotation des IPs/proxies, ni à utiliser un navigateur sans tête comme Puppeteer. Un simple appel à l'API vous permettra d'obtenir toutes les informations requises. Les services seront fournis sur la base d'une structure tarifaire attractive dépendant de l'utilisation. - -Pour Walmart, nous envisageons la mise en œuvre d'une API avec la portée suivante. - -## Endpoints supportés proposés - -- Obtenir des détails sur le produit -- Recherche de produits par mot-clé - -::: tip Conseil -Veuillez noter que cette liste de points d'accès aux API n'est *pas* définitive et qu'elle est susceptible de changer. -::: - -## Support de la plate-forme - -Grâce à l'approche consistant à utiliser une API gérée, les utilisateurs n'ont plus à se soucier de la rotation des proxies, des problèmes de mise à l'échelle et des pannes. En outre, un large éventail de plateformes est pris en charge. Vous pouvez facilement intégrer NodeJS, Python (sans requests ou beautifulsoap), Golang, etc. Toute plateforme qui permet d'exécuter des requêtes GET peut être programmée pour demander des données à ce service. diff --git a/websites/fr/apis/zalando.md b/websites/fr/apis/zalando.md deleted file mode 100644 index bafe6fa..0000000 --- a/websites/fr/apis/zalando.md +++ /dev/null @@ -1,18 +0,0 @@ -# API pour scraper Zalando - -L'équipe à l'origine de PHP Scraper s'efforce de fournir des API commerciales pour divers cas d'utilisation courants ainsi que pour des plateformes. Ces API ne sont pas auto-hébergées. Vous n'aurez pas à vous soucier de la rotation des IP/proxies, ni à utiliser un navigateur sans tête comme Puppeteer. Un simple appel à l'API vous permettra d'obtenir toutes les informations requises. Les services seront fournis sur la base d'une structure tarifaire attractive dépendant de l'utilisation. - -Pour Zalando, nous envisageons la mise en œuvre d'une API avec la portée suivante. - -## Endpoints supportés proposés - -- Obtenir des détails sur le produit -- Recherche de produits par mot-clé - -::: tip Conseil -Veuillez noter que cette liste de points d'accès aux API n'est *pas* définitive et qu'elle est susceptible de changer. -::: - -## Support de la plate-forme - -Grâce à l'approche consistant à utiliser une API gérée, les utilisateurs n'ont plus à se soucier de la rotation des proxies, des problèmes de mise à l'échelle et des pannes. En outre, un large éventail de plateformes est pris en charge. Vous pouvez facilement intégrer NodeJS, Python (sans requests ou beautifulsoap), Golang, etc. Toute plateforme qui permet d'exécuter des requêtes GET peut être programmée pour demander des données à ce service. diff --git a/websites/fr/examples/extract-keywords.md b/websites/fr/examples/extract-keywords.md deleted file mode 100644 index 0882531..0000000 --- a/websites/fr/examples/extract-keywords.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Extract%20Keywords&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Mots clés extraits - -Bien que le scraping du contenu soit souvent suffisant, vous avez parfois besoin d'extraire des termes et des phrases spécifiques (mots-clés) dans ce contenu. PHPScraper vous permet d'extraire directement les mots-clés du site web. Pour cela, il utilise: - -- le titre du site web, -- les balises méta, -- tous les titres, -- les paragraphes de la page, -- les ancres et les titres des liens, ainsi que -- les attributs de titre des images - -Si ces mots-clés sont extraits, cela ne signifie pas que la page est effectivement classée pour ces mots-clés. C'est le moteur de recherche qui prend la décision finale quant au classement d'une page Web. - -L'exemple suivant renvoie une liste de tous les mots-clés extraits de la page Web: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Naviguer vers la page de test. -// Elle contient 3 paragraphes de l'article de Wikipédia en anglais pour "lorem ipsum". -$web->go('https://test-pages.phpscraper.de/content/keywords.html'); - -// Vérifier le nombre de mots-clés. -$keywords = $web->contentKeywords; -echo "Cette page contient au moins " . count($keywords) . " mots-clés/phrases.\n\n"; - -// Boucle à travers les mots-clés -foreach ($keywords as $keyword) { - echo " - " . $keyword . "\n"; -} - -/** - * S'imprimera: - * - * Cette page contient au moins 40 mots-clés/expressions. - * - * [...] - * - graphic - * - improper latin - * - introduced - * - keyword extraction tests - * - letraset transfer sheets - * - lorem ipsum - * - lorem ipsum php rake library lorem ipsum - * - lorem ipsum text - * - make - * - malorum - * - microsoft word - * - mid-1980s - * - nonsensical - * - page - * - paragraphs - * - philosopher cicero - * - php rake library - * - popular word processors including pages - * - popularized - * - removed - * - roman statesman - * - source - * [...] - */ -``` - -::: tip Conseil -La langue (locale) par défaut est `en_US`. D'autres langues peuvent être passées en paramètre. Actuellement, cela ne fonctionne que pour une sélection de langues. Vérifiez ceci [liste](https://github.com/Donatello-za/rake-php-plus#currently-supported-languages) pour de plus amples informations. -::: - - -## Notation des mots-clés - -Tous les mots clés n'ont pas le même poids dans les algorithmes de classement des moteurs de recherche. Un mélange de plusieurs facteurs et signaux de référencement décide du poids qu'un moteur de recherche attribue à un mot. La fréquence des mots, la longueur des textes et les variations telles que les synonymes peuvent entraîner une pondération différente. - -PHPScraper vous permet d'obtenir une indication de la pondération des mots-clés sous la forme de scores: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Naviguer vers la page de test. -// Il contient 3 paragraphes de l'article de Wikipédia en anglais pour "lorem ipsum". -$web->go('https://test-pages.phpscraper.de/content/keywords.html'); - -// Vérifier le nombre de mots-clés. -$keywords = $web->contentKeywordsWithScores; -echo "Cette page contient au moins " . count($keywords) . " mots-clés/phrases.\n\n"; - -// Boucle à travers les mots-clés -foreach ($keywords as $keyword => $score) { - echo sprintf(" - %s (%s)\n", $keyword, $score); -} - -/** - * S'affichera: - * - * Cette page contient au moins 40 mots-clés/expressions. - * - * [...] - * - 1960s (1.0) - * - added (1.0) - * - adopted lorem ipsum (11.0) - * - advertisements (1.0) - * - aldus employed (4.0) - * - corrupted version (4.0) - * - graphic (1.0) - * - improper latin (4.0) - * - introduced (1.0) - * - keyword extraction tests (9.0) - * - test (1.0) - * - microsoft word (5.3333333333333) - * - english wikipedia (4.0) - * - lorem ipsum (8.0) - * - lorem ipsum text (11.0) - * [...] - */ -``` - -::: tip Conseil -Les fonctions PHP [similar_text](https://www.php.net/manual/en/function.similar-text.php) et [levenshtein](https://www.php.net/manual/en/function.levenshtein.php) peut vous aider à identifier et à fusionner les mots-clés similaires ainsi que les variations typographiques des mots-clés. [Keyword Merge](https://github.com/spekulatius/keyword-merge) est un paquet de compositeurs pour aider à trier les mots-clés similaires. -::: diff --git a/websites/fr/examples/headings.md b/websites/fr/examples/headings.md deleted file mode 100644 index 99b02b3..0000000 --- a/websites/fr/examples/headings.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Headings&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scraping Headings - -Les titres peuvent être utiles pour se faire une idée du contenu d'un site Web. L'exemple suivant montre comment effectuer un scraping: - - - Un seul Heading - - Tous les titres d'un niveau particulier (par exemple, `

              `) - - Tous les titres d'une page - - -## Récupération d'un seul titre - -La récupération d'un seul titre est facile et peut être réalisée en suivant cet exemple: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Elle contient: - * - * Outline Test - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -// Imprimer l'en-tête H1 -echo $web->h1[0]; // "Outline Test" -``` - -::: tip Conseil -Le site [titre du site web](/fr/examples/scrape-website-title.html) et la rubrique 1 (`

              `) peuvent être différentes. Assurez-vous que vous récupérez le bon. -::: - - -## Rubriques par niveau - -Il peut arriver que vous souhaitiez récupérer toutes les rubriques d'un niveau particulier. L'exemple ci-dessous vous montre comment faire: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Elle contient: - * - *

              Example 1

              - *

              Here would be an example.

              - * - *

              Example 2

              - *

              Here would be the second example.

              - * - *

              Example 3

              - *

              Here would be another example.

              - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -/** - * Obtenir les en-têtes h3: - * - * [ - * 'Example 1', - * 'Example 2', - * 'Example 3' - * ] - */ -$web->h3; -``` - -Si aucun titre n'est trouvé, le tableau est laissé vide. - - -## Toutes les rubriques d'une page - -Pour accéder à toutes les rubriques d'une page, vous pouvez le faire en accédant aux différents niveaux de 1 à 6. Ou bien, vous pouvez accéder à toutes les rubriques en même temps: - - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguer vers la page de test. Cette page contient: - * - *

              We are testing here!

              - *

              This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

              - * - *

              Examples

              - *

              There are numerous examples on the website. Please check them out to get more context on how scraping works.

              - * - *

              Example 1

              - *

              Here would be an example.

              - * - *

              Example 2

              - *

              Here would be the second example.

              - * - *

              Example 3

              - *

              Here would be another example.

              - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -/** - * $headings contains now: - * - * [ - * [ - * 'We are testing here!' - * ], - * [ - * 'Examples' - * ], - * [ - * 'Example 1', - * 'Example 2', - * 'Example 3', - * ], - * [], - * [], - * [] - * ] - */ -$web->headings; -``` - -Comme vous pouvez le constater, il ne contient aucune information sur la structure des rubriques. Il s'agit uniquement de savoir quelles rubriques existent. Si vous souhaitez avoir une [aperçu](/fr/examples/outline.html) vous devrez utiliser les méthodes correspondantes. diff --git a/websites/fr/examples/lists.md b/websites/fr/examples/lists.md deleted file mode 100644 index d8f10bc..0000000 --- a/websites/fr/examples/lists.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Lists&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scraping Lists - -Le scrapping de listes suit une approche similaire aux autres scrappings avec PHPScraper: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguer vers la page de test. Cette page contient: - * - *

              Example 1: Unordered List

              - *
                - *
              • Unordered list item 1
              • - *
              • Unordered list item 2
              • - *
              • Unordered list item with HTML
              • - *
              - * - *

              Example 2: Ordered List

              - *
                - *
              1. Ordered list item 1
              2. - *
              3. Ordered list item 2
              4. - *
              5. Ordered list item with HTML
              6. - *
              - */ -$web->go('https://test-pages.phpscraper.de/content/lists.html'); - -/** - * Seulement les listes non ordonnées (
                ) - * - * [ - * "type" => "ul", - * "children" => ... // Liste des childNodes - * "children_plain" => - * [ - * "Unordered list item 1" - * "Unordered list item 2" - * "Unordered list item with HTML" - * ] - * ] - */ -var_dump($web->unorderedLists); - - -/** - * Seulement les listes ordonnées (
                  ) - * - * [ - * "type" => "ul", - * "children" => ... // Liste des childNodes - * "children_plain" => - * [ - * "Ordered list item 1" - * "Ordered list item 2" - * "Ordered list item with HTML" - * ] - * ] - */ -var_dump($web->orderedLists); - - -// Les deux listes combinées (comme ci-dessus) -var_dump($web->lists); -``` - -::: warning Listes imbriquées -Pour l'instant, le système ne gère pas bien les listes imbriquées. Les listes imbriquées sont incluses dans le résultat en tant que "enfants" pour permettre un traitement ultérieur. -::: diff --git a/websites/fr/examples/navigation.md b/websites/fr/examples/navigation.md deleted file mode 100644 index a2b72bc..0000000 --- a/websites/fr/examples/navigation.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Navigate%20while%20Scraping&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Navigation - -Bien que PHPScraper soit principalement destiné à analyser les sites Web et à collecter des informations, vous pouvez également l'utiliser pour naviguer sur les sites Web. Vous trouverez ci-dessous des exemples de façons de *surfer* sur un site Web. - - -## Navigation à l'aide d'URLs - -Vous pouvez naviguer vers n'importe quelle URL. Ces URLs proviennent généralement du [liens analysés](/fr/examples/scrape-links.html). - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Nous commençons sur la page de test #1. -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -// Imprimez le titre pour voir si nous sommes bien à la bonne page... -echo $web->h1[0]; // 'Page #1' - - -// Nous naviguons vers la page de test n°2 en utilisant l'URL absolue. -$web->clickLink('https://test-pages.phpscraper.de/navigation/2.html'); - -// Imprimez le titre pour voir si nous sommes bien à la bonne page... -echo $web->h1[0]; // 'Page #2' -``` - - -## Navigation à l'aide de textes d'ancrage - -Sur un site Web, vous pouvez *cliquer* sur des liens en utilisant leurs textes d'ancrage: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Nous commençons sur la page de test #1. -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -/** - * Cette page contient: - * - * 2 relative - */ - -// Imprimez le titre pour voir si nous sommes bien à la bonne page... -echo $web->h1[0]; // 'Page #1' - - -// Nous naviguons vers la page de test n°2 en utilisant le texte qu'il y a sur la page. -$web->clickLink('2 relative'); - -// Imprimez le titre pour voir si nous sommes bien à la bonne page... -echo $web->h1[0]; // 'Page #2' -``` - -Cette fonctionnalité de base devrait vous permettre de naviguer sur les sites web. diff --git a/websites/fr/examples/outline.md b/websites/fr/examples/outline.md deleted file mode 100644 index 44ccb26..0000000 --- a/websites/fr/examples/outline.md +++ /dev/null @@ -1,215 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scrape%20Content%20Outline&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Outline Extraction - -Bien que vous puissiez vouloir accéder uniquement à la [`rubriques`](/fr/examples/headings.html) pour traiter, par exemple, le nombre ou la longueur des titres, ce n'est pas toujours suffisant. Dans certains cas, vous pouvez avoir besoin d'identifier la structure réelle du contenu. Pour ces cas d'utilisation, vous pouvez envisager l'une de ces méthodes: - - - `outline` fonctionne de manière similaire à la méthode `headings` mentionnée précédemment. Elle retourne également tous les titres, mais elle garde la structure du document original en place et fournit les niveaux de titres (par exemple `h1`) seuls avec la sortie. - - - `outlineWithParagraphs` fonctionne de la même manière que `outline`, la différence est que cet appel inclut également les paragraphes. - - - `cleanOutlineWithParagraphs` fonctionne de la même manière que `outlineWithParagraphs`, à la différence que toutes les balises HTML vides sont supprimées. - -Les exemples suivants devraient vous aider à mieux comprendre cette fonctionnalité. Il existe des méthodes dédiées pour [extraction de mots-clés](/fr/examples/extract-keywords.html) disponible sur. - - -## Extraire l'Outline - -L'Outline Extraction vous permet de construire un index du document. L'exemple suivant construit une version markdown des titres du document demandé: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguer vers la page de test. Cette page contient: - * - *

                  We are testing here!

                  - * [...] - * - *

                  Examples

                  - * [...] - * - *

                  Example 1

                  - * [...] - * - *

                  Example 2

                  - * [...] - * - *

                  Example 3

                  - * [...] - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - -/** - * $outline sera défini comme contenant: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ] - * ] - */ -$outline = $web->outline; -``` - - -### Extraire le plan avec des paragraphes - -La méthode suivante fonctionne de manière similaire à `outline`, mais elle inclut également les paragraphes dans le tableau retourné: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguer vers la page de test. Cette page contient: - * - *

                  We are testing here!

                  - *

                  This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

                  - * - *

                  Examples

                  - *

                  There are numerous examples on the website. Please check them out to get more context on how scraping works.

                  - * - *

                  Example 1

                  - *

                  Here would be an example.

                  - * - *

                  Example 2

                  - *

                  Here would be the second example.

                  - * - *

                  Example 3

                  - *

                  Here would be another example.

                  - * - * - *

                  - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - - -$content = $web->outlineWithParagraphs; -/** - * $content now contains: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "p", - * "content" => "This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example." - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "p", - * "content" => "There are numerous examples on the website. Please check them out to get more context on how scraping works." - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "p", - * "content" => "Here would be an example." - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "p", - * "content" => "Here would be the second example." - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ], [ - * "tag" => "p", - * "content" => "Here would be another example." - * ], [ - * "tag" => "p", - * "content" => "" - * ] - * ] - */ -``` - - -## Extraire le plan nettoyé avec les paragraphes. - -La méthode suivante fonctionne de manière similaire à `outlineWithParagraphs`, mais elle n'inclut aucun titre ou paragraphe vide dans le tableau retourné: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguer vers la page de test. Cette page contient: - * - *

                  We are testing here!

                  - *

                  This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

                  - * - *

                  Examples

                  - *

                  There are numerous examples on the website. Please check them out to get more context on how scraping works.

                  - * - *

                  Example 1

                  - *

                  Here would be an example.

                  - * - *

                  Example 2

                  - *

                  Here would be the second example.

                  - * - *

                  Example 3

                  - *

                  Here would be another example.

                  - * - * - *

                  - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - - -$content = $web->cleanOutlineWithParagraphs; -/** - * $content contient maintenant: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "p", - * "content" => "This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example." - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "p", - * "content" => "There are numerous examples on the website. Please check them out to get more context on how scraping works." - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "p", - * "content" => "Here would be an example." - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "p", - * "content" => "Here would be the second example." - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ], [ - * "tag" => "p", - * "content" => "Here would be another example." - * ] - * ] - */ -``` diff --git a/websites/fr/examples/paragraphs.md b/websites/fr/examples/paragraphs.md deleted file mode 100644 index f51f69a..0000000 --- a/websites/fr/examples/paragraphs.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Content&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scraping Text - -La récupération de contenu, principalement des paragraphes, peut être faite facilement en utilisant PHP Scraper. Il existe une méthode dédiée pour accéder aux paragraphes (`

                  `) d'un site web. Les exemples suivants montrent comment accéder au contenu/textes d'un site web. - - -## Obtenir tous les paragraphes - -L'exemple suivant renvoie une liste de tous les paragraphes (balises `

                  `) du site Web: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Naviguez vers la page de test. Elle contient 6 paragraphes lorem ipsum. -$web->go('https://test-pages.phpscraper.de/content/paragraphs.html'); - -// Vérifier le nombre de paragraphes. -echo "Cette page contient " . count($web->paragraphs) . " paragraphes.\n\n"; - -// Boucle à travers les paragraphes -foreach ($web->paragraphs as $paragraph) { - echo " - " . $paragraph . "\n"; -} - -/** - * S'affichera: - * - * Cette page contient 6 paragraphes. - * - * - Maecenas eget ex sit amet urna porta fermentum at ut dui. Praesent lectus arcu, hendrerit sed mi vel, commodo lacinia velit. Nullam ac velit quis ante tristique scelerisque quis non metus. Pellentesque non aliquam elit, in tincidunt purus. Vestibulum fringilla cursus risus, eget ornare dolor feugiat vitae. Sed non porta lorem, eget ornare diam. Sed quam est, eleifend porttitor imperdiet sit amet, ultricies vel ipsum. Pellentesque mauris mauris, fermentum pretium ex quis, viverra mattis est. Donec laoreet sem nec arcu rhoncus lobortis. Duis id orci vel enim interdum aliquam. Integer eu ex ligula. Ut mattis nisi non malesuada ornare. In elit ligula, ultricies a aliquet eget, dictum sit amet neque. Quisque nulla sem, aliquam id molestie iaculis, consequat at augue. Nullam sollicitudin finibus eros in venenatis. Donec semper sagittis ipsum, et rhoncus magna ultricies eu. - - * - Quisque sed dolor ut nunc accumsan lacinia. Suspendisse vel eros faucibus massa feugiat tristique. Nullam vitae scelerisque felis, malesuada hendrerit felis. Quisque eleifend mi lorem, vitae elementum dolor bibendum et. Etiam et faucibus augue. Pellentesque viverra sagittis consequat. Nulla a mollis ex. Sed vel nisl mauris. Nulla consequat dui sed pulvinar interdum. Integer vehicula molestie quam non fringilla. Duis auctor sem ut purus fringilla, in lacinia dui finibus. Nulla rhoncus semper velit, eget semper tellus suscipit eget. Vestibulum massa tellus, tristique sit amet dolor et, ullamcorper porta turpis. Vivamus eget magna lacinia, pretium sem sed, gravida libero. - - * - Ut at nunc laoreet, vestibulum mauris in, volutpat magna. Aliquam sodales orci finibus porta convallis. Vestibulum sollicitudin felis a sem consequat luctus. Sed laoreet porta quam, non pharetra massa mattis semper. Phasellus aliquet tortor ut felis scelerisque, non dapibus justo tincidunt. Donec eu pulvinar nisi, sit amet elementum massa. Nulla in odio est. In neque ligula, tristique rhoncus orci eu, egestas ullamcorper est. Integer rhoncus vel quam vel placerat. In nec metus pellentesque elit accumsan molestie eu posuere odio. Sed at eros nec turpis vestibulum eleifend vel in erat. Etiam vel metus faucibus, tempus enim nec, elementum arcu. Ut nec blandit risus. Nam sapien nunc, tristique sit amet facilisis non, maximus a nulla. Pellentesque vel posuere libero. - - * - Morbi volutpat purus odio, vitae scelerisque diam consectetur sed. Cras turpis leo, hendrerit in tempus et, convallis in nibh. Mauris molestie facilisis odio, ac egestas erat ultrices pellentesque. Donec interdum leo quis ipsum sagittis venenatis. Etiam scelerisque mi at metus ullamcorper, vitae tristique est tincidunt. Vestibulum ut congue urna, eu sagittis quam. Phasellus eget arcu sapien. In hac habitasse platea dictumst. Morbi ultrices, felis in faucibus ornare, libero augue scelerisque urna, et feugiat nisl est ut velit. Phasellus felis quam, egestas a faucibus nec, dictum eget enim. In tempor a lacus id facilisis. - - * - Donec bibendum finibus neque quis viverra. Ut ut nulla venenatis, accumsan purus nec, ullamcorper nisi. Nulla bibendum dui sit amet velit venenatis, eget viverra nibh accumsan. Fusce pharetra, sem eu mattis varius, massa leo eleifend lectus, quis tempor elit ipsum sit amet lorem. Fusce viverra dictum tortor non sodales. Phasellus at lectus quis arcu finibus imperdiet sed eleifend nulla. Donec blandit egestas nibh ac euismod. Curabitur ac pretium eros. - - * - Duis pharetra magna at dolor scelerisque, nec luctus ex pretium. Suspendisse a ante lectus. Donec vehicula condimentum turpis, in hendrerit dui suscipit non. Nullam a ultricies felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent aliquet varius mauris nec pretium. Vivamus convallis tincidunt nisi, eget scelerisque dolor facilisis vitae. Pellentesque purus neque, sollicitudin sit amet mauris id, posuere posuere mi. Etiam vitae urna vitae turpis volutpat consectetur. Quisque ultrices, ex dapibus hendrerit convallis, diam massa suscipit diam, vulputate pharetra mi orci at massa. Aliquam vel urna tempor, congue justo id, pulvinar lorem. Nulla mattis vitae justo sed molestie. Nunc fermentum fringilla nibh, id fermentum nulla. Sed tincidunt ipsum id est efficitur, molestie aliquet lacus hendrerit. Fusce et nisl eros. - */ -``` - - -## Scraping the First Paragraph - -La récupération du premier paragraphe du site Web peut être effectuée en accédant au premier élément du tableau (index 0). - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/content/paragraphs.html'); - -echo $web->paragraphs[0]; -/** - * Imprime le premier paragraphe: - * - * Maecenas eget ex sit amet urna porta fermentum at ut dui. Praesent lectus arcu, hendrerit sed mi vel, commodo lacinia velit. Nullam ac velit quis ante tristique scelerisque quis non metus. Pellentesque non aliquam elit, in tincidunt purus. Vestibulum fringilla cursus risus, eget ornare dolor feugiat vitae. Sed non porta lorem, eget ornare diam. Sed quam est, eleifend porttitor imperdiet sit amet, ultricies vel ipsum. Pellentesque mauris mauris, fermentum pretium ex quis, viverra mattis est. Donec laoreet sem nec arcu rhoncus lobortis. Duis id orci vel enim interdum aliquam. Integer eu ex ligula. Ut mattis nisi non malesuada ornare. In elit ligula, ultricies a aliquet eget, dictum sit amet neque. Quisque nulla sem, aliquam id molestie iaculis, consequat at augue. Nullam sollicitudin finibus eros in venenatis. Donec semper sagittis ipsum, et rhoncus magna ultricies eu. - */ -``` - -Des p-tags vides conduiraient à des chaînes vides dans le tableau retourné. Pour éviter cela, vous pouvez appeler `$web->cleanParagraphs` à la place. Cela filtrera les paragraphes vides et ne retournera que ceux qui ont du contenu. Pour accéder au premier paragraphe avec du contenu, utilisez `$web->cleanParagraphs[0]`. diff --git a/websites/fr/examples/scrape-header-tags.md b/websites/fr/examples/scrape-header-tags.md deleted file mode 100644 index d3e8e51..0000000 --- a/websites/fr/examples/scrape-header-tags.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Header%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Gratter les balises d'en-tête - -Les balises d'en-tête contiennent souvent des informations utiles sur une page Web et sur la façon dont elle s'intègre dans la structure globale du site dont elle fait partie. Les exemples suivants montrent comment accéder à des éléments d'information particuliers de la balise `` et à des collections autour de ceux-ci. - - -## Charset - -Pour accéder au charset défini, vous pouvez utiliser la méthode suivante: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Elle contient: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Imprimez le charset -echo $web->charset; // "utf-8" -``` - - -## Viewport - -Dans certains cas, comme pour la fenêtre d'affichage et les méta-mots-clés, la string représente un tableau et sera fournie comme telle: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Elle contient: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Obtenez la fenêtre d'affichage sous forme de tableau. Il doit contenir: - * - * [ - * 'width=device-width', - * 'initial-scale=1', - * 'shrink-to-fit=no', - * 'maximum-scale=1', - * 'user-scalable=no' - * ], - */ -var_dump($web->viewport); -``` - -Si vous avez besoin d'accéder à la string originale de "viewport", vous pouvez utiliser `viewportString`: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Obtenir la fenêtre d'affichage sous forme de chaîne. Imprime: - * - * "width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1, user-scalable=no" - */ -echo $web->viewportString; -``` - - -## URL canonique - -L'URL canonique, si elle est donnée, est accessible comme indiqué dans l'exemple ci-dessous: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Elle contient: - * - * - */ -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -// Imprimer l'URL canonique -echo $web->canonical; // "https://test-pages.phpscraper.de/navigation/2.html" -``` - -::: tip Conseil -Si aucun lien canonique n'est défini, la méthode renvoie `null`. -::: - - -## Content-Type - -Pour accéder au type de contenu, vous pouvez utiliser la fonctionnalité suivante: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Elle contient: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Imprimez le contentType -echo $web->contentType; // "text/html; charset=utf-8" -``` - - -## CSFR Token - -La méthode CSFR token suppose que le jeton est stocké dans une balise méta avec le nom "csrf-token". C'est la valeur par défaut pour Laravel. Vous pouvez y accéder en utilisant le code suivant: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Elle contient: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Obtenir le csrfToken -echo $web->csrfToken; // "token" -``` - - -## Balises d'en-tête combinées - -Si vous voulez accéder à toutes les méthodes mentionnées ci-dessus, utilisez la méthode `headers`. Elle est définie comme suit: - -```php -/** - * @return array - */ -public function headers() -{ - return [ - 'charset' => $this->charset(), - 'contentType' => $this->contentType(), - 'viewport' => $this->viewport(), - 'canonical' => $this->canonical(), - 'csrfToken' => $this->csrfToken(), - ]; -} -``` - -Plus d'informations sur l'accès à la [balises méta](/fr/examples/scrape-meta-tags.html). diff --git a/websites/fr/examples/scrape-images.md b/websites/fr/examples/scrape-images.md deleted file mode 100644 index 4097b57..0000000 --- a/websites/fr/examples/scrape-images.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Images&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scraping d'images - -Vous vous demandez peut-être comment scraper des photos, des images et d'autres graphiques d'un site Web à l'aide de PHPScraper. Comme pour les autres fonctionnalités, le scraping des images & photos d'un site web suit une approche similaire. Tous les graphiques tels que les images, les photos et les infographies peuvent être scrapés et analysés avec des détails tels que les attributs des balises ou seulement comme une liste d'URL. - - -## Scraping Image URLs - -L'exemple suivant analyse une page Web à la recherche d'images et renvoie les URL absolues des images sous forme de tableau. - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Cette page contient deux images: - * - * absolute path - * relative path - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * [ - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - * - * @note - * - * Double car il s'agit de deux fois la même image: - * Une fois avec un chemin relatif et une fois avec un chemin absolu. - * Les chemins relatifs sont résolus en chemins absolus par défaut. - */ -var_dump($web->images); -``` - -::: tip Conseil -Si aucune image n'est trouvée, le tableau reste vide. -::: - - -## Scraping d'images avec des détails - -Si vous avez besoin de plus de détails, les requêtes suivantes vous permettent d'accéder aux attributs de la balise image: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'absolute path', - * 'width' => null, - * 'height' => null, - * ], - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'relative path', - * 'width' => null, - * 'height' => null, - * ] - */ -var_dump($web->imagesWithDetails); -``` - -::: tip SEO -Le texte `alt` (avec le caractère [mots-clés du contenu](/fr/examples/extract-keywords.html)) est utilisé par les moteurs de recherche pour les recherches basées sur les images. Veillez à toujours le définir. -::: - - -## Attributs du scraping: Alt, largeur et hauteur - -Les attributs pour `alt`, `width` et `height` sont inclus dans l'ensemble de données détaillées. - -Si vous avez besoin de plus de données, vous devrez soit étendre la bibliothèque, soit soumettre un problème pour examen. diff --git a/websites/fr/examples/scrape-links.md b/websites/fr/examples/scrape-links.md deleted file mode 100644 index da31322..0000000 --- a/websites/fr/examples/scrape-links.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Links&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scraping Links - -Le scraping de liens fonctionne de manière très similaire ay [scraping d'images](/fr/examples/scrape-images.html). Vous pouvez récupérer une liste d'URL sans aucune information supplémentaire ainsi qu'une liste détaillée contenant `rel`, `target` ainsi que d'autres attributs. - - -## Liste de liens simples - -L'exemple suivant analyse une page Web à la recherche de liens et renvoie un tableau d'URL absolues: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Elle contient 6 liens vers placekitten.com avec des attributs différents: - * - *

                  Different ways to wrap the attributes

                  - *

                  external kitten

                  - *

                  external kitten

                  - *

                  external kitten

                  - * - *

                  Named frame/window/tab

                  - *

                  external kitten

                  - *

                  external kitten

                  - *

                  external kitten

                  - */ -$web->go('https://test-pages.phpscraper.de/links/target.html'); - -// Imprimer le nombre de liens. -echo "Cette page contient " . count($web->links) . " liens.\n\n"; - -// Boucle à travers les liens -foreach ($web->links as $link) { - echo " - " . $link . "\n"; -} - -/** - * Combiné, cela s'imprimera: - * - * Cette page contient 6 liens. - * - * - https://placekitten.com/408/287 - * - https://placekitten.com/444/333 - * - https://placekitten.com/444/321 - * - https://placekitten.com/408/287 - * - https://placekitten.com/444/333 - * - https://placekitten.com/444/321 - */ -``` - -Si la page ne doit pas contenir de liens, un tableau vide est renvoyé. - - -## Liens avec les détails - -Si vous avez besoin de plus de détails, vous pouvez y accéder de la même manière que pour les images. Voici un exemple pour accéder aux données détaillées du premier lien de la page: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Cette page contient un certain nombre de liens avec des attributs rel différents. Pour gagner de la place, ne retenez que le premier: - * - * external kitten - */ -$web->go('https://test-pages.phpscraper.de/links/rel.html'); - -// Obtenez le premier lien de la page. -$firstLink = $web->linksWithDetails[0]; - -/** - * $firstLink contient maintenant: - * - * [ - * 'url' => 'https://placekitten.com/432/287', - * 'protocol' => 'https', - * 'text' => 'external kitten', - * 'title' => null, - * 'target' => null, - * 'rel' => 'nofollow', - * 'isNofollow' => true, - * 'isUGC' => false, - * 'isNoopener' => false, - * 'isNoreferrer' => false, - * ] - */ -``` - -Si vous avez besoin de plus de données, vous devrez soit étendre la bibliothèque, soit soumettre une question pour examen. - - -## Liens internes et liens externes - -PHPScraper permet de retourner seulement des liens internes ou externes. L'exemple suivant démontre les deux: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Naviguer vers la page de test. -$web->go('https://test-pages.phpscraper.de/links/base-href.html'); - -// Obtenez la liste des liens internes (dans l'exemple, une image est liée). -var_dump($web->internalLinks); -/** - * [ - * 'https://test-pages.phpscraper.de/assets/cat.jpg' - * ] - */ - -// Obtenir la liste des liens externes -var_dump($web->externalLinks); -/** - * [ - * 'https://placekitten.com/408/287' - * ] - */ -``` diff --git a/websites/fr/examples/scrape-meta-tags.md b/websites/fr/examples/scrape-meta-tags.md deleted file mode 100644 index 857b374..0000000 --- a/websites/fr/examples/scrape-meta-tags.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Meta%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scraping Meta Tags - -L'accès aux méta-informations suit un schéma similaire à celui présenté précédemment. [balises d'en-tête](/fr/examples/scrape-header-tags.html). Vous trouverez ci-dessous une série d'exemples: - - -## Meta Author, Description et Image - -L'exemple suivant montre l'extraction de trois attributs: - -- l'Auteur Meta, -- la Meta Description et -- l'URL de la méta-image - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Elle contient: - * - * - * - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Obtenir l'information: -echo $web->author; // "Lorem ipsum" -echo $web->description; // "Lorem ipsum dolor etc." -echo $web->image; // "https://test-pages.phpscraper.de/assets/cat.jpg" -``` - - -## Mots-clés Méta - -Le méta-tag "keywords" est naturellement un tableau et sera divisé pour votre convenance: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Elle contient: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -// Vide les mots clés dans un tableau -var_dump($web->keywords); // ['one', 'two', 'three'] -``` - -Vous pouvez également accéder à la chaîne de mots-clés originale: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -// Imprimez les mots-clés sous forme de chaîne -echo $web->keywordString; // "one, two, three" -``` - -::: tip Conseil -Il s'agit uniquement des mots-clés figurant dans le métabaliseur "keyword". Vous pouvez également [extract the content keywords](/fr/examples/extract-keywords.html) en utilisant PHPScraper. -::: - - -## Balises Méta combinées - -Si vous souhaitez accéder à toutes les propriétés méta, vous pouvez utiliser la méthode `metaTags`. Elle retourne les méthodes mentionnées ci-dessus sous forme de tableau. Elle est définie comme suit: - -```php -/** - * obtenir les méta collectés sous forme de tableau - * - * @return array - */ -public function metaTags() -{ - return [ - 'author' => $this->author(), - 'image' => $this->image(), - 'keywords' => $this->keywords(), - 'description' => $this->description(), - ]; -} -``` - -Dans l'exemple ci-dessus, il serait utilisé comme suit: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -var_dump($web->metaTags); -/** - * Contient: - * - * [ - * 'Lorem ipsum', - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ['one', 'two', 'three'], - * 'Lorem ipsum dolor etc.', - * ] - */ -``` - - -## Balises Méta manquantes - -Si vous avez besoin d'accéder à une autre méta-propriété, veuillez lire l'article suivant [directives de contribution](/contributing.html) avant d'ouvrir une demande de modification ou de soumettre une [problème sur GitHub](https://github.com/spekulatius/phpscraper/issues). diff --git a/websites/fr/examples/scrape-social-media-meta-tags.md b/websites/fr/examples/scrape-social-media-meta-tags.md deleted file mode 100644 index 9d97408..0000000 --- a/websites/fr/examples/scrape-social-media-meta-tags.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Social%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scraping Social Media Meta Tags - -L'extraction des balises de partage des médias sociaux d'un site Web peut être effectuée à l'aide des méthodes suivantes. L'ensemble des résultats exacts dépend des balises fournies. Toutes les balises sont incluses, tant qu'elles sont dans l'espace de nom préfixé (par exemple `twitter:` pour les cartes Twitter). - - -## Données Open-Graph (OG) - -Il est possible de récupérer les données des graphiques ouverts: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguer vers la page de test. La page contient: - * - * - * - * - * - * - * - * - * - * @see https://test-pages.phpscraper.de/og/example.html - */ -$web->go('https://test-pages.phpscraper.de/og/example.html'); - -// Doit imprimer 'Lorem Ipsum'. -echo $web->openGraph['og:title']; - -// Doit imprimer "Lorem ipsum dolor etc.". -echo $web->openGraph['og:description']; - -// L'ensemble du jeu: -$data = $web->openGraph; - -/** - * $data contient maintenant: - * - * [ - * 'og:site_name' => 'Lorem ipsum', - * 'og:type' => 'website', - * 'og:title' => 'Lorem Ipsum', - * 'og:description' => 'Lorem ipsum dolor etc.', - * 'og:url' => 'https://test-pages.phpscraper.de/meta/lorem-ipsum.html', - * 'og:image' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - */ -``` - -::: tip Conseil -Si aucune donnée n'a été trouvée, le tableau sera retourné vide. -::: - - -## Carte Twitter - -L'analyse de la carte Twitter fonctionne de la même manière: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. La page contient la carte Twitter suivante: - * - * - * - * - * - * - * - * - * @see https://test-pages.phpscraper.de/twittercard/example.html - */ -$web->go('https://test-pages.phpscraper.de/twittercard/example.html'); - -// Devrait imprimer 'summary_large_image'. -echo $web->twitterCard['twitter:card']; - -// Doit imprimer 'Lorem Ipsum'. -echo $web->twitterCard['twitter:title']; - -// L'ensemble du jeu. -$data = $web->twitterCard; - -/** - * $data contient maintenant: - * - * [ - * 'twitter:card' => 'summary_large_image', - * 'twitter:title' => 'Lorem Ipsum', - * 'twitter:description' => 'Lorem ipsum dolor etc.', - * 'twitter:url' => 'https://test-pages.phpscraper.de/meta/lorem-ipsum.html', - * 'twitter:image' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - */ -``` - -De manière similaire à Open Graph, le tableau sera vide si aucune balise Twitter Card n'a été trouvée. diff --git a/websites/fr/examples/scrape-website-title.md b/websites/fr/examples/scrape-website-title.md deleted file mode 100644 index 9687916..0000000 --- a/websites/fr/examples/scrape-website-title.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scrape%20Website%20Title&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Scraper le titre d'un site web - -Extraire le titre d'un site Web est simple. Les exemples suivants montrent comment cela fonctionne en utilisant PHPScraper. - - -## Exemple simple - -Exemple très simple de la façon de récupérer le titre d'un site web: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Naviguer vers la page de test - celle-ci contient une étiquette de titre "Lorem Ipsum". -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Contient: - * - * Lorem Ipsum - */ - -// Récupérer le titre. Cela renverra: "Lorem Ipsum" -var_dump($web->title); -``` - - -### Titre manquant - -`null` sera retourné si le titre est manquant: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Naviguez vers la page de test - celle-ci ne contient pas de balise titre. -$web->go('https://test-pages.phpscraper.de/meta/missing.html'); - -// Récupérer le titre. Ceci retournera null. -var_dump($web->title); -``` - -Note: C'est le comportement par défaut: Si une balise n'a pas été trouvée parce qu'elle est manquante dans le HTML source, `null` sera retourné. Si un élément itérable est vide (par exemple, pour récupérer des images d'une page sans images), un tableau vide sera retourné. - - -## Caractères spéciaux - -Chargement d'un titre de site web avec Umlaute allemand - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguez vers la page de test. Elle contient: - * - * A page with plenty of German umlaute everywhere (ä ü ö) - */ -$web->go('https://test-pages.phpscraper.de/meta/german-umlaute.html'); - -// Imprimer le titre: "A page with plenty of German umlaute everywhere (ä ü ö)" -echo $web->title; -``` - -Cela devrait fonctionner de manière similaire avec tous les caractères UTF-8. - - -## Entités HTML - -Les entités HTML doivent être résolues - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Naviguer vers la page de test. Contient: - * - * Cat & Mouse - */ -$web->go('https://test-pages.phpscraper.de/meta/html-entities.html'); - -// Imprimer le titre: "Cat & Mouse" -echo $web->title; -``` - -::: tip Conseil -Les entités et les caractères spéciaux ont été pris en compte dans toute la bibliothèque. Si vous trouvez un endroit où ils ne fonctionnent pas comme prévu, veuillez signaler le problème à l'administrateur. [numéro](https://github.com/spekulatius/PHPScraper/issues). -::: diff --git a/websites/fr/misc/show-case.md b/websites/fr/misc/show-case.md deleted file mode 100644 index 2608ab7..0000000 --- a/websites/fr/misc/show-case.md +++ /dev/null @@ -1,7 +0,0 @@ -# Show Case - -En plus des [tutoriels](/fr/misc/tutorials.html), ces bibliothèques et paquets utilisent PHPScraper. Vous pouvez consulter le code pour en apprendre davantage sur les cas d'utilisation particuliers. - -- [datlechin/flarum-link-preview](https://github.com/datlechin/flarum-link-preview): Aperçu du lien pour les tableaux Flarum. - -Si vous souhaitez ajouter votre projet, veuillez soumettre une demande de modification. \ No newline at end of file diff --git a/websites/fr/misc/sponsors.md b/websites/fr/misc/sponsors.md deleted file mode 100644 index 34ad4d0..0000000 --- a/websites/fr/misc/sponsors.md +++ /dev/null @@ -1,13 +0,0 @@ -# Sponsors - -PHP Scraper es compatible con: - - - -## Devenir un sponsor - -Merci d'être intéressé par le fait de devenir un sponsor de PHP Scraper ! PHP Scraper propose des forfaits de sponsoring personnalisés en fonction de vos besoins. Veuillez [prendre contact](https://peterthaleikis.com/contact) pour en discuter les détails. - -## Support commercial - -Le support pour les applications commerciales, les licences commerciales, le développement personnalisé, etc. peut être [discuté](https://peterthaleikis.com/contact). Nous serions heureux de soutenir votre projet. \ No newline at end of file diff --git a/websites/fr/misc/support.md b/websites/fr/misc/support.md deleted file mode 100644 index 98fa979..0000000 --- a/websites/fr/misc/support.md +++ /dev/null @@ -1,13 +0,0 @@ -# Aide - -## Autres exemples - -Si vous avez besoin de plus d'exemples, consultez la section [tests](https://github.com/spekulatius/phpscraper/tree/master/tests). Ceux-ci contiennent d'autres exemples de la manière de récupérer des données sur des sites web. - -## Bugs et autres problèmes - -Si vous remarquez des bugs ou des problèmes de nature similaire, veuillez envoyer un message à l'adresse suivante [problème sur GitHub](https://github.com/spekulatius/PHPScraper/issues). N'oubliez pas d'inclure les informations détaillées permettant de reproduire le problème. - -## Support commercial - -L'assistance pour les applications commerciales, les licences commerciales, le développement personnalisé, etc. [Parlons-en ensemble](https://peterthaleikis.com/contact). diff --git a/websites/fr/misc/tutorials.md b/websites/fr/misc/tutorials.md deleted file mode 100644 index 5e570e9..0000000 --- a/websites/fr/misc/tutorials.md +++ /dev/null @@ -1,7 +0,0 @@ -# Tutoriels sur le raclage PHP - -Les tutoriels suivants utilisent PHPScraper et peuvent vous aider à en apprendre davantage sur les différentes façons d'utiliser PHPScraper. - -*Bientôt disponible* - -Veuillez noter que les tutoriels n'ont pas été révisés et peuvent être dépassés. \ No newline at end of file diff --git a/websites/misc/show-case.md b/websites/misc/show-case.md deleted file mode 100644 index 0213a4e..0000000 --- a/websites/misc/show-case.md +++ /dev/null @@ -1,7 +0,0 @@ -# Show Case - -In addition to the [tutorials](/misc/tutorials.html) these libraries and composer packages also use PHPScraper. You can review the code to learn more about the particular use cases. - -- [datlechin/flarum-link-preview](https://github.com/datlechin/flarum-link-preview): Link preview for Flarum Boards. - -If you'd like add your project please submit a PR. \ No newline at end of file diff --git a/websites/misc/sponsors.md b/websites/misc/sponsors.md deleted file mode 100644 index 384ca56..0000000 --- a/websites/misc/sponsors.md +++ /dev/null @@ -1,13 +0,0 @@ -# Sponsors - -PHP Scraper is proudly supported by: - - - -## Becoming a Sponsor - -Thank you for your interesting in becoming a supporter of PHP Scraper! PHP Scraper offers custom sponsorship packages to your needs. Please [reach out](https://peterthaleikis.com/contact) to discuss details. - -## Commercial Support - -Support for commercial applications, commercial licenses, custom development, and similar can be [discussed](https://peterthaleikis.com/contact). We are happy to support your project. diff --git a/websites/misc/support.md b/websites/misc/support.md deleted file mode 100644 index db0cbcd..0000000 --- a/websites/misc/support.md +++ /dev/null @@ -1,13 +0,0 @@ -# Support - -## More Examples - -If you are in need of further examples, check the [tests](https://github.com/spekulatius/phpscraper/tree/master/tests). These contain further examples of how to scrape data from websites. - -## Bugs and Other Issues - -If you should notice any bugs or issues of similar nature, please raise an [issue on GitHub](https://github.com/spekulatius/PHPScraper/issues). Don't forget to include the detailed information to replicate the issue. - -## Commercial Support - -Support for Commercial Applications, Commercial Licenses, Custom Development, etc. can be [discussed](https://peterthaleikis.com/contact). diff --git a/websites/misc/tutorials.md b/websites/misc/tutorials.md deleted file mode 100644 index 333b93a..0000000 --- a/websites/misc/tutorials.md +++ /dev/null @@ -1,7 +0,0 @@ -# PHP Scraping Tutorials - -The following tutorials use PHPScraper and could help learning more about various ways to use PHPScraper. - -*Coming soon* - -Please note the tutorials aren't reviewed and might be outdated. \ No newline at end of file diff --git a/websites/netlify.toml b/websites/netlify.toml deleted file mode 100644 index 8ce5adf..0000000 --- a/websites/netlify.toml +++ /dev/null @@ -1,8 +0,0 @@ -# Global settings applied to the whole site. -# See more info here: https://www.netlify.com/docs/netlify-toml-reference/ - -#[build] -# command = "yarn run build" - -[build.environment] - NODE_VERSION = "14" diff --git a/websites/package.json b/websites/package.json deleted file mode 100644 index 3e68837..0000000 --- a/websites/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "license": "UNLICENSED", - "scripts": { - "dev": "export NODE_OPTIONS=--openssl-legacy-provider && vuepress dev", - "build": "vuepress build" - }, - "dependencies": { - "@vuepress/plugin-back-to-top": "^1.5.0", - "@vuepress/plugin-pwa": "^1.5.0", - "vuepress": "^1.4.1", - "vuepress-plugin-canonical": "^1.0.0", - "vuepress-plugin-minimal-analytics": "^0.1.4", - "vuepress-plugin-seo": "^0.1.2", - "vuepress-plugin-sitemap": "^2.3.1", - "vuepress-plugin-social-share": "^1.0.0", - "vuepress-plugin-umami": "^0.0.4", - "vuepress-plugin-web-monetization": "^0.0.1" - } -} diff --git a/websites/vi/README.md b/websites/vi/README.md deleted file mode 100644 index 3fa4bb8..0000000 --- a/websites/vi/README.md +++ /dev/null @@ -1,167 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHPScraper:%20an%20highly%20opinionated%20web-interface&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -PHP Scraper: Thu thập thông tin và cào dữ liệu dễ dàng -============================================================== - -![PHP Scraper: Thu thập thông tin và cào dữ liệu dễ dàng](logo-light.png) - -*bởi [Peter Thaleikis](https://peterthaleikis.com)* - -PHPScraper là một thư viện cào dành cho PHP, đơn giản. Thư viện này sử dụng vài thư viện PHP làm cho việc lấy dữ liệu trang web dễ dàng hơn. - -Các ví dụ kể câu chuyện hay hơn nhiều. Hãy xem! - - -Ý tưởng 💡️ ----------- - -Việc truy cập và lấy các thông tin cơ bản của trang web rất phức tạp. Wrapper [Goutte](https://github.com/FriendsOfPHP/Goutte) này giúp việc này trở nên dễ dàng hơn. Nó giúp bạn tiết kiệm khỏi XPath và đồng., Cho phép bạn truy cập trực tiếp vào mọi thứ bạn cần. Hình dung lại trang web bằng PHP. - - -Nhà tài trợ 💪️ -------------- - -Dự án này được tài trợ bởi: - - - -Muốn tài trợ cho dự án này? [Liên hệ](https://peterthaleikis.com/contact). - - -Một vài ví dụ -------------- - -Dưới đây là một số ví dụ về những gì mà thư viện cào web hiện có thể làm: - -### Cào thông tin meta: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này có: - * - * - * - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Lấy thông tin: -echo $web->author; // "Lorem ipsum" -echo $web->description; // "Lorem ipsum dolor etc." -echo $web->image; // "https://test-pages.phpscraper.de/assets/cat.jpg" -``` - -Gần như mọi thông tin đều có thể lấy được trực tiếp, dưới dạng chuỗi hoặc mảng. - - -### Cào nội dung, như hình ảnh - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này có hai ảnh: - * - * absolute path - * relative path - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -var_dump($web->imagesWithDetails); -/** - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'absolute path', - * 'width' => null, - * 'height' => null, - * ], - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'relative path', - * 'width' => null, - * 'height' => null, - * ] - */ -``` - -Một số thông tin *tùy chọn* được trả về dưới dạng một mảng với các chi tiết. Đối với ví dụ này, bạn có thể lấy danh sách hình ảnh bằng `$web->images`. Điều này sẽ làm cho việc tìm kiếm trang web của bạn dễ dàng hơn. - -Có thể tìm thấy thêm code ví dụ trong các `examples` và `tests`. - - -Cài đặt ------------- - -Sử dụng [Composer](https://getcomposer.org) để cài đặt. - -### Cài bằng Composer - -```bash -composer require spekulatius/phpscraper -``` - -Sau khi cài xong, thư viện sẽ được thêm vào bởi autoloader của Composer. -After the installation is completed the package will be picked up by the Composer autoloader. Trong các ứng dụng và framework PHP điển hình như Laravel hoặc Symfony, bạn có thể bắt đầu cào ngay bây giờ. Bây giờ bạn có thể sử dụng bất kỳ ví dụ hoặc ví dụ nào được lưu ý trong thư mục `tests/`. - -### Sử dụng trong dự án PHP thuần - -Nếu bạn đang làm trong dự án PHP thuần, bạn cần phải include autoloader vào đầu tệp PHP; - -```php -require 'vendor/autoload.php'; -``` - -Nếu bạn đang sử dụng framework như Laravel, Symfony, Laminas, Phalcon hoặc CakePHP, bạn không cần làm bước này. Autoloader sẽ được đưa vào tự động. - - -Cấu hình -------------- - -Các cấu hình sau không bắt buộc. Bên dưới là các tuỳ chọn có sẵn. - -### Hỗ trợ proxy - -Nếu bạn cần sử dụng proxy, bạn có thể cấu hình proxy bằng `setConfig`: - -```php -$web->setConfig(['proxy' => 'http://user:password@127.0.0.1:3128']); -``` - -### Timeout - -Nếu bạn cần sử dụng `timeout`, bạn có thể cấu hình timeout bằng `setConfig`: - -```php -$web->setConfig(['timeout' => 15]); -``` - -Đặt thời gian chờ thành 0 sẽ vô hiệu hóa nó. - -### Tắt SSL - -Trong khi không được khuyến nghị, bạn có thể phải tắt kiểm tra SSL. Bạn có thể làm như vậy bằng cách sử dụng: - -```php -$web->setConfig(['disable_ssl' => true]); -``` - -Bạn có thể gọi `setConfig` nhiều lần. Nó lưu trữ cấu hình và hợp nhất nó với các cài đặt trước đó. Điều này cần được ghi nhớ trong trường hợp sử dụng không mong muốn khi bỏ thiết lập giá trị. - - -Tìm thấy lỗi và muốn sửa nó? Tuyệt vời! ----------------------------------- - -Trước khi bắt đầu, hãy đọc qua [hướng dẫn đóng góp](/vi/contributing.html). Mọi thắc mắc vui lòng liên hệ. - - -Tests: Đảm bảo nó hoạt động! ----------------------------- - -Đoạn code này gần như được cover bởi tests từ đầu đến cuối. Đối với điều này, các trang web đơn giản được lưu trữ dưới *https://test-pages.phpscraper.de/*, được tải và phân tích cú pháp bằng cách sử dụng [PHPUnit](https://phpunit.de/). Các bài test này cũng thích hợp làm ví dụ - xem `tests/`! - -Điều này đang được nói, có lẽ có những trường hợp cạnh không hoạt động và có thể gây ra sự cố. Nếu bạn tìm thấy một lỗi, vui lòng nêu ra một lỗi trên GitHub. diff --git a/websites/vi/contributing.md b/websites/vi/contributing.md deleted file mode 100644 index d92f83b..0000000 --- a/websites/vi/contributing.md +++ /dev/null @@ -1,26 +0,0 @@ -# Hướng dẫn đóng góp - -Trang này chứa các hướng dẫn để đóng góp cho dự án này. Xin vui lòng -xem lại các nguyên tắc này trước khi gửi bất kỳ pull request nào. - -## Pull Requests - -Quá trình kéo yêu cầu khác nhau đối với các tính năng và lỗi mới. Trước khi gửi một -kéo yêu cầu cho một tính năng mới, trước tiên bạn nên tạo sự cố với -`[Đề xuất]` trong tiêu đề. Đề xuất cũng nên mô tả tính năng mới -như các ý tưởng thực hiện. Đề xuất sau đó sẽ được xem xét và được chấp thuận -hoặc bị từ chối. Khi một đề xuất được chấp thuận, một pull request có thể được tạo -triển khai tính năng mới. Kéo các yêu cầu không tuân theo nguyên tắc này -sẽ bị đóng ngay lập tức. - -Pull request về lỗi có thể được gửi mà không tạo ra bất kỳ vấn đề đề xuất nào. nếu bạn -tin rằng bạn biết về giải pháp cho một lỗi đã được gửi trên GitHub, -xin vui lòng để lại một bình luận chi tiết sửa chữa đề xuất của bạn. - -### Yêu cầu tính năng - -Dự án này tuân theo các tiêu chuẩn mã hóa PSR-0, PSR-1 và PSR-2. - -## Nguyên tắc coding - -Dự án này tuân theo các tiêu chuẩn mã hóa PSR-0, PSR-1 và PSR-2. diff --git a/websites/vi/examples/extract-keywords.md b/websites/vi/examples/extract-keywords.md deleted file mode 100644 index 5862396..0000000 --- a/websites/vi/examples/extract-keywords.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Extract%20Keywords&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Trích xuất từ ​​khóa - -Đôi khi bạn có thể cần trích xuất các thuật ngữ và cụm từ (keywords) quan trọng trong nội dung này. PHPScraper cho phép bạn trích xuất các từ khóa của trang web một cách trực tiếp. Để làm được nó sử dụng các: - -- tiêu đề trang web, -- thẻ meta, -- tất cả heading, -- đoạn văn trên trang, -- liên kết -- thuộc tính title của ảnh - -Mặc dù các cụm từ khóa này được trích xuất, điều đó không có nghĩa là trang thực sự xếp hạng cho các từ khóa này. Quyết định cuối cùng về việc xếp hạng từ khóa của một trang web là với công cụ tìm kiếm. - -Ví dụ sau sẽ trả về danh sách tất cả các từ khóa được trích xuất từ ​​trang web: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Chuyển hướng đến trang test. -// Nó chứa 3 đoạn văn từ bài viết Wikipedia tiếng Anh cho "lorem ipsum" -$web->go('https://test-pages.phpscraper.de/content/keywords.html'); - -// số lượng từ khóa. -$keywords = $web->contentKeywords; -echo "Trang này chứa " . count($keywords) . " từ khóa.\n\n"; - -// lặp các từ khóa -foreach ($keywords as $keyword) { - echo " - " . $keyword . "\n"; -} - -/** - * Nó sẽ hiển thị: - * - * Trang này chứa 40 từ khóa. - * - * [...] - * - graphic - * - improper latin - * - introduced - * - keyword extraction tests - * - letraset transfer sheets - * - lorem ipsum - * - lorem ipsum php rake library lorem ipsum - * - lorem ipsum text - * - make - * - malorum - * - microsoft word - * - mid-1980s - * - nonsensical - * - page - * - paragraphs - * - philosopher cicero - * - php rake library - * - popular word processors including pages - * - popularized - * - removed - * - roman statesman - * - source - * [...] - */ -``` - -::: tip -Ngôn ngữ mặc định (locale) là `en_US`. Các ngôn ngữ khác có thể được truyền dưới dạng tham số. Điều này hiện chỉ hoạt động cho một số ngôn ngữ. Xem [danh sách này](https://github.com/Donatello-za/rake-php-plus#currently-supported-languages) để biết thêm chi tiết. -::: - -## Chấm điểm từ khóa - -Không phải mọi từ khóa đều có điểm số như nhau trong thuật toán xếp hạng của các công cụ tìm kiếm. Sự kết hợp của một số yếu tố và tín hiệu SEO quyết định trọng lượng mà công cụ tìm kiếm gán cho một từ. Tần suất của từ, độ dài của văn bản và các biến thể như từ đồng nghĩa có thể dẫn đến trọng số khác nhau. - -PHPScraper cho phép bạn lấy điểm số của từ khóa: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Điều hướng đến trang test. -// Nó chứa 3 đoạn văn từ bài viết Wikipedia tiếng Anh cho "lorem ipsum" -$web->go('https://test-pages.phpscraper.de/content/keywords.html'); - -// kiểm tra số lượng từ khóa. -$keywords = $web->contentKeywordsWithScores; -echo "Trang này chứa " . count($keywords) . " từ khóa.\n\n"; - -// Loop through the keywords -foreach ($keywords as $keyword => $score) { - echo sprintf(" - %s (%s)\n", $keyword, $score); -} - -/** - * Sẽ in ra: - * - * Trang này chứa 40 từ khóa. - * - * [...] - * - 1960s (1.0) - * - added (1.0) - * - adopted lorem ipsum (11.0) - * - advertisements (1.0) - * - aldus employed (4.0) - * - corrupted version (4.0) - * - graphic (1.0) - * - improper latin (4.0) - * - introduced (1.0) - * - keyword extraction tests (9.0) - * - test (1.0) - * - microsoft word (5.3333333333333) - * - english wikipedia (4.0) - * - lorem ipsum (8.0) - * - lorem ipsum text (11.0) - * [...] - */ -``` - -::: tip -Hàm PHP [similar_text](https://www.php.net/manual/en/function.similar-text.php) và [levenshtein](https://www.php.net/manual/en/function.levenshtein.php) có thể giúp bạn xác định và hợp nhất các từ khóa tương tự cũng như các biến thể lỗi đánh máy của từ khóa. [Keyword Merge](https://github.com/spekulatius/keyword-merge) là một thư viện composer để giúp phân loại các từ khóa tương tự. -::: diff --git a/websites/vi/examples/headings.md b/websites/vi/examples/headings.md deleted file mode 100644 index d7c5c31..0000000 --- a/websites/vi/examples/headings.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Headings&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Thu thập heading - -Heading hữu ích trong việc lấy ý tưởng từ nội dung của trang web. Ví dụ sau sẽ cho thấy cách lấy nó: - - - Một heading - - Tất cả heading với cấp cụ thể (e.g. `

                  `) - - Tất cả heading trên trang - -## Thu thập một heading - -Thu thập một heading đơn rất dễ dàng và được thực hiện theo ví dụ sau: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này chứa: - * - * Outline Test - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -// Print the H1 heading -echo $web->h1[0]; // "Outline Test" -``` - -::: tip -[Tiêu đề trang web](/vi/examples/scrape-website-title.html) và heading 1 (`

                  `) có thể khác nhau. Đảm bảo rằng bạn truy xuất đúng. -::: - -## Heading theo cấp độ - -Có thể có những trường hợp, trong đó bạn muốn truy xuất tất cả các heading của một cấp cụ thể. Ví dụ dưới đây cho bạn thấy cách làm như vậy: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này chứa: - * - *

                  Example 1

                  - *

                  Here would be an example.

                  - * - *

                  Example 2

                  - *

                  Here would be the second example.

                  - * - *

                  Example 3

                  - *

                  Here would be another example.

                  - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -/** - * Lấy các heading 3: - * - * [ - * 'Example 1', - * 'Example 2', - * 'Example 3' - * ] - */ -$web->h3; -``` - -Nếu không có heading nào, mảng sẽ rỗng: - -## Tất cả heading trên trang - -Để lấy toàn bộ heading trên trang, bạn có thể truy cập vào cấp độ từ 1 đến 6. Hoặc bằng cách sử dụng: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này có: - * - *

                  We are testing here!

                  - *

                  This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

                  - * - *

                  Examples

                  - *

                  There are numerous examples on the website. Please check them out to get more context on how scraping works.

                  - * - *

                  Example 1

                  - *

                  Here would be an example.

                  - * - *

                  Example 2

                  - *

                  Here would be the second example.

                  - * - *

                  Example 3

                  - *

                  Here would be another example.

                  - */ -$web->go('https://test-pages.phpscraper.de/content/online.html'); - -/** - * bây giờ $headings có: - * - * [ - * [ - * 'We are testing here!' - * ], - * [ - * 'Examples' - * ], - * [ - * 'Example 1', - * 'Example 2', - * 'Example 3', - * ], - * [], - * [], - * [] - * ] - */ -$web->headings; -``` - -Như bạn có thể thấy, phần này không chứa bất kỳ thông tin nào về cấu trúc của các heading. Nó hoàn toàn để biết những heading nào tồn tại. Nếu bạn muốn có một [outline](/vi/examples/outline.html) bạn sẽ cần sử dụng các phương pháp liên quan. diff --git a/websites/vi/examples/lists.md b/websites/vi/examples/lists.md deleted file mode 100644 index e8908fd..0000000 --- a/websites/vi/examples/lists.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Lists&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Thu thập danh sách - -Thu thập danh sách tương tự như các kiểu thu thập khác với PHPScraper: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Chuyển hướng đến trang test, trang này chứa: - * - *

                  Example 1: Unordered List

                  - *
                    - *
                  • Unordered list item 1
                  • - *
                  • Unordered list item 2
                  • - *
                  • Unordered list item with HTML
                  • - *
                  - * - *

                  Example 2: Ordered List

                  - *
                    - *
                  1. Ordered list item 1
                  2. - *
                  3. Ordered list item 2
                  4. - *
                  5. Ordered list item with HTML
                  6. - *
                  - */ -$web->go('https://test-pages.phpscraper.de/content/lists.html'); - -/** - * Chỉ danh sách không có thứ tự (
                    ) - * - * [ - * "type" => "ul", - * "children" => ... // List of childNodes - * "children_plain" => - * [ - * "Unordered list item 1" - * "Unordered list item 2" - * "Unordered list item with HTML" - * ] - * ] - */ -var_dump($web->unorderedLists); - -/** - * Chỉ danh sách có thứ tự (
                      ) - * - * [ - * "type" => "ul", - * "children" => ... // List of childNodes - * "children_plain" => - * [ - * "Ordered list item 1" - * "Ordered list item 2" - * "Ordered list item with HTML" - * ] - * ] - */ -var_dump($web->orderedLists); - - -// Cả hai danh sách kết hợp (như trên) -var_dump($web->lists); -``` - -::: warning Danh sách lồng nhau -Hiện tại, danh sách lồng nhau không được hỗ trợ. Danh sách lồng nhau được đính kèm với kết quả dưới dạng `children` để xử lý thêm. -::: diff --git a/websites/vi/examples/navigation.md b/websites/vi/examples/navigation.md deleted file mode 100644 index 25b4b2c..0000000 --- a/websites/vi/examples/navigation.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Navigate%20while%20Scraping&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Điều hướng - -Đa số là PHPScraper phân tích và thu thập nội dung trang web, thì bạn có thể sử dụng nó để điều hướng trang web. Các ví dụ bên dưới sẽ cho bạn thấy cách *lướt* quanh trang web. - -## Sử dụng URL để điều hướng - -Bạn có thể điều hướng bất kỳ URL nào. Các URL này thường được lấy từ [phân tích liên kết](/vi/examples/scrape-links.html). - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Bắt đầu bằng trang test #1. -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -// In tiêu đề để xem chúng ta thực sự ở đúng trang hay không... -echo $web->h1[0]; // 'Page #1' - -// Điều hướng đến trang test số 2 bằng cách sử dụng URL tuyệt đối. -$web->clickLink('https://test-pages.phpscraper.de/navigation/2.html'); - -// In tiêu đề để xem chúng ta thực sự ở đúng trang hay không... -echo $web->h1[0]; // 'Page #2' -``` - -## Sử dụng Anchor Texts để điều hướng - -Bạn có thể sử dụng anchor text trên trang web để *nhấn* vào liên kết để điều hướng: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Bắt đầu bằng trang test #1. -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -/** - * Trang này chứa: - * - * 2 relative - */ - -// In tiêu đề để xem chúng ta thực sự ở đúng trang hay không... -echo $web->h1[0]; // 'Page #1' - - -// We navigate to the test page #2 using the text it has on the page. -$web->clickLink('2 relative'); - -// In tiêu đề để xem chúng ta thực sự ở đúng trang hay không... -echo $web->h1[0]; // 'Page #2' -``` - -Chức năng cơ bản này sẽ cho phép bạn điều hướng các trang web. \ No newline at end of file diff --git a/websites/vi/examples/outline.md b/websites/vi/examples/outline.md deleted file mode 100644 index 279bbd3..0000000 --- a/websites/vi/examples/outline.md +++ /dev/null @@ -1,210 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scrape%20Content%20Outline&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Trích xuất outline - -Đôi khi bạn có thể chỉ muốn lấy [`đề mục`](/vi/examples/headings.html) để xử lý, ví dụ, số lượng hoặc độ dài của các đề mục có thể không phải lúc nào cũng đủ. Trong một số trường hợp, bạn có thể cần xác định cấu trúc thực tế của nội dung. Đối với những trường hợp sử dụng này, bạn có thể muốn xem xét một trong những phương pháp sau: - - - `outline` hoạt động tương tự như phương pháp `đề mục` đã đề cập trước đó. Nó cũng trả về tất cả các đề mục, nhưng nó giữ nguyên cấu trúc của tài liệu gốc và cung cấp các cấp đề mục (ví dụ: `h1`) một mình với đầu ra. - - - `outlineWithParagraphs` hoạt động tương tự như `outline`, sự khác biệt là phương thức này cũng bao gồm các đoạn văn. - - - `cleanOutlineWithParagraphs` hoạt động tương tự như `outlineWithParagraphs`, sự khác biệt bất kỳ thẻ HTML trống nào sẽ bị xóa. - -Các ví dụ sau đây sẽ giúp hiểu rõ hơn về chức năng. Có các phương pháp dành riêng cho [trích xuất từ khóa](/vi/examples/extract-keywords.html). - -## Trích xuất Outline - -Dàn ý của nội dung cho phép bạn xây dựng một chỉ mục của tài liệu. Ví dụ sau đây tạo một phiên bản đánh dấu xuống của các đề mục trong tài liệu được yêu cầu: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này chứa: - * - *

                      We are testing here!

                      - * [...] - * - *

                      Examples

                      - * [...] - * - *

                      Example 1

                      - * [...] - * - *

                      Example 2

                      - * [...] - * - *

                      Example 3

                      - * [...] - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - -/** - * $outline sẽ thành: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ] - * ] - */ -$outline = $web->outline; -``` - -## Trích xuất Outline với đoạn văn - -Phương thức sau hoạt động theo cách tương tự như `outline`, nhưng nó cũng bao gồm bất kỳ đoạn nào như một phần của mảng được trả về: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này chứa: - * - *

                      We are testing here!

                      - *

                      This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

                      - * - *

                      Examples

                      - *

                      There are numerous examples on the website. Please check them out to get more context on how scraping works.

                      - * - *

                      Example 1

                      - *

                      Here would be an example.

                      - * - *

                      Example 2

                      - *

                      Here would be the second example.

                      - * - *

                      Example 3

                      - *

                      Here would be another example.

                      - * - * - *

                      - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - -$content = $web->outlineWithParagraphs; -/** - * bây giờ $content chứa: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "p", - * "content" => "This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example." - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "p", - * "content" => "There are numerous examples on the website. Please check them out to get more context on how scraping works." - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "p", - * "content" => "Here would be an example." - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "p", - * "content" => "Here would be the second example." - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ], [ - * "tag" => "p", - * "content" => "Here would be another example." - * ], [ - * "tag" => "p", - * "content" => "" - * ] - * ] - */ -``` - -## Trích xuất Outline đã cleanup với đoạn văn - -Phương pháp sau hoạt động theo cách tương tự như `outlineWithParagraphs`, nhưng nó không bao gồm bất kỳ tiêu đề hoặc đoạn văn nào trống như một phần của mảng được trả về: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này chứa: - * - *

                      We are testing here!

                      - *

                      This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example.

                      - * - *

                      Examples

                      - *

                      There are numerous examples on the website. Please check them out to get more context on how scraping works.

                      - * - *

                      Example 1

                      - *

                      Here would be an example.

                      - * - *

                      Example 2

                      - *

                      Here would be the second example.

                      - * - *

                      Example 3

                      - *

                      Here would be another example.

                      - * - * - *

                      - */ -$web->go('https://test-pages.phpscraper.de/content/outline.html'); - -$content = $web->cleanOutlineWithParagraphs; -/** - * bây giờ $content chứa: - * - * [ - * [ - * "tag" => "h1", - * "content" => "We are testing here!" - * ], [ - * "tag" => "p", - * "content" => "This page contains an example structure to be parsed. It comes with a number of headings and nested paragraphs as an scrape example." - * ], [ - * "tag" => "h2", - * "content" => "Examples" - * ], [ - * "tag" => "p", - * "content" => "There are numerous examples on the website. Please check them out to get more context on how scraping works." - * ], [ - * "tag" => "h3", - * "content" => "Example 1" - * ], [ - * "tag" => "p", - * "content" => "Here would be an example." - * ], [ - * "tag" => "h3", - * "content" => "Example 2" - * ], [ - * "tag" => "p", - * "content" => "Here would be the second example." - * ], [ - * "tag" => "h3", - * "content" => "Example 3" - * ], [ - * "tag" => "p", - * "content" => "Here would be another example." - * ] - * ] - */ -``` diff --git a/websites/vi/examples/paragraphs.md b/websites/vi/examples/paragraphs.md deleted file mode 100644 index 6fe878d..0000000 --- a/websites/vi/examples/paragraphs.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Content&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Thu thập văn bản - -Thu thập nội dung và đa số là đoạn văn, có thể dễ dàng thu thập bằng PHPScraper. Có một phương pháp chuyên dụng để truy cập các đoạn văn (`

                      `) trên một trang web. Các ví dụ bên dưới sẽ cho chúng ta thấy lấy nội dung/văn bản trên trang web. - -## Lấy toàn bộ đoạn văn - -Ví dụ bên dưới sẽ trả về danh sách đoạn văn (thẻ `

                      `) trên trang web: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Chuyển hướng đến trang test. Nó chứa 6 đoạn văn lorem ipsum -$web->go('https://test-pages.phpscraper.de/content/paragraphs.html'); - -// kiểm tra số lượng đoạn văn. -echo "Trang này có " . count($web->paragraphs) . " đoạn văn.\n\n"; - -// vòng lặp đoạn văn -foreach ($web->paragraphs as $paragraph) { - echo " - " . $paragraph . "\n"; -} - -/** - * Sẽ in: - * - * Trang này có 6 đoạn văn. - * - * - Maecenas eget ex sit amet urna porta fermentum at ut dui. Praesent lectus arcu, hendrerit sed mi vel, commodo lacinia velit. Nullam ac velit quis ante tristique scelerisque quis non metus. Pellentesque non aliquam elit, in tincidunt purus. Vestibulum fringilla cursus risus, eget ornare dolor feugiat vitae. Sed non porta lorem, eget ornare diam. Sed quam est, eleifend porttitor imperdiet sit amet, ultricies vel ipsum. Pellentesque mauris mauris, fermentum pretium ex quis, viverra mattis est. Donec laoreet sem nec arcu rhoncus lobortis. Duis id orci vel enim interdum aliquam. Integer eu ex ligula. Ut mattis nisi non malesuada ornare. In elit ligula, ultricies a aliquet eget, dictum sit amet neque. Quisque nulla sem, aliquam id molestie iaculis, consequat at augue. Nullam sollicitudin finibus eros in venenatis. Donec semper sagittis ipsum, et rhoncus magna ultricies eu. - - * - Quisque sed dolor ut nunc accumsan lacinia. Suspendisse vel eros faucibus massa feugiat tristique. Nullam vitae scelerisque felis, malesuada hendrerit felis. Quisque eleifend mi lorem, vitae elementum dolor bibendum et. Etiam et faucibus augue. Pellentesque viverra sagittis consequat. Nulla a mollis ex. Sed vel nisl mauris. Nulla consequat dui sed pulvinar interdum. Integer vehicula molestie quam non fringilla. Duis auctor sem ut purus fringilla, in lacinia dui finibus. Nulla rhoncus semper velit, eget semper tellus suscipit eget. Vestibulum massa tellus, tristique sit amet dolor et, ullamcorper porta turpis. Vivamus eget magna lacinia, pretium sem sed, gravida libero. - - * - Ut at nunc laoreet, vestibulum mauris in, volutpat magna. Aliquam sodales orci finibus porta convallis. Vestibulum sollicitudin felis a sem consequat luctus. Sed laoreet porta quam, non pharetra massa mattis semper. Phasellus aliquet tortor ut felis scelerisque, non dapibus justo tincidunt. Donec eu pulvinar nisi, sit amet elementum massa. Nulla in odio est. In neque ligula, tristique rhoncus orci eu, egestas ullamcorper est. Integer rhoncus vel quam vel placerat. In nec metus pellentesque elit accumsan molestie eu posuere odio. Sed at eros nec turpis vestibulum eleifend vel in erat. Etiam vel metus faucibus, tempus enim nec, elementum arcu. Ut nec blandit risus. Nam sapien nunc, tristique sit amet facilisis non, maximus a nulla. Pellentesque vel posuere libero. - - * - Morbi volutpat purus odio, vitae scelerisque diam consectetur sed. Cras turpis leo, hendrerit in tempus et, convallis in nibh. Mauris molestie facilisis odio, ac egestas erat ultrices pellentesque. Donec interdum leo quis ipsum sagittis venenatis. Etiam scelerisque mi at metus ullamcorper, vitae tristique est tincidunt. Vestibulum ut congue urna, eu sagittis quam. Phasellus eget arcu sapien. In hac habitasse platea dictumst. Morbi ultrices, felis in faucibus ornare, libero augue scelerisque urna, et feugiat nisl est ut velit. Phasellus felis quam, egestas a faucibus nec, dictum eget enim. In tempor a lacus id facilisis. - - * - Donec bibendum finibus neque quis viverra. Ut ut nulla venenatis, accumsan purus nec, ullamcorper nisi. Nulla bibendum dui sit amet velit venenatis, eget viverra nibh accumsan. Fusce pharetra, sem eu mattis varius, massa leo eleifend lectus, quis tempor elit ipsum sit amet lorem. Fusce viverra dictum tortor non sodales. Phasellus at lectus quis arcu finibus imperdiet sed eleifend nulla. Donec blandit egestas nibh ac euismod. Curabitur ac pretium eros. - - * - Duis pharetra magna at dolor scelerisque, nec luctus ex pretium. Suspendisse a ante lectus. Donec vehicula condimentum turpis, in hendrerit dui suscipit non. Nullam a ultricies felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent aliquet varius mauris nec pretium. Vivamus convallis tincidunt nisi, eget scelerisque dolor facilisis vitae. Pellentesque purus neque, sollicitudin sit amet mauris id, posuere posuere mi. Etiam vitae urna vitae turpis volutpat consectetur. Quisque ultrices, ex dapibus hendrerit convallis, diam massa suscipit diam, vulputate pharetra mi orci at massa. Aliquam vel urna tempor, congue justo id, pulvinar lorem. Nulla mattis vitae justo sed molestie. Nunc fermentum fringilla nibh, id fermentum nulla. Sed tincidunt ipsum id est efficitur, molestie aliquet lacus hendrerit. Fusce et nisl eros. - */ -``` - -## Thu thập một đoạn văn - -Thu thập một đoạn văn của trang web có thể thực hiện bằng cách truy cập vào phần tử 0 của mảng. - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/content/paragraphs.html'); - -echo $web->paragraphs[0]; -/** - * In đoạn văn đầu tiên: - * - * Maecenas eget ex sit amet urna porta fermentum at ut dui. Praesent lectus arcu, hendrerit sed mi vel, commodo lacinia velit. Nullam ac velit quis ante tristique scelerisque quis non metus. Pellentesque non aliquam elit, in tincidunt purus. Vestibulum fringilla cursus risus, eget ornare dolor feugiat vitae. Sed non porta lorem, eget ornare diam. Sed quam est, eleifend porttitor imperdiet sit amet, ultricies vel ipsum. Pellentesque mauris mauris, fermentum pretium ex quis, viverra mattis est. Donec laoreet sem nec arcu rhoncus lobortis. Duis id orci vel enim interdum aliquam. Integer eu ex ligula. Ut mattis nisi non malesuada ornare. In elit ligula, ultricies a aliquet eget, dictum sit amet neque. Quisque nulla sem, aliquam id molestie iaculis, consequat at augue. Nullam sollicitudin finibus eros in venenatis. Donec semper sagittis ipsum, et rhoncus magna ultricies eu. - */ -``` -Thẻ

                      rỗng sẽ dẫn đến các chuỗi rỗng trong mảng sẽ được trả về. Để tránh điều này bạn có thể gọi `$web->cleanParagraphs`. Nó sẽ lọc các đoạn văn rỗng và chỉ trả về các đoạn văn có nội dung. Để lấy nội dung đoạn văn đầu tiên chúng ta sử dụng `$web->cleanParagraph[0]`. diff --git a/websites/vi/examples/scrape-header-tags.md b/websites/vi/examples/scrape-header-tags.md deleted file mode 100644 index 348337d..0000000 --- a/websites/vi/examples/scrape-header-tags.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Header%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Thu thập thẻ Header - -Thẻ header thường chứa các thông tin hữu ích về trang web. Các ví dụ dưới đây sẽ cho thấy cách lấy các thông tin cụ thể từ thẻ `head`. - -## Charset - -Để lấy `charset` đã khai báo, bạn có thể sử dụng phương thức sau: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này có: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// In charset -echo $web->charset; // "utf-8" -``` - -## Viewport - -Trong vài trường hợp, như viewport và các từ khóa meta, chuỗi sẽ được chuêynr thành mảng và được cung cấp như sau: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này có: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Lấy viewport dưới dạng mạng, nó sẽ in: - * - * [ - * 'width=device-width', - * 'initial-scale=1', - * 'shrink-to-fit=no', - * 'maximum-scale=1', - * 'user-scalable=no' - * ], - */ -var_dump($web->viewport); -``` - -Nếu bạn cần lấy chuỗi gốc của "viewport", bạn có thể sử dụng `viewportString`: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Lấy viewport dưới dạng string, nó sẽ in: - * - * "width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1, user-scalable=no" - */ -echo $web->viewportString; -``` - -## Canonical URL - -Nếu URL chuẩn được tìm tháy, có thể lấy theo ví dụ bên dưới: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này có: - * - * - */ -$web->go('https://test-pages.phpscraper.de/navigation/1.html'); - -// In URL canonical -echo $web->canonical; // "https://test-pages.phpscraper.de/navigation/2.html" -``` - -::: tip -Nếu không có liên kết chuẩn nào, phương thức sẽ trả về `null`. -::: - -## Content-Type - -Bạn có thể lấy kiểu nội dung của trang web bằng cách sử dụng `contentType`: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này có: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// In contentType -echo $web->contentType; // "text/html; charset=utf-8" -``` - -## CSFR Token - -Đối với Laravel, mã token CSRF thường nằm trong thẻ meta có tên là `csrf-token`. Bạn có thể lấy nó bằng cách sử dụng `csrfToken`: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này có: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Lấy csrfToken -echo $web->csrfToken; // "token" -``` - -## Kết hợp các thẻ header lại - -Nếu bạn muốn lấy toàn bộ các thẻ header đã nói bên trên bằng phương thức `headers()`. Có thể làm theo như sau: - -```php -/** - * @return array - */ -public function headers() -{ - return [ - 'charset' => $this->charset(), - 'contentType' => $this->contentType(), - 'viewport' => $this->viewport(), - 'canonical' => $this->canonical(), - 'csrfToken' => $this->csrfToken(), - ]; -} -``` - -Xem thêm thông tin về cách lấy [thẻ meta](/vi/examples/scrape-meta-tags.html). diff --git a/websites/vi/examples/scrape-images.md b/websites/vi/examples/scrape-images.md deleted file mode 100644 index 86d006e..0000000 --- a/websites/vi/examples/scrape-images.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Images&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Thu thập hình ảnh - -Bạn có thể tự hỏi làm thế nào để lấy hình ảnh từ một trang web bằng cách sử dụng PHPScraper. Cũng giống các chức năng khác, thu thập hình ảnh từ một trang web theo cách tiếp cận tương tự. Tất cả hình ảnh có thể được lấy và phân tích cú pháp cùng với các chi tiết như thuộc tính thẻ hoặc chỉ dưới dạng danh sách URL. - -## Thu thập liên kết hình ảnh - -Ví dụ sau đây sẽ trả về các hình ảnh trên trang web dưới dạng mảng URL: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này có 2 ảnh: - * - * absolute path - * relative path - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * [ - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - * - * @note - * - * Có hai cái vì hai ảnh giống nhau: - * Một ảnh đường dẫn tuyệt đối và một ảnh tương đối. - * Các đường dẫn tương đối sẽ đổi thành đường dẫn tuyệt đối. - */ -var_dump($web->images); -``` - -::: tip -Nếu không có hình ảnh nào, mảng sẽ bị rỗng. -::: - -## Thu thập hình ảnh với thông tin chi tiết - -Nếu bạn muốn lấy thông tin chi tiết về hình ảnh, ví dụ sau sẽ lấy toàn bộ thuộc tính có trong thẻ `img`: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'absolute path', - * 'width' => null, - * 'height' => null, - * ], - * [ - * 'url' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * 'alt' => 'relative path', - * 'width' => null, - * 'height' => null, - * ] - */ -var_dump($web->imagesWithDetails); -``` - -::: tip SEO -Thuộc tính `alt` (với [từ khóa trong nội dung](/vi/examples/extract-keywords.html)) được các công cụ tìm kiếm sử dụng cho các tìm kiếm dựa trên hình ảnh. -::: - -## Lấy các thông tin còn thiếu - -Nếu bạn muốn lấy thêm các thông tin khác, bạn có thể tạo một pull request hoặc issue trên github về vấn đề này. diff --git a/websites/vi/examples/scrape-links.md b/websites/vi/examples/scrape-links.md deleted file mode 100644 index 297674e..0000000 --- a/websites/vi/examples/scrape-links.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Links&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Thu thập liên kết - -Thu thập liên kết hoạt động tương tự như [thu thập hình ảnh](/vi/examples/scrape-images.html. Bạn có thể lấy danh sách URL mà không có bất kỳ thông tin bổ sung nào cũng như danh sách chi tiết chứa `rel`, ` target` hay các thuộc tính khác. - -## Danh sách liên kết đơn giản - -Ví dụ sau phân tích trang web cho các liên kết và trả về một loạt các URL tuyệt đối: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Có 6 liên kết placekitten.com với các thuộc tính khác nhau: - * - *

                      Different ways to wrap the attributes

                      - *

                      external kitten

                      - *

                      external kitten

                      - *

                      external kitten

                      - * - *

                      Named frame/window/tab

                      - *

                      external kitten

                      - *

                      external kitten

                      - *

                      external kitten

                      - */ -$web->go('https://test-pages.phpscraper.de/links/target.html'); - -// Số lượng liên kết. -echo "This page contains " . count($web->links) . " links.\n\n"; - -// Lặp qua các liên kết -foreach ($web->links as $link) { - echo " - " . $link . "\n"; -} - -/** - * Kết hợp điều này sẽ in ra: - * - * This page contains 6 links. - * - * - https://placekitten.com/408/287 - * - https://placekitten.com/444/333 - * - https://placekitten.com/444/321 - * - https://placekitten.com/408/287 - * - https://placekitten.com/444/333 - * - https://placekitten.com/444/321 - */ -``` - -Nếu trang không được chứa bất kỳ liên kết nào, một mảng trống sẽ được trả về. - -## Liên kết và chi tiết - -Nếu bạn cần thêm thông tin chi tiết, bạn có thể truy cập chúng theo cách tương tự như trên hình ảnh. Dưới đây là ví dụ để truy cập dữ liệu chi tiết của liên kết đầu tiên trên trang: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này chứa một số liên kết với các thuộc tính rel khác nhau. Để tiết kiệm dung lượng, chỉ lấy link đầu tiên: - * - * external kitten - */ -$web->go('https://test-pages.phpscraper.de/links/rel.html'); - -// Lấy liên kết đầu tiên trên trang. -$firstLink = $web->linksWithDetails[0]; - -/** - * bây giờ $firstLink có: - * - * [ - * 'url' => 'https://placekitten.com/432/287', - * 'protocol' => 'https', - * 'text' => 'external kitten', - * 'title' => null, - * 'target' => null, - * 'rel' => 'nofollow', - * 'isNofollow' => true, - * 'isUGC' => false, - * 'isNoopener' => false, - * 'isNoreferrer' => false, - * ] - */ -``` - -Nếu bạn yêu cầu nhiều dữ liệu hơn, bạn sẽ cần phải mở rộng thư viện hoặc gửi issue để cùng thảo luận. - -## Liên kết nội bộ và liên kết bên ngoài - -PHPScraper chỉ cho phép trả về các liên kết bên trong hoặc bên ngoài. Xem các vị dụ sau: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Điều hướng đến trang test. -$web->go('https://test-pages.phpscraper.de/links/base-href.html'); - -// Lấy tất cả liên kết nội bộ (trong ví dụ một hình ảnh được liên kết) -var_dump($web->internalLinks); -/** - * [ - * 'https://test-pages.phpscraper.de/assets/cat.jpg' - * ] - */ - -// Lấy tất cả liên kết bên ngoài -var_dump($web->externalLinks); -/** - * [ - * 'https://placekitten.com/408/287' - * ] - */ -``` diff --git a/websites/vi/examples/scrape-meta-tags.md b/websites/vi/examples/scrape-meta-tags.md deleted file mode 100644 index 780d06b..0000000 --- a/websites/vi/examples/scrape-meta-tags.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Meta%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Thu thập thẻ Meta - -Việc lấy thẻ meta cũng giống như [thẻ header](/vi/examples/scrape-header-tags.html). Bên dưới là một vài ví dụ: - -## Thẻ meta Author, Description và Image - -Ví dụ bên dưới sẽ lấy ba thuộc tính: - -- thẻ Meta Author, -- thẻ Meta Description and -- thẻ Meta Image URL - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này chứa: - * - * - * - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -// Lấy thông tin: -echo $web->author; // "Lorem ipsum" -echo $web->description; // "Lorem ipsum dolor etc." -echo $web->image; // "https://test-pages.phpscraper.de/assets/cat.jpg" -``` - -## Meta Keywords - -Thẻ meta keywords là một mảng và sẽ được phân chia tùy theo mong muốn của bạn: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này chứa: - * - * - */ -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -// in các từ khóa dưới dạng một mảng -var_dump($web->keywords); // ['one', 'two', 'three'] -``` - -Bạn có thể lấy chuỗi keywords gốc: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -// In các từ khóa dưới dạng chuỗi -echo $web->keywordString; // "one, two, three" -``` - -::: tip -Điều này chỉ đề cập đến các từ khóa trong thẻ meta "keywords". Bạn cũng có thể sử dụng PHPScraper để [lấy các từ khóa nội dung](/vi/examples/extract-keywords.html)). -::: - -## Kết hợp các thẻ meta - -Nếu bạn muốn lấy toàn bộ thuộc tính thẻ meta, bạn có thể tạo mới và sử dụng phương thức `metaTags`. Nó sẽ trả về các phương thức đã nhắc bên trên dưới dạng mảng: - -```php -/** - * lấy meta được thu thập dưới dạng một mảng - * - * @return array - */ -public function metaTags() -{ - return [ - 'author' => $this->author(), - 'image' => $this->image(), - 'keywords' => $this->keywords(), - 'description' => $this->description(), - ]; -} -``` - -Từ ví dụ trên sẽ được sử dụng như sau: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; -$web->go('https://test-pages.phpscraper.de/meta/keywords/parse-spaces.html'); - -var_dump($web->metaTags); -/** - * Sẽ in: - * - * [ - * 'Lorem ipsum', - * 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ['one', 'two', 'three'], - * 'Lorem ipsum dolor etc.', - * ] - */ -``` - -## Các thẻ Meta bị thiếu - -Nếu bạn cần lấy thuộc tính thẻ meta khác, vui lòng đọc [contribution guidelines](/vi/contributing.html) trước khi tạo pull request hoặc [issue trên github](https://github.com/spekulatius/phpscraper/issues). diff --git a/websites/vi/examples/scrape-social-media-meta-tags.md b/websites/vi/examples/scrape-social-media-meta-tags.md deleted file mode 100644 index 4209597..0000000 --- a/websites/vi/examples/scrape-social-media-meta-tags.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scraping%20Social%20Tags&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Thu thập thẻ Meta mạng xã hội - -Thu thập các thẻ meta chia sẻ mạng xã hội từ trang web bằng các phương thức sau. Kết quả phụ thuộc vào thẻ được cung cấp. Tất cả các thẻ đều được bao gồm, miễn là chúng nằm trong không gian tên có tiền tố (ví dụ: `twitter` dành cho Twitter Card). - -## Dữ liệu Open-Graph (OG) - -Lấy dữ liệu open-graph có thể làm như sau: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này chứa: - * - * - * - * - * - * - * - * - * - * @see https://test-pages.phpscraper.de/og/example.html - */ -$web->go('https://test-pages.phpscraper.de/og/example.html'); - -// Sẽ in ra 'Lorem Ipsum' -echo $web->openGraph['og:title']; - -// Sẽ in ra 'Lorem ipsum dolor etc.' -echo $web->openGraph['og:description']; - -// toàn bộ: -$data = $web->openGraph; - -/** - * bây giờ $data có: - * - * [ - * 'og:site_name' => 'Lorem ipsum', - * 'og:type' => 'website', - * 'og:title' => 'Lorem Ipsum', - * 'og:description' => 'Lorem ipsum dolor etc.', - * 'og:url' => 'https://test-pages.phpscraper.de/meta/lorem-ipsum.html', - * 'og:image' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - */ -``` - -::: tip -Nếu không có dữ liệu, mạng sẽ trả về rỗng. -::: - -## Twitter Card - -Phân tích cú pháp Twitter Card hoạt động tương tự - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Chuyển hướng đến trang test. Trang chứa các Twitter Card như sau: - * - * - * - * - * - * - * - * - * @see https://test-pages.phpscraper.de/twittercard/example.html - */ -$web->go('https://test-pages.phpscraper.de/twittercard/example.html'); - -// In ra 'summary_large_image' -echo $web->twitterCard['twitter:card']; - -// In ra 'Lorem Ipsum' -echo $web->twitterCard['twitter:title']; - -// Toàn bộ. -$data = $web->twitterCard; - -/** - * $data chứa: - * - * [ - * 'twitter:card' => 'summary_large_image', - * 'twitter:title' => 'Lorem Ipsum', - * 'twitter:description' => 'Lorem ipsum dolor etc.', - * 'twitter:url' => 'https://test-pages.phpscraper.de/meta/lorem-ipsum.html', - * 'twitter:image' => 'https://test-pages.phpscraper.de/assets/cat.jpg', - * ] - */ -``` - -Tương tự như Open Graph, mảng sẽ trống nếu không tìm thấy thẻ Twitter Card. diff --git a/websites/vi/examples/scrape-website-title.md b/websites/vi/examples/scrape-website-title.md deleted file mode 100644 index 5a03391..0000000 --- a/websites/vi/examples/scrape-website-title.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -image: https://api.imageee.com/bold?text=PHP:%20Scrape%20Website%20Title&bg_image=https://images.unsplash.com/photo-1542762933-ab3502717ce7 ---- - -# Thu thập tiêu đề trang web - -Lấy tiêu đề từ một trang web rất đơn giản. Các ví dụ sau đây cho thấy nó hoạt động như thế nào khi sử dụng PHPScraper. - -## Ví dụ đơn giản - -Ví dụ rất đơn giản về cách lấy tiêu đề của một trang web: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Điều hướng đến trang test - trang này có chứa thẻ title "Lorem Ipsum" -$web->go('https://test-pages.phpscraper.de/meta/lorem-ipsum.html'); - -/** - * Trang này có: - * - * Lorem Ipsum - */ - -// Lấy tiêu đề. Sẽ trả về: "Lorem Ipsum" -var_dump($web->title); -``` - - -## Không có tiêu đề - -`null` sẽ được trả về nếu tiêu đề không có: - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -// Điều hướng đến trang test - trang này không có thẻ title. -$web->go('https://test-pages.phpscraper.de/meta/missing.html'); - -// Lấy tiêu đề. Sẽ trả về null -var_dump($web->title); -``` - -Ghi chú: Đây là hành vi mặc định: Nếu không tìm thấy thẻ vì thẻ bị thiếu trong mã nguồn HTML, thì `null` sẽ được trả về. Nếu một mục có thể lặp lại trống (ví dụ: cắt các hình ảnh từ một trang không có hình ảnh), một mảng trống sẽ được trả về. - -## Ký tự đặc biệt - -Lấy tiêu đề trang web bằng tiếng Đức Umlaut - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này chứa: - * - * A page with plenty of German umlaute everywhere (ä ü ö) - */ -$web->go('https://test-pages.phpscraper.de/meta/german-umlaute.html'); - -// In ra title: "A page with plenty of German umlaute everywhere (ä ü ö)" -echo $web->title; -``` - -Nó cũng hoạt động theo cách tương tự với bất kỳ ký tự UTF-8 nào. - -## Thực thể HTML - -Các thực thể HTML sẽ được giải quyết - -```php -$web = new \Spekulatius\PHPScraper\PHPScraper; - -/** - * Điều hướng đến trang test. Trang này chứa: - * - * Cat & Mouse - */ -$web->go('https://test-pages.phpscraper.de/meta/html-entities.html'); - -// Sẽ in ra: "Cat & Mouse" -echo $web->title; -``` - -::: tip -Các thực thể và ký tự đặc biệt đã được duyệt toàn bộ thư viện. Nếu bạn tìm thấy một nơi mà những thứ này không hoạt động như mong đợi, vui lòng gửi [issue](https://github.com/spekulatius/PHPScraper/issues). -::: diff --git a/websites/vi/misc/show-case.md b/websites/vi/misc/show-case.md deleted file mode 100644 index c502df1..0000000 --- a/websites/vi/misc/show-case.md +++ /dev/null @@ -1,7 +0,0 @@ -# Show Case - -Ngoài [hướng dẫn](/vi/misc/tutorials.html) ra còn có các thư viện và composer package cũng đang sử dụng PHPScraper. Bạn có thể xem lại code để tìm hiểu thêm về các trường hợp sử dụng cụ thể. - -- [datlechin/flarum-link-preview](https://github.com/datlechin/flarum-link-preview): Link preview cho Flarum. - -Nếu bạn muốn thêm dự án của mình, vui lòng gửi PR. diff --git a/websites/vi/misc/sponsors.md b/websites/vi/misc/sponsors.md deleted file mode 100644 index f1d9b55..0000000 --- a/websites/vi/misc/sponsors.md +++ /dev/null @@ -1,13 +0,0 @@ -# Tài trợ - -PHP Scraper được hỗ trợ bởi: - - - -## Trở thành nhà tài trợ - -Cảm ơn bạn đã quan tâm đến việc trở thành nhà tài trợ PHP Scraper! PHP Scraper cung cấp các gói tài trợ tùy chỉnh theo nhu cầu của bạn. Vui lòng [liên hệ](https://peterthaleikis.com/contact) để trao đổi chi tiết. - -## Hỗ trợ thương mại - -Hỗ trợ cho các ứng dụng thương mại, giấy phép thương mại, phát triển tùy chỉnh và tương tự có thể được [thảo luận](https://peterthaleikis.com/contact). Chúng tôi rất vui khi được hỗ trợ dự án của bạn. diff --git a/websites/vi/misc/support.md b/websites/vi/misc/support.md deleted file mode 100644 index fa68568..0000000 --- a/websites/vi/misc/support.md +++ /dev/null @@ -1,13 +0,0 @@ -# Ủng hộ - -## Thêm ví dụ - -Nếu bạn cần thêm các ví dụ, hãy kiểm tra [tests](https://github.com/spekulatius/phpscraper/tree/master/tests). Có các ví dụ khác về cách thu thập dữ liệu từ các trang web. - -## Bug và các vấn đề khác - -Nếu bạn nhận thấy bất kỳ lỗi hoặc vấn đề nào có tính chất tương tự, vui lòng nêu [issue trên GitHub](https://github.com/spekulatius/PHPScraper/issues). Đừng quên bao gồm thông tin chi tiết để tái tạo vấn đề. - -## Hỗ trợ thương mại - -Hỗ trợ cho các ứng dụng thương mại, giấy phép thương mại, phát triển tùy chỉnh, v.v. có thể được [trao đổi](https://peterthaleikis.com/contact). diff --git a/websites/vi/misc/tutorials.md b/websites/vi/misc/tutorials.md deleted file mode 100644 index 5790d09..0000000 --- a/websites/vi/misc/tutorials.md +++ /dev/null @@ -1,7 +0,0 @@ -# Hướng dẫn Scraping PHP - -Các hướng dẫn sau sử dụng PHPScraper và có thể giúp tìm hiểu thêm về các cách khác nhau để sử dụng PHPScraper. - -*Sắp có* - -Xin lưu ý rằng các hướng dẫn không được xem xét và có thể đã lỗi thời. diff --git a/websites/yarn.lock b/websites/yarn.lock deleted file mode 100644 index 0092f91..0000000 --- a/websites/yarn.lock +++ /dev/null @@ -1,8944 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" - integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== - -"@babel/core@^7.11.0", "@babel/core@^7.8.4": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" - integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.2" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-module-transforms" "^7.20.2" - "@babel/helpers" "^7.20.1" - "@babel/parser" "^7.20.2" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/generator@^7.20.1", "@babel/generator@^7.20.2": - version "7.20.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.4.tgz#4d9f8f0c30be75fd90a0562099a26e5839602ab8" - integrity sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA== - dependencies: - "@babel/types" "^7.20.2" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" - integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.9.6": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" - integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== - dependencies: - "@babel/compat-data" "^7.20.0" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz#3c08a5b5417c7f07b5cf3dfb6dc79cbec682e8c2" - integrity sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.19.1" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b" - integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.1.0" - -"@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" - integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-explode-assignable-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" - integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" - integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-member-expression-to-functions@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" - integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.8.3": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" - integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" - -"@babel/helper-optimise-call-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" - integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" - integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== - -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" - integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" - integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.0" - -"@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" - integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== - dependencies: - "@babel/types" "^7.20.2" - -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" - integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== - dependencies: - "@babel/types" "^7.20.0" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== - -"@babel/helper-wrap-function@^7.18.9": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz#89f18335cff1152373222f76a4b37799636ae8b1" - integrity sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg== - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/helpers@^7.20.1": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.1.tgz#2ab7a0fcb0a03b5bf76629196ed63c2d7311f4c9" - integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.0" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.18.10", "@babel/parser@^7.18.4", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2": - version "7.20.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2" - integrity sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" - integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" - integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - -"@babel/plugin-proposal-async-generator-functions@^7.20.1": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz#352f02baa5d69f4e7529bdac39aaa02d41146af9" - integrity sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.18.6", "@babel/plugin-proposal-class-properties@^7.8.3": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" - integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-decorators@^7.8.3": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.2.tgz#1c6c32b2a44b154ebeec2bb534f9eaebdb541fb6" - integrity sha512-nkBH96IBmgKnbHQ5gXFrcmez+Z9S2EIDKDQGp005ROqBigc88Tky4rzCnlP/lnlj245dCEQl4/YyV0V1kYh5dw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.20.2" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-replace-supers" "^7.19.1" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/plugin-syntax-decorators" "^7.19.0" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" - integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" - integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" - integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" - integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz#a556f59d555f06961df1e572bb5eca864c84022d" - integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ== - dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.1" - -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" - integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" - integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" - integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz#5f13d1d8fce96951bea01a10424463c9a5b3a599" - integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" - integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.8.3": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-arrow-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-block-scoped-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" - integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-block-scoping@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz#f59b1767e6385c663fd0bce655db6ca9c8b236ed" - integrity sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-classes@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz#c0033cf1916ccf78202d04be4281d161f6709bb2" - integrity sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-replace-supers" "^7.19.1" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" - integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-destructuring@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz#c23741cfa44ddd35f5e53896e88c75331b8b2792" - integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" - integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-duplicate-keys@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" - integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-exponentiation-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" - integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" - integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" - integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== - dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" - integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-member-expression-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" - integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-modules-amd@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz#aca391801ae55d19c4d8d2ebfeaa33df5f2a2cbd" - integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg== - dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-modules-commonjs@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c" - integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ== - dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-simple-access" "^7.19.4" - -"@babel/plugin-transform-modules-systemjs@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz#59e2a84064b5736a4471b1aa7b13d4431d327e0d" - integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ== - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-identifier" "^7.19.1" - -"@babel/plugin-transform-modules-umd@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" - integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888" - integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-new-target@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" - integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-object-super@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" - integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.20.1": - version "7.20.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz#7b3468d70c3c5b62e46be0a47b6045d8590fb748" - integrity sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-property-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" - integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-regenerator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" - integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - regenerator-transform "^0.15.0" - -"@babel/plugin-transform-reserved-words@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" - integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-runtime@^7.11.0": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194" - integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - semver "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" - integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-spread@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" - integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - -"@babel/plugin-transform-sticky-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" - integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-template-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" - integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typeof-symbol@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" - integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-escapes@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" - integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" - integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/preset-env@^7.11.0": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" - integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== - dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.20.1" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.20.2" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.20.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.20.2" - "@babel/plugin-transform-classes" "^7.20.2" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.20.2" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.19.6" - "@babel/plugin-transform-modules-commonjs" "^7.19.6" - "@babel/plugin-transform-modules-systemjs" "^7.19.6" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.20.1" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.19.0" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.20.2" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - core-js-compat "^3.25.1" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/runtime@^7.11.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.8.4": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9" - integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== - dependencies: - regenerator-runtime "^0.13.10" - -"@babel/template@^7.0.0", "@babel/template@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" - integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.1" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.1" - "@babel/types" "^7.20.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.4.4": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842" - integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.0.0": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/connect-history-api-fallback@*": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" - integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - version "4.17.31" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" - integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*": - version "4.17.14" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" - integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/highlight.js@^9.7.0": - version "9.12.4" - resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.12.4.tgz#8c3496bd1b50cc04aeefd691140aa571d4dbfa34" - integrity sha512-t2szdkwmg2JJyuCM20e8kR2X59WCE5Zkl4bzm1u1Oukjm79zpbiAv+QjnwLnuuV0WHEcX2NgUItu0pAMKuOPww== - -"@types/http-proxy@^1.17.5": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" - integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== - dependencies: - "@types/node" "*" - -"@types/json-schema@^7.0.5": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/linkify-it@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" - integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== - -"@types/markdown-it@^10.0.0": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-10.0.3.tgz#a9800d14b112c17f1de76ec33eff864a4815eec7" - integrity sha512-daHJk22isOUvNssVGF2zDnnSyxHhFYhtjeX4oQaKD6QzL3ZR1QSgiD1g+Q6/WSWYVogNXYDXODtbgW/WiFCtyw== - dependencies: - "@types/highlight.js" "^9.7.0" - "@types/linkify-it" "*" - "@types/mdurl" "*" - highlight.js "^9.7.0" - -"@types/mdurl@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" - integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== - -"@types/mime@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== - -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - -"@types/node@*": - version "18.11.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" - integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== - -"@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== - -"@types/qs@*": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/serve-static@*": - version "1.15.0" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" - integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== - dependencies: - "@types/mime" "*" - "@types/node" "*" - -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/tapable@^1": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" - integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== - -"@types/uglify-js@*": - version "3.17.1" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5" - integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g== - dependencies: - source-map "^0.6.1" - -"@types/webpack-dev-server@^3": - version "3.11.6" - resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz#d8888cfd2f0630203e13d3ed7833a4d11b8a34dc" - integrity sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ== - dependencies: - "@types/connect-history-api-fallback" "*" - "@types/express" "*" - "@types/serve-static" "*" - "@types/webpack" "^4" - http-proxy-middleware "^1.0.0" - -"@types/webpack-sources@*": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" - integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.7.3" - -"@types/webpack@^4": - version "4.41.33" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc" - integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== - dependencies: - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - anymatch "^3.0.0" - source-map "^0.6.0" - -"@vue/babel-helper-vue-jsx-merge-props@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz#8d53a1e21347db8edbe54d339902583176de09f2" - integrity sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA== - -"@vue/babel-helper-vue-transform-on@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc" - integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== - -"@vue/babel-plugin-jsx@^1.0.3": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz#0c5bac27880d23f89894cd036a37b55ef61ddfc1" - integrity sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - "@vue/babel-helper-vue-transform-on" "^1.0.2" - camelcase "^6.0.0" - html-tags "^3.1.0" - svg-tags "^1.0.0" - -"@vue/babel-plugin-transform-vue-jsx@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz#4d4b3d46a39ea62b7467dd6e26ce47f7ceafb2fe" - integrity sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0" - html-tags "^2.0.0" - lodash.kebabcase "^4.1.1" - svg-tags "^1.0.0" - -"@vue/babel-preset-app@^4.1.2": - version "4.5.19" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.5.19.tgz#baee457da0065c016f74fac4149f7c97631ba5a7" - integrity sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q== - dependencies: - "@babel/core" "^7.11.0" - "@babel/helper-compilation-targets" "^7.9.6" - "@babel/helper-module-imports" "^7.8.3" - "@babel/plugin-proposal-class-properties" "^7.8.3" - "@babel/plugin-proposal-decorators" "^7.8.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.11.0" - "@babel/preset-env" "^7.11.0" - "@babel/runtime" "^7.11.0" - "@vue/babel-plugin-jsx" "^1.0.3" - "@vue/babel-preset-jsx" "^1.2.4" - babel-plugin-dynamic-import-node "^2.3.3" - core-js "^3.6.5" - core-js-compat "^3.6.5" - semver "^6.1.0" - -"@vue/babel-preset-jsx@^1.2.4": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz#f4914ba314235ab097bc4372ed67473c0780bfcc" - integrity sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA== - dependencies: - "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" - "@vue/babel-sugar-composition-api-inject-h" "^1.4.0" - "@vue/babel-sugar-composition-api-render-instance" "^1.4.0" - "@vue/babel-sugar-functional-vue" "^1.4.0" - "@vue/babel-sugar-inject-h" "^1.4.0" - "@vue/babel-sugar-v-model" "^1.4.0" - "@vue/babel-sugar-v-on" "^1.4.0" - -"@vue/babel-sugar-composition-api-inject-h@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz#187e1389f8871d89ece743bb50aed713be9d6c85" - integrity sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-composition-api-render-instance@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz#2c1607ae6dffdab47e785bc01fa45ba756e992c1" - integrity sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-functional-vue@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz#60da31068567082287c7337c66ef4df04e0a1029" - integrity sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-inject-h@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz#bf39aa6631fb1d0399b1c49b4c59e1c8899b4363" - integrity sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-v-model@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz#a51d986609f430c4f70ada3a93cc560a2970f720" - integrity sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" - camelcase "^5.0.0" - html-tags "^2.0.0" - svg-tags "^1.0.0" - -"@vue/babel-sugar-v-on@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz#43b7106a9672d8cbeefc0eb8afe1d376edc6166e" - integrity sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" - camelcase "^5.0.0" - -"@vue/compiler-sfc@2.7.14": - version "2.7.14" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz#3446fd2fbb670d709277fc3ffa88efc5e10284fd" - integrity sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA== - dependencies: - "@babel/parser" "^7.18.4" - postcss "^8.4.14" - source-map "^0.6.1" - -"@vue/component-compiler-utils@^3.1.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz#f9f5fb53464b0c37b2c8d2f3fbfe44df60f61dc9" - integrity sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ== - dependencies: - consolidate "^0.15.1" - hash-sum "^1.0.2" - lru-cache "^4.1.2" - merge-source-map "^1.1.0" - postcss "^7.0.36" - postcss-selector-parser "^6.0.2" - source-map "~0.6.1" - vue-template-es2015-compiler "^1.9.0" - optionalDependencies: - prettier "^1.18.2 || ^2.0.0" - -"@vuepress/core@1.9.7": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-1.9.7.tgz#a23388377f84322b933fc97b6cca32a90d8f5ce2" - integrity sha512-u5eb1mfNLV8uG2UuxlvpB/FkrABxeMHqymTsixOnsOg2REziv9puEIbqaZ5BjLPvbCDvSj6rn+DwjENmBU+frQ== - dependencies: - "@babel/core" "^7.8.4" - "@vue/babel-preset-app" "^4.1.2" - "@vuepress/markdown" "1.9.7" - "@vuepress/markdown-loader" "1.9.7" - "@vuepress/plugin-last-updated" "1.9.7" - "@vuepress/plugin-register-components" "1.9.7" - "@vuepress/shared-utils" "1.9.7" - "@vuepress/types" "1.9.7" - autoprefixer "^9.5.1" - babel-loader "^8.0.4" - bundle-require "2.1.8" - cache-loader "^3.0.0" - chokidar "^2.0.3" - connect-history-api-fallback "^1.5.0" - copy-webpack-plugin "^5.0.2" - core-js "^3.6.4" - cross-spawn "^6.0.5" - css-loader "^2.1.1" - esbuild "0.14.7" - file-loader "^3.0.1" - js-yaml "^3.13.1" - lru-cache "^5.1.1" - mini-css-extract-plugin "0.6.0" - optimize-css-assets-webpack-plugin "^5.0.1" - portfinder "^1.0.13" - postcss-loader "^3.0.0" - postcss-safe-parser "^4.0.1" - toml "^3.0.0" - url-loader "^1.0.1" - vue "^2.6.10" - vue-loader "^15.7.1" - vue-router "^3.4.5" - vue-server-renderer "^2.6.10" - vue-template-compiler "^2.6.10" - vuepress-html-webpack-plugin "^3.2.0" - vuepress-plugin-container "^2.0.2" - webpack "^4.8.1" - webpack-chain "^6.0.0" - webpack-dev-server "^3.5.1" - webpack-merge "^4.1.2" - webpackbar "3.2.0" - -"@vuepress/markdown-loader@1.9.7": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/markdown-loader/-/markdown-loader-1.9.7.tgz#acd4fa13f1e48f153d509996ccd2895a0dcb5ee2" - integrity sha512-mxXF8FtX/QhOg/UYbe4Pr1j5tcf/aOEI502rycTJ3WF2XAtOmewjkGV4eAA6f6JmuM/fwzOBMZKDyy9/yo2I6Q== - dependencies: - "@vuepress/markdown" "1.9.7" - loader-utils "^1.1.0" - lru-cache "^5.1.1" - -"@vuepress/markdown@1.9.7": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-1.9.7.tgz#6310458b7e2ea08a14d31349209d0b54455e957a" - integrity sha512-DFOjYkwV6fT3xXTGdTDloeIrT1AbwJ9pwefmrp0rMgC6zOz3XUJn6qqUwcYFO5mNBWpbiFQ3JZirCtgOe+xxBA== - dependencies: - "@vuepress/shared-utils" "1.9.7" - markdown-it "^8.4.1" - markdown-it-anchor "^5.0.2" - markdown-it-chain "^1.3.0" - markdown-it-emoji "^1.4.0" - markdown-it-table-of-contents "^0.4.0" - prismjs "^1.13.0" - -"@vuepress/plugin-active-header-links@1.9.7": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.9.7.tgz#11b3b148d50ebd0a9a9d9e97aa34d81ae04e7307" - integrity sha512-G1M8zuV9Og3z8WBiKkWrofG44NEXsHttc1MYreDXfeWh/NLjr9q1GPCEXtiCjrjnHZHB3cSQTKnTqAHDq35PGA== - dependencies: - "@vuepress/types" "1.9.7" - lodash.debounce "^4.0.8" - -"@vuepress/plugin-back-to-top@^1.5.0": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-back-to-top/-/plugin-back-to-top-1.9.7.tgz#249a76d79f1e0c8c71a2804485ad0245837e6bfd" - integrity sha512-DM1S+Q8Xn/i+zhe4zThekxb1M2abfKLklg/NKtQloklHKdNdVfk+EcxWYNmNfSii+ymDWaaG8lmH0xjVhy0iXw== - dependencies: - "@vuepress/types" "1.9.7" - lodash.debounce "^4.0.8" - -"@vuepress/plugin-last-updated@1.9.7": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-last-updated/-/plugin-last-updated-1.9.7.tgz#9f2d78fe7ced618d0480bf40a3e32b40486bac6d" - integrity sha512-FiFBOl49dlFRjbLRnRAv77HDWfe+S/eCPtMQobq4/O3QWuL3Na5P4fCTTVzq1K7rWNO9EPsWNB2Jb26ndlQLKQ== - dependencies: - "@vuepress/types" "1.9.7" - cross-spawn "^6.0.5" - -"@vuepress/plugin-nprogress@1.9.7": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-1.9.7.tgz#76d8368fa26c190ee23c399401a71ec78ffb9744" - integrity sha512-sI148igbdRfLgyzB8PdhbF51hNyCDYXsBn8bBWiHdzcHBx974sVNFKtfwdIZcSFsNrEcg6zo8YIrQ+CO5vlUhQ== - dependencies: - "@vuepress/types" "1.9.7" - nprogress "^0.2.0" - -"@vuepress/plugin-pwa@^1.5.0": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-pwa/-/plugin-pwa-1.9.7.tgz#2f73cac25dcebb526e7fc929865ed557f61f6373" - integrity sha512-E8It9+Gbxuorja28Fg/3MtG5JBhdQ4XkuX65uqKl86n2uOjx50Zqndt7MWOzy9bMKzaV7gQw07UbUOMVSgKT0w== - dependencies: - "@vuepress/shared-utils" "1.9.7" - "@vuepress/types" "1.9.7" - register-service-worker "^1.7.0" - workbox-build "^4.3.1" - -"@vuepress/plugin-register-components@1.9.7": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-1.9.7.tgz#0234f887b32c1d836fa68cdd06d7e851397fd268" - integrity sha512-l/w1nE7Dpl+LPMb8+AHSGGFYSP/t5j6H4/Wltwc2QcdzO7yqwC1YkwwhtTXvLvHOV8O7+rDg2nzvq355SFkfKA== - dependencies: - "@vuepress/shared-utils" "1.9.7" - "@vuepress/types" "1.9.7" - -"@vuepress/plugin-search@1.9.7": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-1.9.7.tgz#37a4714973ccac8c28837fc72a38ae0888d874bf" - integrity sha512-MLpbUVGLxaaHEwflFxvy0pF9gypFVUT3Q9Zc6maWE+0HDWAvzMxo6GBaj6mQPwjOqNQMf4QcN3hDzAZktA+DQg== - dependencies: - "@vuepress/types" "1.9.7" - -"@vuepress/shared-utils@1.9.7", "@vuepress/shared-utils@^1.2.0": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.9.7.tgz#f1203c7f48e9d546078f5f9b2ec5200b29da481b" - integrity sha512-lIkO/eSEspXgVHjYHa9vuhN7DuaYvkfX1+TTJDiEYXIwgwqtvkTv55C+IOdgswlt0C/OXDlJaUe1rGgJJ1+FTw== - dependencies: - chalk "^2.3.2" - escape-html "^1.0.3" - fs-extra "^7.0.1" - globby "^9.2.0" - gray-matter "^4.0.1" - hash-sum "^1.0.2" - semver "^6.0.0" - toml "^3.0.0" - upath "^1.1.0" - -"@vuepress/theme-default@1.9.7": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-1.9.7.tgz#9e928b724fdcb12715cc513fdbc27b965944c4a1" - integrity sha512-NZzCLIl+bgJIibhkqVmk/NSku57XIuXugxAN3uiJrCw6Mu6sb3xOvbk0En3k+vS2BKHxAZ6Cx7dbCiyknDQnSA== - dependencies: - "@vuepress/plugin-active-header-links" "1.9.7" - "@vuepress/plugin-nprogress" "1.9.7" - "@vuepress/plugin-search" "1.9.7" - "@vuepress/types" "1.9.7" - docsearch.js "^2.5.2" - lodash "^4.17.15" - stylus "^0.54.8" - stylus-loader "^3.0.2" - vuepress-plugin-container "^2.0.2" - vuepress-plugin-smooth-scroll "^0.0.3" - -"@vuepress/types@1.9.7": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@vuepress/types/-/types-1.9.7.tgz#aeb772fd0f7c2a10c6ec1d3c803a2e4b1d756c24" - integrity sha512-moLQzkX3ED2o18dimLemUm7UVDKxhcrJmGt5C0Ng3xxrLPaQu7UqbROtEKB3YnMRt4P/CA91J+Ck+b9LmGabog== - dependencies: - "@types/markdown-it" "^10.0.0" - "@types/webpack-dev-server" "^3" - webpack-chain "^6.0.0" - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -agentkeepalive@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-2.2.0.tgz#c5d1bd4b129008f1163f236f86e5faea2026e2ef" - integrity sha512-TnB6ziK363p7lR8QpeLC8aMr8EGYBKZTpgzQLfqTs3bR0Oo5VbKdwKf8h0dSzsYrB7lSCgfJnMZKqShvlq5Oyg== - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -algoliasearch@^3.24.5: - version "3.35.1" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-3.35.1.tgz#297d15f534a3507cab2f5dfb996019cac7568f0c" - integrity sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ== - dependencies: - agentkeepalive "^2.2.0" - debug "^2.6.9" - envify "^4.0.0" - es6-promise "^4.1.0" - events "^1.1.0" - foreach "^2.0.5" - global "^4.3.2" - inherits "^2.0.1" - isarray "^2.0.1" - load-script "^1.0.0" - object-keys "^1.0.11" - querystring-es3 "^0.2.1" - reduce "^1.0.1" - semver "^5.1.0" - tunnel-agent "^0.6.0" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ== - -ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-escapes@^4.1.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-html-community@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.0, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-union@^1.0.1, array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== - -array.prototype.reduce@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" - integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.4: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autocomplete.js@0.36.0: - version "0.36.0" - resolved "https://registry.yarnpkg.com/autocomplete.js/-/autocomplete.js-0.36.0.tgz#94fe775fe64b6cd42e622d076dc7fd26bedd837b" - integrity sha512-jEwUXnVMeCHHutUt10i/8ZiRaCb0Wo+ZyKxeGsYwBDtw6EJHqEeDrq4UwZRD8YBSvp3g6klP678il2eeiVXN2Q== - dependencies: - immediate "^3.2.3" - -autoprefixer@^9.5.1: - version "9.8.8" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" - integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - picocolors "^0.2.1" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -babel-extract-comments@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" - integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== - dependencies: - babylon "^6.18.0" - -babel-loader@^8.0.4: - version "8.3.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" - integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== - dependencies: - find-cache-dir "^3.3.1" - loader-utils "^2.0.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-polyfill-corejs2@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" - integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" - integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - core-js-compat "^3.25.1" - -babel-plugin-polyfill-regenerator@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" - integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w== - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - integrity sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA== - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.1.1, bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg== - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.21.3, browserslist@^4.21.4: - version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== - dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-json@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/buffer-json/-/buffer-json-2.0.0.tgz#f73e13b1e42f196fe2fd67d001c7d7107edd7c23" - integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== - -bundle-require@2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-2.1.8.tgz#28f6de9d4468a6b7b76fb5c9bf52e70f5091245d" - integrity sha512-oOEg3A0hy/YzvNWNowtKD0pmhZKseOFweCbgyMqTIih4gRY1nJWsvrOCT27L9NbIyL5jMjTFrAUpGxxpW68Puw== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cac@^6.5.6: - version "6.7.14" - resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" - integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== - -cacache@^12.0.2, cacache@^12.0.3: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cache-loader@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-3.0.1.tgz#cee6cf4b3cdc7c610905b26bad6c2fc439c821af" - integrity sha512-HzJIvGiGqYsFUrMjAJNDbVZoG7qQA+vy9AIoKs7s9DscNfki0I589mf2w6/tW+kkFH3zyiknoWV5Jdynu6b/zw== - dependencies: - buffer-json "^2.0.0" - find-cache-dir "^2.1.0" - loader-utils "^1.2.3" - mkdirp "^0.5.1" - neo-async "^2.6.1" - schema-utils "^1.0.0" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-me-maybe@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" - integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001400: - version "1.0.30001431" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz#e7c59bd1bc518fae03a4656be442ce6c4887a795" - integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chokidar@^2.0.3, chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.1.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.6.1.tgz#7594f1c95cb7fdfddee7af95a13af7dbc67afdcf" - integrity sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@4.2.x: - version "4.2.4" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" - integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== - dependencies: - source-map "~0.6.0" - -cli-boxes@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -common-tags@^1.8.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" - integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -connect-history-api-fallback@^1.5.0, connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -consola@^2.6.0: - version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -consolidate@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" - integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== - dependencies: - bluebird "^3.1.1" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - -copy-webpack-plugin@^5.0.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz#8a889e1dcafa6c91c6cd4be1ad158f1d3823bae2" - integrity sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ== - dependencies: - cacache "^12.0.3" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" - globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" - minimatch "^3.0.4" - normalize-path "^3.0.0" - p-limit "^2.2.1" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - webpack-log "^2.0.0" - -core-js-compat@^3.25.1, core-js-compat@^3.6.5: - version "3.26.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.1.tgz#0e710b09ebf689d719545ac36e49041850f943df" - integrity sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A== - dependencies: - browserslist "^4.21.4" - -core-js@^2.4.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-js@^3.6.4, core-js@^3.6.5: - version "3.26.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.1.tgz#7a9816dabd9ee846c1c0fe0e8fcad68f3709134e" - integrity sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q== - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-loader@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" - integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== - dependencies: - camelcase "^5.2.0" - icss-utils "^4.1.0" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.14" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^2.0.6" - postcss-modules-scope "^2.1.0" - postcss-modules-values "^2.0.0" - postcss-value-parser "^3.3.0" - schema-utils "^1.0.0" - -css-parse@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" - integrity sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA== - dependencies: - css "^2.0.0" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -css@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" - integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.3" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw== - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw== - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.11" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" - integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.8" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -csstype@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" - integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" - integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== - dependencies: - mimic-response "^1.0.0" - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deepmerge@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" - integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dijkstrajs@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz#2e48c0d3b825462afe75ab4ad5e829c8ece36257" - integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg== - -dir-glob@^2.0.0, dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== - -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ== - dependencies: - buffer-indexof "^1.0.0" - -docsearch.js@^2.5.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/docsearch.js/-/docsearch.js-2.6.3.tgz#57cb4600d3b6553c677e7cbbe6a734593e38625d" - integrity sha512-GN+MBozuyz664ycpZY0ecdQE0ND/LSgJKhTLA0/v3arIS3S1Rpf2OJz6A35ReMsm91V5apcmzr5/kM84cvUg+A== - dependencies: - algoliasearch "^3.24.5" - autocomplete.js "0.36.0" - hogan.js "^3.0.2" - request "^2.87.0" - stack-utils "^1.0.1" - to-factory "^1.0.0" - zepto "^1.2.0" - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.4.251: - version "1.4.284" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" - integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encode-utf8@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" - integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@~1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -envify@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/envify/-/envify-4.1.0.tgz#f39ad3db9d6801b4e6b478b61028d3f0b6819f7e" - integrity sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw== - dependencies: - esprima "^4.0.0" - through "~2.3.4" - -envinfo@^7.2.0: - version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.20.4" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" - integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.2" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" - unbox-primitive "^1.0.2" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-promise@^4.1.0: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -esbuild-android-arm64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.7.tgz#8c78cbb617f9f216abfb5a84cca453b51421a1b6" - integrity sha512-9/Q1NC4JErvsXzJKti0NHt+vzKjZOgPIjX/e6kkuCzgfT/GcO3FVBcGIv4HeJG7oMznE6KyKhvLrFgt7CdU2/w== - -esbuild-darwin-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.7.tgz#7424bdb64c104556d36b7429af79ab51415ab8f4" - integrity sha512-Z9X+3TT/Xj+JiZTVlwHj2P+8GoiSmUnGVz0YZTSt8WTbW3UKw5Pw2ucuJ8VzbD2FPy0jbIKJkko/6CMTQchShQ== - -esbuild-darwin-arm64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.7.tgz#6a243dc0132aeb11c1991f968a6a9e393f43c6bc" - integrity sha512-68e7COhmwIiLXBEyxUxZSSU0akgv8t3e50e2QOtKdBUE0F6KIRISzFntLe2rYlNqSsjGWsIO6CCc9tQxijjSkw== - -esbuild-freebsd-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.7.tgz#e7281e50522e724c4da502504dcd75be0db46c94" - integrity sha512-76zy5jAjPiXX/S3UvRgG85Bb0wy0zv/J2lel3KtHi4V7GUTBfhNUPt0E5bpSXJ6yMT7iThhnA5rOn+IJiUcslQ== - -esbuild-freebsd-arm64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.7.tgz#31e513098efd181d76a3ba3ea285836d37f018a3" - integrity sha512-lSlYNLiqyzd7qCN5CEOmLxn7MhnGHPcu5KuUYOG1i+t5A6q7LgBmfYC9ZHJBoYyow3u4CNu79AWHbvVLpE/VQQ== - -esbuild-linux-32@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.7.tgz#82cf96accbf55d3007c3338dc3b3144efa9ae108" - integrity sha512-Vk28u409wVOXqTaT6ek0TnfQG4Ty1aWWfiysIaIRERkNLhzLhUf4i+qJBN8mMuGTYOkE40F0Wkbp6m+IidOp2A== - -esbuild-linux-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.7.tgz#67bdfe23a6ca918a0bb8e9558a3ee0fdf98c0bc0" - integrity sha512-+Lvz6x+8OkRk3K2RtZwO+0a92jy9si9cUea5Zoru4yJ/6EQm9ENX5seZE0X9DTwk1dxJbjmLsJsd3IoowyzgVg== - -esbuild-linux-arm64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.7.tgz#f79c69ff0c176559c418de8e59aa3cf388fff992" - integrity sha512-kJd5beWSqteSAW086qzCEsH6uwpi7QRIpzYWHzEYwKKu9DiG1TwIBegQJmLpPsLp4v5RAFjea0JAmAtpGtRpqg== - -esbuild-linux-arm@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.7.tgz#3d665b35e1c27dbe1c9deb8bf956d7d1f191a21b" - integrity sha512-OzpXEBogbYdcBqE4uKynuSn5YSetCvK03Qv1HcOY1VN6HmReuatjJ21dCH+YPHSpMEF0afVCnNfffvsGEkxGJQ== - -esbuild-linux-mips64le@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.7.tgz#226114a0cc6649ba0ffd3428118a8f622872f16d" - integrity sha512-mFWpnDhZJmj/h7pxqn1GGDsKwRfqtV7fx6kTF5pr4PfXe8pIaTERpwcKkoCwZUkWAOmUEjMIUAvFM72A6hMZnA== - -esbuild-linux-ppc64le@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.7.tgz#5c67ae56517f2644d567b2ca5ecb97f9520cfc49" - integrity sha512-wM7f4M0bsQXfDL4JbbYD0wsr8cC8KaQ3RPWc/fV27KdErPW7YsqshZZSjDV0kbhzwpNNdhLItfbaRT8OE8OaKA== - -esbuild-netbsd-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.7.tgz#69dc0469ea089013956d8c6aa71c9e7fc25fc567" - integrity sha512-J/afS7woKyzGgAL5FlgvMyqgt5wQ597lgsT+xc2yJ9/7BIyezeXutXqfh05vszy2k3kSvhLesugsxIA71WsqBw== - -esbuild-openbsd-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.7.tgz#3a9d04ecf820708e2e5b7d26fa7332e3f19f6b6c" - integrity sha512-7CcxgdlCD+zAPyveKoznbgr3i0Wnh0L8BDGRCjE/5UGkm5P/NQko51tuIDaYof8zbmXjjl0OIt9lSo4W7I8mrw== - -esbuild-sunos-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.7.tgz#7c33a682f0fd9565cae7df165d0e8736b7b62623" - integrity sha512-GKCafP2j/KUljVC3nesw1wLFSZktb2FGCmoT1+730zIF5O6hNroo0bSEofm6ZK5mNPnLiSaiLyRB9YFgtkd5Xg== - -esbuild-windows-32@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.7.tgz#24ec706a5f25b4499048f56146bcff0ed3839dce" - integrity sha512-5I1GeL/gZoUUdTPA0ws54bpYdtyeA2t6MNISalsHpY269zK8Jia/AXB3ta/KcDHv2SvNwabpImeIPXC/k0YW6A== - -esbuild-windows-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.7.tgz#dd6d5b5bace93cd7a9174d31fbd727ba21885abf" - integrity sha512-CIGKCFpQOSlYsLMbxt8JjxxvVw9MlF1Rz2ABLVfFyHUF5OeqHD5fPhGrCVNaVrhO8Xrm+yFmtjcZudUGr5/WYQ== - -esbuild-windows-arm64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.7.tgz#ecfd9ac289606f26760c4f737caaeeadfff3cfe3" - integrity sha512-eOs1eSivOqN7cFiRIukEruWhaCf75V0N8P0zP7dh44LIhLl8y6/z++vv9qQVbkBm5/D7M7LfCfCTmt1f1wHOCw== - -esbuild@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.7.tgz#e85cead55b0e1001abf1b2ce4a11c1d4d709d13c" - integrity sha512-+u/msd6iu+HvfysUPkZ9VHm83LImmSNnecYPfFI01pQ7TTcsFR+V0BkybZX7mPtIaI7LCrse6YRj+v3eraJSgw== - optionalDependencies: - esbuild-android-arm64 "0.14.7" - esbuild-darwin-64 "0.14.7" - esbuild-darwin-arm64 "0.14.7" - esbuild-freebsd-64 "0.14.7" - esbuild-freebsd-arm64 "0.14.7" - esbuild-linux-32 "0.14.7" - esbuild-linux-64 "0.14.7" - esbuild-linux-arm "0.14.7" - esbuild-linux-arm64 "0.14.7" - esbuild-linux-mips64le "0.14.7" - esbuild-linux-ppc64le "0.14.7" - esbuild-netbsd-64 "0.14.7" - esbuild-openbsd-64 "0.14.7" - esbuild-sunos-64 "0.14.7" - esbuild-windows-32 "0.14.7" - esbuild-windows-64 "0.14.7" - esbuild-windows-arm64 "0.14.7" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - -escape-html@^1.0.3, escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esrecurse@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== - -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -eventsource@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-2.0.2.tgz#76dfcc02930fb2ff339520b6d290da573a9e8508" - integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -express@^4.17.1: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.1" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -faye-websocket@^0.11.3, faye-websocket@^0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-loader@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" - integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== - dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - -foreach@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" - integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functions-have-names@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== - -glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" - integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== - dependencies: - ini "1.3.7" - -global@^4.3.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g== - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -gray-matter@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" - integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== - dependencies: - js-yaml "^3.13.1" - kind-of "^6.0.2" - section-matter "^1.0.0" - strip-bom-string "^1.0.0" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -has@^1.0.0, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA== - -hash-sum@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" - integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.x, he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -highlight.js@^9.7.0: - version "9.18.5" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" - integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hogan.js@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/hogan.js/-/hogan.js-3.0.2.tgz#4cd9e1abd4294146e7679e41d7898732b02c7bfd" - integrity sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg== - dependencies: - mkdirp "0.3.0" - nopt "1.0.10" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A== - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA== - -html-entities@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" - integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== - -html-minifier@^3.2.3: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - -html-tags@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" - integrity sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g== - -html-tags@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" - integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.5.1: - version "0.5.8" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" - integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy-middleware@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz#43700d6d9eecb7419bf086a128d0f7205d9eb665" - integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg== - dependencies: - "@types/http-proxy" "^1.17.5" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.17.0, http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg== - -icss-utils@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.3: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -immediate@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" - integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg== - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w== - dependencies: - resolve-from "^3.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== - -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -ini@1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== - -ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== - -ip@^1.1.0, ip@^1.1.5: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg== - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA== - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" - integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-path-inside@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4, is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isarray@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - -javascript-stringify@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" - integrity sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ== - -javascript-stringify@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" - integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - -latest-version@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -linkify-it@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" - integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== - dependencies: - uc.micro "^1.0.1" - -load-script@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/load-script/-/load-script-1.0.0.tgz#0491939e0bee5643ee494a7e3da3d2bac70c6ca4" - integrity sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA== - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug== - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: - version "1.4.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" - integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -loader-utils@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== - -lodash.chunk@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" - integrity sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w== - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.padstart@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - integrity sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw== - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== - -lodash.template@^4.4.0, lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.5: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loglevel@^1.6.8: - version "1.8.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.1.tgz#5c621f83d5b48c54ae93b6156353f555963377b4" - integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^4.1.2: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - -markdown-it-anchor@^5.0.2: - version "5.3.0" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz#d549acd64856a8ecd1bea58365ef385effbac744" - integrity sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA== - -markdown-it-chain@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/markdown-it-chain/-/markdown-it-chain-1.3.0.tgz#ccf6fe86c10266bafb4e547380dfd7f277cc17bc" - integrity sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ== - dependencies: - webpack-chain "^4.9.0" - -markdown-it-container@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/markdown-it-container/-/markdown-it-container-2.0.0.tgz#0019b43fd02eefece2f1960a2895fba81a404695" - integrity sha512-IxPOaq2LzrGuFGyYq80zaorXReh2ZHGFOB1/Hen429EJL1XkPI3FJTpx9TsJeua+j2qTru4h3W1TiCRdeivMmA== - -markdown-it-emoji@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz#9bee0e9a990a963ba96df6980c4fddb05dfb4dcc" - integrity sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg== - -markdown-it-table-of-contents@^0.4.0: - version "0.4.4" - resolved "https://registry.yarnpkg.com/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz#3dc7ce8b8fc17e5981c77cc398d1782319f37fbc" - integrity sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw== - -markdown-it@^8.4.1: - version "8.4.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" - integrity sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ== - dependencies: - argparse "^1.0.7" - entities "~1.1.1" - linkify-it "^2.0.0" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - -merge2@^1.2.3: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.0.3, mime@^2.4.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== - dependencies: - dom-walk "^0.1.0" - -mini-css-extract-plugin@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz#a3f13372d6fcde912f3ee4cd039665704801e3b9" - integrity sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw== - dependencies: - loader-utils "^1.1.0" - normalize-url "^2.0.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@^3.0.4, minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" - integrity sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew== - -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.6, mkdirp@~0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ== - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -nan@^2.12.1: - version "2.17.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== - -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - -nopt@1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== - dependencies: - abbrev "1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -normalize-url@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" - integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== - dependencies: - prepend-http "^2.0.0" - query-string "^5.0.1" - sort-keys "^2.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - -nprogress@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" - integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== - -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.12.2, object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.0.11, object-keys@^1.1.0, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.5" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3" - integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== - dependencies: - array.prototype.reduce "^1.0.5" - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -opencollective-postinstall@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" - integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optimize-css-assets-webpack-plugin@^5.0.1: - version "5.0.8" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz#cbccdcf5a6ef61d4f8cc78cf083a67446e5f402a" - integrity sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q== - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== - dependencies: - no-case "^2.2.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pngjs@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" - integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== - -portfinder@^1.0.13, portfinder@^1.0.26: - version "1.0.32" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" - integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== - dependencies: - async "^2.6.4" - debug "^3.2.7" - mkdirp "^0.5.6" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" - integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" - integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - postcss-value-parser "^3.3.1" - -postcss-modules-scope@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" - integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^7.0.6" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-safe-parser@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" - integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== - dependencies: - postcss "^7.0.26" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" - integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.36, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.4.14: - version "8.4.19" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc" - integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== - -"prettier@^1.18.2 || ^2.0.0": - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== - -pretty-bytes@^5.1.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-error@^2.0.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" - integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== - dependencies: - lodash "^4.17.20" - renderkid "^2.0.4" - -pretty-time@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" - integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== - -prismjs@^1.13.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" - integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - -psl@^1.1.28: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== - -qrcode@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.1.tgz#0103f97317409f7bc91772ef30793a54cd59f0cb" - integrity sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg== - dependencies: - dijkstrajs "^1.0.1" - encode-utf8 "^1.0.3" - pngjs "^5.0.0" - yargs "^15.3.1" - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0, querystring-es3@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@1.2.8, rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -reduce@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/reduce/-/reduce-1.0.2.tgz#0cd680ad3ffe0b060e57a5c68bdfce37168d361b" - integrity sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ== - dependencies: - object-keys "^1.1.0" - -regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.10: - version "0.13.10" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" - integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== - -regenerator-transform@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" - integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpu-core@^5.1.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.2.tgz#3e4e5d12103b64748711c3aad69934d7718e75fc" - integrity sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsgen "^0.7.1" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -register-service-worker@^1.7.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/register-service-worker/-/register-service-worker-1.7.2.tgz#6516983e1ef790a98c4225af1216bc80941a4bd2" - integrity sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A== - -registry-auth-token@^4.0.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.2.tgz#f02d49c3668884612ca031419491a13539e21fac" - integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== - dependencies: - rc "1.2.8" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - -regjsgen@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6" - integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== - -renderkid@^2.0.4: - version "2.0.7" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" - integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^3.0.1" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - -request@^2.87.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg== - dependencies: - resolve-from "^3.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - -resolve@^1.14.2, resolve@^1.22.0: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== - dependencies: - lowercase-keys "^1.0.0" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w== - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg== - -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== - dependencies: - aproba "^1.1.1" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -section-matter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" - integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== - dependencies: - extend-shallow "^2.0.1" - kind-of "^6.0.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - -selfsigned@^1.10.8: - version "1.10.14" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.14.tgz#ee51d84d9dcecc61e07e4aba34f229ab525c1574" - integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA== - dependencies: - node-forge "^0.10.0" - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -semver@^5.1.0, semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -sitemap@^3.0.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-3.2.2.tgz#3f77c358fa97b555c879e457098e39910095c62b" - integrity sha512-TModL/WU4m2q/mQcrDgNANn0P4LwprM9MMvG4hu5zP4c6IIKs2YLTu6nXXnNr8ODW/WFtxKggiJ1EGn2W0GNmg== - dependencies: - lodash.chunk "^4.2.0" - lodash.padstart "^4.6.1" - whatwg-url "^7.0.0" - xmlbuilder "^13.0.0" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -smoothscroll-polyfill@^0.4.3: - version "0.4.4" - resolved "https://registry.yarnpkg.com/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz#3a259131dc6930e6ca80003e1cb03b603b69abf8" - integrity sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@^1.5.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.6.1.tgz#350b8eda42d6d52ddc030c39943364c11dcad806" - integrity sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw== - dependencies: - debug "^3.2.7" - eventsource "^2.0.2" - faye-websocket "^0.11.4" - inherits "^2.0.4" - url-parse "^1.5.10" - -sockjs@^0.3.21: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" - integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== - dependencies: - escape-string-regexp "^2.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -std-env@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.3.1.tgz#d42271908819c243f8defc77a140fc1fcee336a1" - integrity sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g== - dependencies: - ci-info "^3.1.1" - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.trimend@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimstart@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" - integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== - -strip-comments@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" - integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== - dependencies: - babel-extract-comments "^1.0.0" - babel-plugin-transform-object-rest-spread "^6.26.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -stylus-loader@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6" - integrity sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA== - dependencies: - loader-utils "^1.0.2" - lodash.clonedeep "^4.5.0" - when "~3.6.x" - -stylus@^0.54.8: - version "0.54.8" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.8.tgz#3da3e65966bc567a7b044bfe0eece653e099d147" - integrity sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg== - dependencies: - css-parse "~2.0.0" - debug "~3.1.0" - glob "^7.1.6" - mkdirp "~1.0.4" - safer-buffer "^2.1.2" - sax "~1.2.4" - semver "^6.3.0" - source-map "^0.7.3" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -svg-tags@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" - integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== - -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -term-size@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2: - version "4.8.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" - integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@~2.3.4: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== - -to-factory@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-factory/-/to-factory-1.0.0.tgz#8738af8bd97120ad1d4047972ada5563bf9479b1" - integrity sha512-JVYrY42wMG7ddf+wBUQR/uHGbjUHZbLisJ8N62AMm0iTZ0p8YTcZLzdtomU0+H+wa99VbkyvQGB3zxB7NDzgIQ== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -toml@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" - integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== - -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg== - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== - dependencies: - punycode "^2.1.0" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== - -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ== - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.0, upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -update-browserslist-db@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -update-notifier@^4.0.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" - integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== - dependencies: - boxen "^4.2.0" - chalk "^3.0.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -url-loader@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" - integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== - dependencies: - loader-utils "^1.1.0" - mime "^2.0.3" - schema-utils "^1.0.0" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== - dependencies: - prepend-http "^2.0.0" - -url-parse@^1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -vue-hot-reload-api@^2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" - integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== - -vue-loader@^15.7.1: - version "15.10.1" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.10.1.tgz#c451c4cd05a911aae7b5dbbbc09fb913fb3cca18" - integrity sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA== - dependencies: - "@vue/component-compiler-utils" "^3.1.0" - hash-sum "^1.0.2" - loader-utils "^1.1.0" - vue-hot-reload-api "^2.3.0" - vue-style-loader "^4.1.0" - -vue-router@^3.4.5: - version "3.6.5" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.6.5.tgz#95847d52b9a7e3f1361cb605c8e6441f202afad8" - integrity sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ== - -vue-server-renderer@^2.6.10: - version "2.7.14" - resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.7.14.tgz#986f3fdca63fbb38bb6834698f11e0d6a81f182f" - integrity sha512-NlGFn24tnUrj7Sqb8njhIhWREuCJcM3140aMunLNcx951BHG8j3XOrPP7psSCaFA8z6L4IWEjudztdwTp1CBVw== - dependencies: - chalk "^4.1.2" - hash-sum "^2.0.0" - he "^1.2.0" - lodash.template "^4.5.0" - lodash.uniq "^4.5.0" - resolve "^1.22.0" - serialize-javascript "^6.0.0" - source-map "0.5.6" - -vue-style-loader@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35" - integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== - dependencies: - hash-sum "^1.0.2" - loader-utils "^1.0.2" - -vue-template-compiler@^2.6.10: - version "2.7.14" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz#4545b7dfb88090744c1577ae5ac3f964e61634b1" - integrity sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ== - dependencies: - de-indent "^1.0.2" - he "^1.2.0" - -vue-template-es2015-compiler@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" - integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== - -vue@^2.6.10: - version "2.7.14" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.7.14.tgz#3743dcd248fd3a34d421ae456b864a0246bafb17" - integrity sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ== - dependencies: - "@vue/compiler-sfc" "2.7.14" - csstype "^3.1.0" - -vuepress-html-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/vuepress-html-webpack-plugin/-/vuepress-html-webpack-plugin-3.2.0.tgz#219be272ad510faa8750d2d4e70fd028bfd1c16e" - integrity sha512-BebAEl1BmWlro3+VyDhIOCY6Gef2MCBllEVAP3NUAtMguiyOwo/dClbwJ167WYmcxHJKLl7b0Chr9H7fpn1d0A== - dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" - util.promisify "1.0.0" - -vuepress-plugin-canonical@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/vuepress-plugin-canonical/-/vuepress-plugin-canonical-1.0.0.tgz#a8f69b8479da86d215a6a87bdea815caa564a298" - integrity sha512-R2mcc+bp9VbKBQ3YIbCqUbWcWfmWSp1NIEyNGiLKkrcZmyUF/+0D48BqMCTx61AgJzWPW5DJzB6VkmpjbMIDbA== - -vuepress-plugin-container@^2.0.2: - version "2.1.5" - resolved "https://registry.yarnpkg.com/vuepress-plugin-container/-/vuepress-plugin-container-2.1.5.tgz#37fff05662fedbd63ffd3a5463b2592c7a7f3133" - integrity sha512-TQrDX/v+WHOihj3jpilVnjXu9RcTm6m8tzljNJwYhxnJUW0WWQ0hFLcDTqTBwgKIFdEiSxVOmYE+bJX/sq46MA== - dependencies: - "@vuepress/shared-utils" "^1.2.0" - markdown-it-container "^2.0.0" - -vuepress-plugin-minimal-analytics@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/vuepress-plugin-minimal-analytics/-/vuepress-plugin-minimal-analytics-0.1.4.tgz#c6bcfc33330c65c669111df625b63a3b585fc254" - integrity sha512-f+Y4FYiafmxrhwQjaMeu6CFZo0BrKetMpF3X/wLMK7Sp5n7dWk0s8pBowgY82jgWZmn63PjYeaX+MTJhCqnmRg== - -vuepress-plugin-seo@^0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/vuepress-plugin-seo/-/vuepress-plugin-seo-0.1.4.tgz#be8e5577491c1fc317a7ad4abe3ae51ff317be1e" - integrity sha512-foNKrAAKihiC47bx0UXFzs/+BIFmnowTQsLVF/8pfsnsPDp8FXjkTGyjxyjOhbwj7ADPv32CdX3pEoYGnZ7OjA== - -vuepress-plugin-sitemap@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/vuepress-plugin-sitemap/-/vuepress-plugin-sitemap-2.3.1.tgz#51298aca77a5de96396fdbd1103e1637dd61ae6a" - integrity sha512-n+8lbukhrKrsI9H/EX0EBgkE1pn85LAQFvQ5dIvrZP4Kz6JxPOPPNTQmZMhahQV1tXbLZQCEN7A1WZH4x+arJQ== - dependencies: - sitemap "^3.0.0" - -vuepress-plugin-smooth-scroll@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/vuepress-plugin-smooth-scroll/-/vuepress-plugin-smooth-scroll-0.0.3.tgz#6eff2d4c186cca917cc9f7df2b0af7de7c8c6438" - integrity sha512-qsQkDftLVFLe8BiviIHaLV0Ea38YLZKKonDGsNQy1IE0wllFpFIEldWD8frWZtDFdx6b/O3KDMgVQ0qp5NjJCg== - dependencies: - smoothscroll-polyfill "^0.4.3" - -vuepress-plugin-social-share@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/vuepress-plugin-social-share/-/vuepress-plugin-social-share-1.2.1.tgz#1420ee483b101fab4395024f7edf54d69744e95f" - integrity sha512-/DgJMrUcC+Mdalr519BUMviA233+QN+Lwvj1r0vNXYF7pLrEQR+By65JwtluqqYwpDpWU/jJOJ+F5f/va7WuUA== - dependencies: - deepmerge "^4.2.2" - qrcode "^1.5.0" - -vuepress-plugin-umami@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vuepress-plugin-umami/-/vuepress-plugin-umami-0.0.4.tgz#16c53e280316668f4eea35851635e3339eb72f04" - integrity sha512-K4gONXBYpUZl/KtbPVS+XOgpM3VJUWVlRqua5PibV+D2yR7lbpm1DrnTuNp/O1eg2SrkmO97Id3/7+8RwJ5SjQ== - -vuepress-plugin-web-monetization@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/vuepress-plugin-web-monetization/-/vuepress-plugin-web-monetization-0.0.1.tgz#986a514a28c1efce66ec9c680a9d2aae407c49ed" - integrity sha512-xZzwXPkSY4zzHa7LogvUG+Dpgn9FCCk2vxJyFjmoHNDT+43fZZZmzuQX3LtO9wYBR7W5hR3PPM2TdYSmYR1yCA== - -vuepress@^1.4.1: - version "1.9.7" - resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.9.7.tgz#2cd6709a2228f5cef588115aaeabf820ab9ed7cc" - integrity sha512-aSXpoJBGhgjaWUsT1Zs/ZO8JdDWWsxZRlVme/E7QYpn+ZB9iunSgPMozJQNFaHzcRq4kPx5A4k9UhzLRcvtdMg== - dependencies: - "@vuepress/core" "1.9.7" - "@vuepress/theme-default" "1.9.7" - "@vuepress/types" "1.9.7" - cac "^6.5.6" - envinfo "^7.2.0" - opencollective-postinstall "^2.0.2" - update-notifier "^4.0.0" - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webpack-chain@^4.9.0: - version "4.12.1" - resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-4.12.1.tgz#6c8439bbb2ab550952d60e1ea9319141906c02a6" - integrity sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ== - dependencies: - deepmerge "^1.5.2" - javascript-stringify "^1.6.0" - -webpack-chain@^6.0.0: - version "6.5.1" - resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-6.5.1.tgz#4f27284cbbb637e3c8fbdef43eef588d4d861206" - integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA== - dependencies: - deepmerge "^1.5.2" - javascript-stringify "^2.0.1" - -webpack-dev-middleware@^3.7.2: - version "3.7.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" - integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@^3.5.1: - version "3.11.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz#8c86b9d2812bf135d3c9bce6f07b718e30f7c3d3" - integrity sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA== - dependencies: - ansi-html-community "0.0.8" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.8" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "^0.3.21" - sockjs-client "^1.5.0" - spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-merge@^4.1.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.8.1: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -webpackbar@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-3.2.0.tgz#bdaad103fad11a4e612500e72aaae98b08ba493f" - integrity sha512-PC4o+1c8gWWileUfwabe0gqptlXUDJd5E0zbpr2xHP1VSOVlZVPBZ8j6NCR8zM5zbKdxPhctHXahgpNK1qFDPw== - dependencies: - ansi-escapes "^4.1.0" - chalk "^2.4.1" - consola "^2.6.0" - figures "^3.0.0" - pretty-time "^1.1.0" - std-env "^2.2.1" - text-table "^0.2.0" - wrap-ansi "^5.1.0" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -when@~3.6.x: - version "3.6.4" - resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" - integrity sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q== - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -workbox-background-sync@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" - integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== - dependencies: - workbox-core "^4.3.1" - -workbox-broadcast-update@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" - integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== - dependencies: - workbox-core "^4.3.1" - -workbox-build@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" - integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== - dependencies: - "@babel/runtime" "^7.3.4" - "@hapi/joi" "^15.0.0" - common-tags "^1.8.0" - fs-extra "^4.0.2" - glob "^7.1.3" - lodash.template "^4.4.0" - pretty-bytes "^5.1.0" - stringify-object "^3.3.0" - strip-comments "^1.0.2" - workbox-background-sync "^4.3.1" - workbox-broadcast-update "^4.3.1" - workbox-cacheable-response "^4.3.1" - workbox-core "^4.3.1" - workbox-expiration "^4.3.1" - workbox-google-analytics "^4.3.1" - workbox-navigation-preload "^4.3.1" - workbox-precaching "^4.3.1" - workbox-range-requests "^4.3.1" - workbox-routing "^4.3.1" - workbox-strategies "^4.3.1" - workbox-streams "^4.3.1" - workbox-sw "^4.3.1" - workbox-window "^4.3.1" - -workbox-cacheable-response@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" - integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== - dependencies: - workbox-core "^4.3.1" - -workbox-core@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" - integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== - -workbox-expiration@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" - integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== - dependencies: - workbox-core "^4.3.1" - -workbox-google-analytics@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" - integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== - dependencies: - workbox-background-sync "^4.3.1" - workbox-core "^4.3.1" - workbox-routing "^4.3.1" - workbox-strategies "^4.3.1" - -workbox-navigation-preload@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" - integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== - dependencies: - workbox-core "^4.3.1" - -workbox-precaching@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" - integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== - dependencies: - workbox-core "^4.3.1" - -workbox-range-requests@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" - integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== - dependencies: - workbox-core "^4.3.1" - -workbox-routing@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" - integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== - dependencies: - workbox-core "^4.3.1" - -workbox-strategies@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" - integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== - dependencies: - workbox-core "^4.3.1" - -workbox-streams@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" - integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== - dependencies: - workbox-core "^4.3.1" - -workbox-sw@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" - integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== - -workbox-window@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" - integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== - dependencies: - workbox-core "^4.3.1" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -xmlbuilder@^13.0.0: - version "13.0.2" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-13.0.2.tgz#02ae33614b6a047d1c32b5389c1fdacb2bce47a7" - integrity sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ== - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -zepto@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/zepto/-/zepto-1.2.0.tgz#e127bd9e66fd846be5eab48c1394882f7c0e4f98" - integrity sha512-C1x6lfvBICFTQIMgbt3JqMOno3VOtkWat/xEakLTOurskYIHPmzJrzd1e8BnmtdDVJlGuk5D+FxyCA8MPmkIyA==